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 tableoeuvre
avec 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,livre
etpersonne
:
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 :
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_scene
etcode_postal
:
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 tablePersonne
contient les attributsdate_naissance
etdate_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 entre
Oeuvre
etSocieteDeProduction
. 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.
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
:
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
:
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.
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 !