Bonjour high4life,
Effectivement, ce n'est pas évident au premier abord de comprendre la différence entre ces deux types de liens. Elle est pourtant fondamentale et essentielle.
Lien identifiant ("identifying") entre A et B : l'ensemble d'attributs objet du lien est la clé primaire de A et fait partie de la clé primaire de B.
Lien non identifiant ("non identifying") entre A et B : l'ensemble d'attributs objet du lien est la clé primairede A et ne fait pas partie de la clé primaire de B. (= clé étrangère dans B)
Illustration avec ton MCD.
1. L'association contient:
[ EB ]--1,1----(contient)----1,n--[ Sauvegarde ]
donne :
[ EB ]>|- - - - - - - - - -||-[ Sauvegarde ]
C'est un lien non identifiant. La clé primaire de Sauvegarde se retrouve en tant que clé étrangère dans EB mais ne fait pas partie de la clé primaire de EB.
2. L'association "composé" :
[ EB ]--1,n----(composé)----1,n--[ Machine ]
donne :
[ EB ]-||----------|<[ composé ]>|----------||-[ Machine ]
Ce sont deux liens identifiants. La clé primaire de EB se retrouve en tant que partie de la clé primaire de "composé". De la même manière, la clé primaire de Machine se retrouve en tant que partie de la clé primaire de "composé".
En effet, la clé primaire de "composé" est constituée de l'ensemble {EB_ID, Machine_ID} qui sont respectivement les clés primaires de EB et Machine. Donc EB_ID est une partie de la clé de "composé" et Machine_ID en est l'autre partie.
Partager