Bonjour Krystal_,
Les règles exprimées concernant la localisation méritent d'être précisées.
Envoyé par
Krystal_
- Une localisation est à un étage et à un service
Envoyé par
Krystal_
Or, je voudrais qu'une localisation ne puisse être associée qu'à certains couple étage --- service.
Avec des exemple cela aurait été plus clair mais ce qu'on comprend de prime abord, c'est :
- A une localisation on ne trouve qu'un couple {étage, service}
- A un couple {étage, service} peuvent correspondre plusieurs localisations
A toi de confirmer, et si c'est le cas, la modélisation correspondante est :
1 2 3 4 5 6 7 8 9 10 11 12
|
[ SERVICE ]
|
0,n
|
|
( SERVICE-ETAGE )<-0,n----( )----1,1--[ LOCALISATION ]
|
|
0,n
|
[ ETAGE ] |
La dérivation de ce MCD en modèle relationnel donne les tables (pk soulignées, fk en italique) :
SERVICE(serv_id, serv_nom)
ETAGE(etag_id, etag_niveau)
SERVICE-ETAGE(serv_id, etag_id) ---> serv_id référence SERVICE, etag_id référence ETAGE
LOCALISATION(loca_id, loca_libelle, serv_id, etag_id) ---> {serv_id, etag_id} référence SERVICE-ETAGE
Cette description des tables est identique à la tienne.
Envoyé par
Krystal_
Ne devrais-pas introduire une clé primaire auto-incrémentée dans Service_Etage pour éviter la fk composée dans Localisation ?
Non, c'est inutile mais surtout, c'est faux. Le couple {serv_id, etag_id} identifie de manière unique toutes les lignes de la table SERVICE-ETAGE. Y introduire une clé primaire auto-incrémentée, c'est prendre le risque d'introduire des doublons dans cette table. La fk composée dans LOCALISATION est correcte et parfaitement légitime.
Partager