Considérez la relation ternaire suivante:
Supposons que toutes les entités n'ont que deux attributs (PK et nom).
Voici les tableaux que j'ai dérivés (5 tableaux):
Sector
-------------------------
ID_Sector SectorName
-------------------------
Product
-------------------------
ID_Product ProductName
-------------------------
Company
--------------------------------------
ID_Company ID_Sector CompanyName
--------------------------------------
Relationship 1 (R1)
-------------------------
ID_Sector ID_Product
-------------------------
Relationship 2 (R2)
-------------------------
ID_Company ID_Product
-------------------------
Est-ce une bonne solution pour cette relation ternaire? Quelle est la différence entre avoir 2 tables (R1 et R2) au lieu de la table unique suivante:
Ternary table
-------------------------------------
ID_Sector ID_Company ID_Product
-------------------------------------
Pour moi, il semble qu'avoir 2 tables distinctes pour chaque relation (R1 et R2) est une meilleure solution par rapport à avoir une seule table, mais je ne sais pas si c'est réellement vrai ou si c'est une bonne pratique.
Les deux solutions modélisent des règles différentes. Avec le tableau ternaire, vous dites qu'une entreprise ne peut avoir que certains produits dans un secteur particulier. Dans un secteur différent, il y aura un ensemble de produits différent, bien que les deux ensembles puissent bien sûr se chevaucher.
Avec les tableaux binaires, vous déclarez que le secteur n'a aucune influence sur les produits auxquels une entreprise est liée. De même, la société n'a aucune influence sur les produits dans quel secteur.
Le choix entre ces alternatives sera déterminé par les règles de votre entreprise. Il ne peut être répondu par une discussion académique abstraite. J'ai trouvé préférable de nommer la relation entre les entités. Dire que l'entreprise est liée au produit, par exemple, est intéressant; dire pourquoi l'entreprise est liée au produit est encore mieux. "La société achète un produit" est une information différente de "la société fabrique le produit" ou "la société n'a pas d'autorisation de sécurité pour utiliser le produit". Ce faisant, je découvre souvent de nouvelles relations, attributs et types d'entités. Vous pourriez finir par avoir besoin des tables binaires et ternaires!
Edit: Pour les règles
J'aurais ces types d'entités
Sector - SectorID
Company - CompanyID, SectorID
Product - ProductID, CompanyID
Si l'une de vos règles est plusieurs-à-plusieurs, vous aurez besoin des tables d'association binaires.
En passant, les noms de relation "a", "appartient à" et "est un" cachent souvent plus qu'ils n'éclairent. Si vous trouvez que vos BAs les utilisent, demandez-leur de réfléchir à nouveau.