Salve Vincent et Philippe,
La solution 1 a l’avantage (au moins apparent) de la simplicité.
Mais comme le fait observer Philippe, pourquoi cette cardinalité 0,1 portée par les pattes côté LANGUE ?
La solution 2 comporte une contradiction par rapport à la solution 1 :
Selon la solution 1, un LIBELLE_GAMME peut facultativement faire référence à au plus une LANGUE.
Selon la solution 2, un LIBELLE_GAMME fait référence à au moins et au plus un LIBELLE, lequel fait référence à au moins et au plus une LANGUE, donc un LIBELLE_GAMME fait référence à au moins et au plus une LANGUE. Toutes choses égales, ceci vaut pour tous les libellés et descriptions.
La solution 2 comporte vraisemblablement une redondance :
Si l’attribut type_libelle de la table TYPE_LIBELLE sert à distinguer les libellés des produits de ceux des gammes, alors oui, il y a redondance avec l’existence des tables LIBELLE_GAMME et LIBELLE_PRODUIT. En effet, en l’état du modèle, qu’est-ce qui empêche qu’une occurrence de LIBELLE_PRODUIT fasse référence à une occurrence de LIBELLE, mais avec type_libelle_id_type_libelle = "gamme" ?
Par ailleurs, la solution 2 devrait comporter une contrainte d’exclusion entre LIBELLE_GAMME et LIBELLE_PRODUIT, à moins que tel libellé puisse servir aussi bien pour un libellé de gamme qu’un libellé de produit (mais à quoi ressemble alors la valeur prise par type_libelle_id_type_libelle ?) Toutes choses égales, ceci vaut pour DESCRIPTION GAMME et DESCRIPTION PRODUIT.
Dans tous les cas, cela se terminera avec un trigger garantissant la validité de la redondance. Vous me direz que dans la FAQ Merise on trouve un exemple avec ce genre de redondance, mais vous comprendrez que je ne peux pas être d’accord, car il n’y est fait aucune mention du contrôle d’icelle.
Une incidente quant à la FAQ :
Je pense qu’un bricoleur maladroit a modifié ce qu’a écrit Dominique Nanci (RIP). Le bricoleur s’exprime dans un français plus que douteux, en effet quand on lit :
« cela exige que l'héritage est un partition »
« ça dépend comment la base de données gère ces vides. »
On peut avoir des doutes... Et je ne parle pas de la ponctuation. Par contre, Dominique Nanci connaissait sa langue.
En passant, j’ignorais qu’une base de données pouvait gérer quelque chose...
Etc.
------------ fin de l’incidente ------------------
Pour en revenir à la solution 2 où LIBELLE_GAMME et LIBELLE_PRODUIT sont manifestement des spécialisations de LIBELLE, je trouve qu’elle n’offre qu’un bien maigre avantage en réduisant les associations avec LANGUE, alors que les redondances qui l’accablent sont sources d’anomalies si l’on n’y prend garde.
Est-ce qu'une troisième solution, basée sur l'héritage, ne serait pas envisageable ? Un intitulé de produit et un intitulé de gamme héritant d'une entité parente (intitulé)
Quelle différence avec la solution 2 ?
@Philippe,
Quand tu écris :
Produit -1,1----avoir----0,1- Libelle -1,1----traduire----0,n- Langue
Un produit n’aurait donc qu’un seul libellé ?
Partager