Bonjour à tous,
Envoyé par
SQLpro
Votre proposition de modèle n'est pas bon car vous avez un cycle.
Désolé de te contredire Frédéric, mais le MCD proposé par Dv4pp ne contient pas de cycle.
J'en profite pour éclaircir cette notion de cycle souvent mal enseignée et donc souvent confuse dans l'esprit des concepteurs.
Ce n'est pas parce qu'un MCD comme celui de Dv4pp présente une boucle qu'il s'agit d'un cycle. Pour simplifier, prenons un exemple théorique avec trois entités A, B et C :
[A]--1,1----( )----0,n->[B]--1,1----( )----0,n->[C]--1,1----( )----0,n->[A]
Ca, c'est un cycle.
Quelle incidence sur le modèle ?
Dans la branche bleue, une occurrence de C peut être liée à plusieurs occurrences de B, chacune d'elles peuvant être liée à plusieurs occurrences de A. Donc, en résumé, une occurrence de C peut être liée à plusieurs occurrences de A. Or, la branche rouge dit le contraire : une occurrence de C n'est liée qu'à une seule occurrence de A. Cette contradiction rend le modèle incohérent. La base de données qui en serait issue ne garantirait pas l'intégrité des données.
Trouvons-nous un cycle dans le MCD de Dv4pp ? Pour le savoir, il faut faire apparaitre les dépendances fonctionnelles. Au préalable, il faut dire que l'association Contenir (par exemple) contient deux DF dites "triviales" (en rouge ci-dessous) vers chacune des entités qu'elle associe : Commande et Produit. Donc les DF de ce MCD sont :
Contenir -> Commande -> Client
Contenir -> Produit -> Fournisseur
Livrer -> Client
Livrer -> Fournisseur
Il n'y a aucun cycle dans ce MCD.
Partager