P/F key

Primary key

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.

PostgreSql (et probablement tous les autres moteurs) crée automatiquement un index pour la clé primaire.

natural key

Une clé natuelle est une colonne existante qui permet d'identifier de manière unique chaque tuple.

Exemple :

surrogate key

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.

Foreign key

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/

Un attribut est une clé étrangère (Foreign key) s'il définit une référence vers un attribut qui est soit unique, soit une clé primaire d'une autre table.

“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.

Aller plus loin

Foreign keys PostreSQL

Constraints PostgreSQL