MYSQL : Différence relation identifée et non-identifiée

Le partage, c’est bien quand c’est utile :

Une relation entre deux tables peut être de type identifié ou non, mais quand cela arrive t’il ? Qu’elle est la vraie différence ? C’est ce que j’ai cherché à comprendre et ce que je vais tenter de vous expliquer au travers de cette définition car j’en ai marre d’utiliser uniquement les relations identifiées sur MySql Workbench sans savoir à quoi sert les autres.

Relation identifiée ou identifying relationship

Une relation identifiée c’est lorsque l’existence d’une ligne dans une table enfant dépend d’une ligne dans une table parent.

 

relation-identifiee

 

Exemple : une personne a un ou plusieurs numéros de téléphone. S’ils avaient un seul numéro de téléphone, nous pouvions tout simplement le stocker dans la colonne de la la table personnes. Puisque nous voulons prendre en charge plusieurs numéros de téléphone, nous allons faire une deuxième table telephones, dont la clé primaire comprendra la table personnes de référencement personne_id.

Nous pouvons penser au(x) numéro de téléphone (s) comme appartenant à une personne, même si elles sont modélisés comme des attributs d’une table séparée. C’est un indice fort que c’est une relation d’identification, autrement dit identifiée (même si nous n’incluons pas littéralement personne_id dans la clé primaire de telephones).

Relation non-identifiée ou non-identifying relationship

Une relation non-identifiée, c’est l’inverse. C’est quand la clé primaire des attributs du parent  ne doit pas devenir des clé primaires de l’enfant.

 

relation-non-identifiee

 

Exemple :  Imaginez une table de correspondance, dans le cas où personnes.pays à une clé  étrangère référençant la clé primaire de Pays.pays et que Personnes est une table enfant par rapport à Pays. Une ligne n’est pas identifié par un attribut pays. À savoir Pays ne fait pas partie de la clé primaire de Personnes.

Ce qu’il faut retenir

Une relation non-identifiée peut être facultative ou nécessaire, ce qui signifie que la colonne de clé étrangère permet NULL ou non NULL, respectivement.

Cette définition ne vous convient pas ou au contraire elle vous a éclaircit sur la différence entre une relation identifiée d’une non-identifiée, faites le savoir.

Source : http://stackoverflow.com/questions/762937/whats-the-difference-between-identifying-and-non-identifying-relationships

 

Le partage, c’est bien quand c’est utile :