2011-07-03 5 views
0

Lorsque vous l'héritage modèle par héritage de table de classe relations dans un modèle de base de données, avez-vous ...Héritage & Database Design

1) Inclure un attribut (booléenne pour deux subtipes, chaîne pour plus subtipes) qui identifie le sous-type particulier de chaque enregistrement?

2) Inclure cette identification en tant que clé étrangère dans une table contenant une description de tous les sous-types possibles?

3) Rien de ce qui précède et compter sur la recherche «par erreur» dans les sous-tables pour les quelques fois où cela est nécessaire?

Répondre

4

Je préférerais dans la plupart des cas le modèle de table par hiérarchie de classe, dans lequel une colonne est une colonne discriminante (solution 1.). Si vous avez vraiment besoin de la deuxième table à cause de nombreux sous-types qui sont nécessaires, vous devriez peut-être diviser les tables en quelques tables, car je suppose que beaucoup de données seront redondantes, et null.

Il y a aussi une table par modèle sous-classe, dans lequel vous avez une table principale avec des données partagées et tables enfants pour les sous-classes (données completly normalisées), bien que le travail avec ce type de données est plus difficile, sauf si vous utilisez peut-être Outil ORM comme NHibernate.

Pouvez-vous donner l'exemple concret de la situation que vous résolvez, parce que dans ces cas, le nombre de sous-classes est généralement connu à l'avance (comme BillingDetails -> Carte de crédit, BankAccount etc ...)

+0

Il y a aussi un table par classe – Mark

+0

Ouais, table par classe de béton pour être exact –