https://en.wikipedia.org/wiki/Primary_key
Une clé primaire est un ensemble minimal d'attibuts qui permet d'identifier de manière unique un tupel.
Une clé natuelle est une colonne existante qui permet d'identifier de manière unique chaque tuple.
Exemple :
Une clée fabriquée spécifiquement pour identifier chaque tuple (séquence, timesatamp …) est appelée clé technique ou surrogate key.
Elle est particulièrement utilisée dans le cas où une clé natuelle nécessiterait trop de colonnes.
“L'absence de FOREIGN KEYs dans une base de données apporte de multiples préjudices que nous venons d'énumérer. Le fait que la structure de la base, comme le code applicatif, ne sont pas de votre oeuvre, ne peut en aucun cas justifier l'absence de professionalisme. Par conséquent, le préjudice subit par l'absence de ces FOREIGN KEYs peut donc être condamné devant les tribunaux. En effet, les principes généraux du droit sont la Loi, mais aussi les usages (us et coutumes) et la jurisprudence.” Cf. https://sqlpro.developpez.com/article/fk-sql-vs-appli/
“L´intégrité référentielle est une situation dans laquelle pour chaque information d'une table A qui fait référence à une information d'une table B, l'information référencée existe dans la table B. L'intégrité référentielle est un gage de cohérence du contenu de la base de données.” [Cf. Wikipedia]
Les foreign keys permettent au SGBD de maintenir l'intégrité référentielle d'une base de données.