Tiens ? Revoilà Nathalie avec ses soucis fonctionnels...
Envoyé par
Harbonne
d'après ce que je sais une CIF existe entre deux entités uniquement
Ça serait bien réducteur...
Pour ma part, je n’hésite pas à mettre en œuvre une CIF entre plusieurs entités-types participant à la même association-type, quitte à parler simplement de contrainte d’unicité.
Dans votre cas, vous avez 4 entités-types, E1, E2, E3, E4 (identifiées respectivement par a, b, c, d) participant à une association-type R. La propriété e est portée par E4. Les cardinalités sont toutes à x,N, y-compris côté E4.
E1, E2, E3 constituent la source de la contrainte, E4 la cible et R la portée.
Au niveau MLD, les tables sont alors les suivantes (les attributs constituant les clés sont soulignés) :
E1 {a, ...} ;
E2 {b, ...} ;
E3 {c, ...} ;
E4 {d, e} ;
R {a, b, c, d} ;
Du fait de la CIF, l’attribut d ne participe pas à la clé de R.
Les attributs a, b, c, d de R donnent lieu évidemment à autant de clés étrangères en relation respectivement avec E1, E2, E3, E4 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| Create Table E1
(a ...,
Primary Key (a)
) ;
Create Table E2
(b ...,
Primary Key (b)
) ;
Create Table E3
(c ...,
Primary Key (c)
) ;
Create Table E4
(d ...,
e ...,
Primary Key (d)
) ;
Create Table R
(a ...,
b ...,
c ...,
d ...,
Primary Key (a, b, c),
Foreign Key (a) References E1,
Foreign Key (b) References E2,
Foreign Key (c) References E3,
Foreign Key (d) References E4
) ; |
Partager