Qu'est-ce que c'est une contrainte de clé étrangère (FOREIGN KEY) ?

La contrainte de clé étrangère, FOREIGN KEY, assume l'intégrité du référencement de la ou des colonnes de clés étrangères lors de manipulations de données :

  • En cas d'ajout ou de modification au sein de la table référençant, le SGBD-R vérifie que le tuple ou la ligne référencée existe dans la table de référence.
  • En cas de suppression ou de modification au sein de toute table, le SGBD-R vérifie qu'il n'y aura pas de tuple ou de ligne sans référence (orpheline) dans une table la référençant.

Représentation

La contrainte de clé étrangère est spécifiée en tant qu'opération UML stéréotypée <<FK-x>>. x est une valeur allant de 1 à n; x vaudra 1 pour la 1ère contrainte FK, 2 pour une éventuelle 2ème et ainsi de suite jusqu'à n. Elle est spécifiée au sein de la table source de la relation.

Les colonnes de clés étrangères portent aussi le stéréotype <<FK-x>>

Le nom "FK2_Art_Usa_adapte" de la contrainte de clé étrangère ci-dessus est formé :

  • du préfixe FK pour FOREIGN KEY ;
  • d'un numéro d'ordre de contrainte de clé étrangère
  • d’une indication de la table source de la contrainte : Art pour Articles ;
  • d’une indication de la table cible de la contrainte : Usa pour Usages ;
  • d’une indication de l'association ou du rôle d'origine de la contrainte : adapte.

Représentation graphique de la contrainte de clé étrangère

La représentation graphique de la contrainte de clé étrangère, sous forme de lien entre table(s) est nécessaire pour montrer la table cible ou parent.

Cardinalité

La cardinalité ou multiplicité dans la terminologie UML est un couple de nombres qui exprime la participation des tuples ou lignes d’une table à une relation avec une autre table.

Le premier nombre, Cmin, indique la participation minimale :

  • 0 ; la participation est optionnelle.
  • 1 ; la participation est obligatoire.
  • i de 2 à Cmax ; i participations minimales obligatoires.

Le deuxième nombre, Cmax, indique la participation maximale :

  • 1 ; la participation est limitée à une seule association.
  • * ou n ; la participation peut être infinie.
  • j de Cmin à ∞-1 ; la participation maximale est limitée à j.

La cardinalité 0..1 côté Usages signifie que :

  • Un article peut exister sans être adapté à une usage (prédéfini) , Cmin = 0, mais il ne peut être attribué qu'à un et un seul usage, Cmax = 1.

La cardinalité 0..* ou * côté Articles signifie que :

  • Un usage peut exister sans contenir d’article, Cmin = 0, mais elle peut en contenir plusieurs, Cmax = *.

En UML, la cardinalité d’une classe participant à une association se lit sur la classe opposée.

Degré de relation

Une relation est dite de degré 1:1 lorsque les cardinalités maximales des deux extrémités sont de 1.

Une relation est dite de degré 1:n lorsqu'un enregistrement de la table référencée (parent) peut avoir plusieurs enregistrements le référençant au sein de la table enfant.

Il ne peut pas y avoir de relation de degré n:n dans le modèle logique relationnel car les colonnes de clé étrangère ne peuvent contenir que des données atomiques référant un et un seul tuple de la table parent ou cible de la relation.

https://sites.google.com/a/smartmodel.ch/conceptionsii/config/pagetemplates/modelemldr/PageGardeAmazon.jpg