bonjour,
j'ai une table personne qui est reliée à deux associations réflexives parent et frère comment on peut modéliser ce schémas en modèle relationnel tout en respectant les formes normales?
bonjour,
j'ai une table personne qui est reliée à deux associations réflexives parent et frère comment on peut modéliser ce schémas en modèle relationnel tout en respectant les formes normales?
Bonjour mehdiing,
Tel qu’il est, votre MCD ne pose pas de problème particulier quant à la dérivation en MLD, avec respect de la 5e (voire 6e) forme normale.
Le MLD revient à ceci :
Personne (PsnId, Nom, Prenom, Adresse)
, Constraint Psn_CK1 Primary Key (PsnId)
Filiation (PsnId, ParentId)
, Constraint Fil_CK1 Primary Key (PsnId, ParentId)
, Constraint Fil_FK1 Foreign Key (PsnId) References Personne
, Constraint Fil_FK2 Foreign Key (ParentId) References Personne
, Constraint Fil_CX1 Check (PsnId <> ParentId)
Fratrie (PsnId, FrereId)
, Constraint Fra_CK1 Primary Key PsnId, FrereId)
, Constraint Fra_FK1 Foreign Key (PsnId) References Personne
, Constraint Fra_FK2 Foreign Key (FrereId) References Personne
, Constraint Fra_CX1 Check (PsnId <> FrereId)
Toutefois, pour respecter la cardinalité minimale 1 associée au rôle Parent, vous devrez prévoir une procédure pour garantir que, quelle que soit la personne, celle-ci est parente d’une autre personne. Mais, dans un monde réel, cette cardinalité n’est pas très pertinente...
De même, vous devrez prévoir un trigger garantissant qu’une personne n’a jamais plus de deux parents.
Quant à la fratrie, selon votre MCD, rien n’interdit que les frères d’une personne aient des parents qui ne soient pas les mêmes.
Pour rester dans un contexte traditionnel, dans lequel une personne (sauf Adam et Ève) est née d’une relation entre un père et une mère, au niveau relationnel, on peut aussi représenter ainsi les choses :
Personne (PsnId, Nom, Prenom, Adresse)
Constraint Psn_CK1 Primary Key (PsnId)
Couple (CoupleId, LuiId, ElleId)
, Constraint Cou_CK1 Primary Key (CoupleId)
, Constraint Cou_FK1 Foreign Key (LuiId) References Personne
, Constraint Cou_FK2 Foreign Key (ElleId) References Personne
, Constraint Cou_CX1 Check (LuiId <> ElleId)
Enfant (PsnId, CoupleId)
, Constraint Enf_CK1 Primary Key (PsnId)
, Constraint Enf_FK1 Foreign Key (PsnId) References Personne
, Constraint Enf_FK2 Foreign Key (CoupleId) References Couple
On admettra que les couples se font, se défont, se refont...
Et n’oubliez pas de prévoir que les géniteurs soient de sexe opposé...
(a) Faites simple, mais pas plus simple ! (A. Einstein)
(b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
=> La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)
__________________________________
Bases de données relationnelles et normalisation : de la première à la sixième forme normale
Modéliser les données avec MySQL Workbench
Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.
Bonjour,
merci fsmrel pour la réponse.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager