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 ?
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 ?
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.
4) Proposez et testez enfin une requête pour modifier l'id_film de votre citation dans la table citations.
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 :
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.