Logo de kxs.frCours d'informatique pour le lycée et la prépa

Clé primaire, clé étrangère

Clé primaire

Nous avons souvent utilisé le champ id_citation de la table citations dans les exemples précédents. Il nous a servi à selectionner une ligne sans équivoque : c'est parce qu'il est unique pour chaque ligne. C'est ce qu'on appelle une clé primaire : elle identifie un enregistrement de façon unique. Nous verrons comment s'assurer de son unicité dans la partie suivante.

1) La table films possède également une clé primaire comment s'appelle-t-elle ?

id_film

Clé étrangère

2) La table citations possède un attribut id_film qui ressemble à une clé primaire. Pourquoi ne peut elle pas être une clé primaire ?

Elle n'est pas unique. Il a plusieurs fois 2 et 7.

C'est ce qu'on appelle une clé étrangère car elle correspond à la clé primaire d'une autre table. Ici elle correspond à la clé primaire de la table films. Elle permet de faire le lien entre deux enregistrements de la base de données et surtout d'éviter d'écrire les informations d'un film (titre, année) à plusieurs endroits.

Par exemple si un film possédait plusiquers centaines de citations on aurait la même information recopiée des centaines de fois. Ainsi, l'utilisation de deux tables liées par un clé étrangère permet de limiter la redondance dans une base de donnée.

3) Pour garder la cohérence de la base de données, proposez une requête pour ajouter le film de votre citation à la table films. Faites bien attention à la valeur de l'id_film.

INSERT INTO films VALUES (12, 'Nos jours heureux', 2006);

4) Proposez et testez enfin une requête pour modifier l'id_film de votre citation dans la table citations.

UPDATE citations SET id_film = 12 WHERE id_citation = 16;

Schéma relationnel

Il est courant de représenter les tables d'une base de données par un schéma relationnel comme celui ci-dessous :

Exemple de schéma relationnel

Ce schema reprend les noms des tables et leurs attributs. Les clés primaires sont mises en valeur et on les relie aux clés étrangères des autres tables. On indique sur ces liens la cardinalité de la relation avec le chiffre « 1 » pour dire « un » ou la lettre « n » pour dire « plusieurs ». La cardinalité représente les possibilités de relation entre les tables. Ainsi sur le schéma ci-dessus on peut comprendre qu'un film peut être associé à plusieurs citations mais pas l'inverse (une citation vient a priori d'un seul film).

C'est pour cela que l'on parle de base de données relationnelle

Nous allons voir dans la partie suivante comment utiliser ces relations dans les requêtes.