![Citation](https://forum.developpez.be/images/misc/quote_icon.png)
Envoyé par
loic20h28
Article--(1,1)----0,n--TypeArticle--0,n------1,1--Attribut--0,n------1,1--ValeurAttribut
Il ya également une association entre ValeurAttribut et Article qui nous donne : Article--0,n----------(1,1)--ValeurAttribut.
ValeurAttribut est une entité parente c'est à dire qu'elle hérite 2 deux autres entités qui sont : ValeurAttributEntier et ValeurAttributTexte.
Je pense que ce schéma montre bien mon MCD.
C'est l'entité ValeurAtribut qui joue le rôle de sur-tpe car elle hérite des entité-type "ValeurAttributEntier" et "ValeurAttributTexte".
Soyez complet et rigoureux quant à votre façon de rédiger :
— Dans votre 1er message, vous auriez dû préciser que vous utilisiez la syntaxe de Power AMC pour votre modèle et en conséquence le rôle des parenthèses pour les cardinalités 1,1. Sinon, comment voulez-vous que ceux qui ne connaissent pas cet outil puissent vous aider ?
— Il a fallu attendre votre 3e message pour que vous confirmiez que sous-entité et sous-type sont synonymes et que l’un des deux termes est de trop.
— Comme j’ai plutôt analysé votre MLD :
Article(id, libelle, prix, id_TypeArticle#)
TypeArticle(id, libelle)
Atribut(id, nom, id_TypeArticle#)
ValeurAttribut(id, id_Article#, id_TypeArticle#, id_Atribut#)
Je n’avais donc pas repéré cette phrase en amont qui montre que ce MLD est incomplet :
ValeurAttribut est une entité parente c'est à dire qu'elle hérite 2 deux autres entités qui sont : ValeurAttributEntier et ValeurAttributTexte.
Une fois de plus, il a fallu attendre votre 3e message pour que vous précisiez :
C'est l'entité ValeurAtribut qui joue le rôle de sur-tpe car elle hérite des entité-type "ValeurAttributEntier" et "ValeurAttributTexte".
Mais avec une belle contradiction à la clé, car de même que les parents ne sont pas les héritiers de leurs enfants, ValeurAtribut n’hérite ni de ValeurAttributEntier ni de ValeurAttributTexte, c’est exactement l’inverse.
=> N’hésitez pas à utiliser Power AMC — ou tout autre outil — pour présenter des schémas qui permettent de voir exactement quelles sont les entités-types (avec leurs attributs), quelle est la nature de leur relations, éviter les ambiguïtés, les contradictions, etc.
Vous penserez peut-être que je pinaille, mais si j'insiste sur la rigueur de la présentation des problèmes, cela ne pourra que vous être profitable.
![Citation](https://forum.developpez.be/images/misc/quote_icon.png)
Envoyé par
loic20h28
Le MCD est fais, ma question concerne la construction du MLD de mes sous-type??
Plus précisément je souhaiterais surtout savoir, ce que devienne mes sous-entités?? comment sont-elles remplit si j'utilise la manière suivante :
Dupliquer la totalité du surtype dans les sous types.
en sachant que "ValeurAttribut" est de la forme suivante :
ValeurAttribut (id, id_Article#, id_TypeArticle#, id_Atribut#)
On est au niveau du MLD : Il est d’usage de ne dupliquer que la clé, en l’occurrence celle de la table ValeurAttribut.
D’après les informations que vous avez fournies, cette clé est la suivante :
{id, id_Article#, id_TypeArticle#}
Si vous voulez aussi dupliquer l’attribut id_Atribut#, c’est possible, et Power AMC propose une option pour générer une structure ad-hoc pour les tables ValeurAttributEntier et ValeurAttributTexte. Cela dit, ça sera à vous de contrôler la redondance des valeurs prises par l’attribut id_Atribut# entre ValeurAttribut et ValeurAttributEntier d’une part, et entre ValeurAttribut et ValeurAttributTexte d’autre part. En effet, dans l’état où se trouve votre modèle, on peut valoriser cet attribut par n’importe quoi dans les tables ValeurAttributEntier et ValeurAttributTexte, puisque le système n’a rien à vérifier. Pour assurer le coup, il faudra par exemple prévoir des triggers pour garantir la cohérence, lors des opérations d’Insert/Update.
Une autre façon de procéder consisterait à remplacer la cardinalité 1,1 par une cardinalité (1,1) pour la relation entre Attribut et ValeurAttribut :
Attribut--0,n------(1,1)--ValeurAttribut
Et faire ainsi disparaître l’attribut id de la table ValeurAttribut dont la structure serait alors la suivante au niveau tabulaire :
ValeurAttribut (id_Article#, id_TypeArticle#, id_Atribut#)
Ce qui revient à dire qu’au niveau MCD, ValeurAttribut serait une association-type entre Article et Attribut.
A noter que selon votre modèle, rien n’interdit de mettre en relation un article du type t1 (table Article) et un attribut du type t2 (table Attribut)...
Partager