web-dev-qa-db-fra.com

Comment faire de la modélisation des héritiers dans des bases de données relationnelles?

Ma question concerne la modélisation de l'héritage dans des systèmes de base de données relationnels. J'ai un modèle de données canonique et dans le fait que j'ai des champs liés à la tarification du produit héritant certains attributs de la table de produits et je souhaite modéliser cette héritage dans la base de données relationnelle MySQL, etc.

"Comment pouvons-nous faire de la modélisation des héritages dans des bases de données relationnelles?"

Merci.

31
Rachel

Martin Fowler discute de cette question de manière approfondie dans ses habitudes de livre du livre d'architecture d'applications d'entreprise. Obtenez ce livre et examinez-vous:

  1. héritage de table unique
  2. Héritage de la table de classe
  3. héritage de table en béton

Le site Web devrait vous donner une idée. Vous voudrez peut-être également lire la section sur mapper de héritage . Chacune des différentes approches a des avantages et des inconvénients alors choisissez judicieusement.

36
RichardOD
9
Todd Stout

Les bases de données relationnelles ne traitent pas d'objets (et donc de héritage) - ils traitent des relations. Ce que vous demandez vraiment, c'est comment cartographier la structure de votre objet à votre base de données - et la réponse à celle-ci est "Cela dépend de votre couche orm".

Jetez un coup d'œil à Objets de mappage vers des bases de données relationnelles: O/R Mapping en détail Article Pour certains détails. Si vous nous dites quelle pile de logiciels que vous utilisez, vous obtiendrez probablement une réponse plus à la pointe.

3
ChssPly76

Si vous voulez simplement regarder des articles Web au lieu de lire un livre, vous pouvez trouver de bons articles en Googling sur:

Generalization Specialization Relational Modeling

Le modèle GEN-Spec couvre beaucoup de même motif que l'héritage fait dans OOP environnements.

Si vous Google sur

Generalization Specialization Object Modeling

vous obtiendrez un tout nouveau lot d'articles, dont la plupart mentionnent l'héritage explicitement.

Il y a une technique de conception résumée dans la balise suivante class-table-héritage sous la balise d'information. Cela vous permet d'utiliser des tables de sous-classe pour "étendre" une table de classe, si vous autorisez une utilisation étrange du mot "étendre". Il y a quelques travaux impliqués, mais ça vaut le coup.

2
Walter Mitty