• 8 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 01/08/2022

Créez du lien entre vos tables avec les clés étrangères

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Dans ce chapitre, vous verrez comment modéliser les associations que vous avez déterminées dans le diagramme UML. C’est-à-dire comment associer une ligne d’une table (ex. :oeuvre) à une ligne d’une autre table (ex. :societe_de_production).

Lorsque vous avez dessiné votre diagramme UML, vous aviez défini les associations entre classes. Par exemple : une œuvre est produite par une (et une seule) société de production.

C’est un bon début. Mais maintenant, il faut être plus précis : il faut savoir quel film est produit par quelle société. Autrement dit, il faut relier chaque ligne de la tableoeuvreavec les lignes de   societe_de_production.

Découvrez l’utilité des clés étrangères

La modélisation relationnelle permet cela, grâce au concept de clé étrangère.

Une clé étrangère, c’est un attribut (ou groupe d'attributs) d’une table qui fait référence à la clé primaire d’une autre table, afin de modéliser le lien entre les lignes de ces deux tables.

Voici ce que cela donnerait si vous modélisiez le lien entre deux tables,livreetpersonne :

La clé étrangère est auteur_ice. Qui référence, la clé primaire Id
La table « livre » est liée à la table « personne » grâce à la clé étrangère

Les attributs qui constituent une clé étrangère sont désignés par le signe « FK », pour « Foreign Key ». Graphiquement, on représente une clé étrangère par un trait en pointillés entre les deux tables, comme ceci :

Représentation graphique de la clé étrangère entre les tables
Représentation graphique de la clé étrangère entre les tables « livre » et « personne »

Ici, la clé étrangère n’est composée que d’un attribut (auteur_ice) car la clé primaire de   personne ne contient qu’un attribut (id). Mais si la clé primaire contient deux attributs, comme pour votre tablelieu, alors il faudrait une clé étrangère à deux attributs, que l’on pourrait appeler par exempleloc_sceneetcode_postal    :

Représentation en tableau des tables lieu et tournage avec leurs clés primaires et étrangères
Représentation en tableau des tables « lieu » et « tournage », avec les clés primaires [PK] et étrangères [FK] spécifiées

Cardinalités minimales et valeurs nulles

Qu’est-ce qu’une valeur nulle ?

Le modèle relationnel met à disposition une valeur bien pratique : la valeur nulle, notéenull. Cette valeur est équivalente à une case vide dans un tableau, lorsqu'une information est manquante ou inexistante.

Par exemple, si une tablePersonnecontient les attributsdate_naissanceetdate_deces  , alors on pourrait contraindre l’attributdate_naissanceà n’être jamais  null  si on veut que la date de naissance soit obligatoirement renseignée pour chaque personne. C’est la contrainte de non-nullité. Par contre, la date de décès sera nulle pour les individus étant encore en vie.

Comprenez l’utilité des valeurs nulles dans les clés étrangères en fonction de la cardinalité minimale

Quand on transforme des associations UML en clés étrangères, la contrainte de non-nullité est utile lorsque la cardinalité minimale est 1 (et non pas 0).

Prenez l’exemple de la composition entreOeuvreetSocieteDeProduction. Elle est de type un-à-plusieurs, car du côté deSocieteDeProduction, la multiplicité est1 . Cela signifie qu’une œuvre a forcément une et une seule société de production.

Le diagramme UML représentant la composition par un losange noir, entre oeuvre et DSocieteDeProduction
Le diagramme UML montrant la composition entre "Oeuvre" et « SocieteDeProduction »

Cette association se traduit par une clé étrangère dansoeuvre. Cette clé étrangère contient une seule colonne :societe_prod, et elle référence la clé primairenom de   societe_de_production :

Clé étrangère societe_prod référençant la clé primaire societe_production
Clé étrangère « societe_prod » référençant la clé primaire de « societe_de_production »

Si la cardinalité minimale était de 0, on aurait pu avoir une œuvre sans société de production. Cela se serait traduit par une valeur nulle dans la colonnesociete_prod:

La table oeuvre, a en dernière ligne, les informations pour type_de_tournage, titre et societe_de_production :  Long métrage, Le film orphelin, NULL.
Sans la contrainte de non-nullité

Or ici, la cardinalité minimale est de 1, ce qui signifie qu’il faut absolument quesociete_prod  soit remplie pour toutes les lignes, et qu’il ne peut donc pas y avoir de valeurs nulles.

La table oeuvre, a en dernière ligne, les informations pour type_de_tournage, titre et societe_de_production :  Long métrage, Le film orphelin, NULL. Cette ligne est écrite en rouge et il est précisé à côté, que c'est interdit.
Avec la contrainte de non-nullité sur la colonne « societe_prod »

En résumé

  • Une clé étrangère est un groupe de colonnes d’une table qui fait référence à la clé primaire d’une autre table, afin de modéliser le lien entre les lignes de ces deux tables.

  • Une clé étrangère peut être composée d'une ou plusieurs colonnes.

  • Dans une table, une absence de valeur est modélisée par une valeur nulle.

  • Les valeurs nulles peuvent être utilisées dans une clé étrangère pour spécifier qu'une ligne d'une table A n'est liée à aucune ligne d'une table B.

Voilà ! Dans le chapitre suivant, vous apprendrez à utiliser les concepts de clés primaires et étrangères pour traduire tous les types d’associations que vous avez définis dans votre UML !

Exemple de certificat de réussite
Exemple de certificat de réussite