2011-08-18 6 views
0

J'ai une structure de base de données hiérarchique avec une table de base et plusieurs tables de l'enfant:Trouver ID Sous De superclasse ID

Base: {ID, Date, ...} 
ChildA: {ID, Color, ...} 
ChildB: {ID, Age, ...} 

Chaque table enfant a un ID qui est une clé étrangère à Base.ID; donc chaque enfant est lié à un ID qui est également dans la base.

J'ai maintenant une situation dans laquelle j'ai une liste d'IDs et je veux comprendre quelles tables enfants ils appartiennent réellement. Quelle est la meilleure façon de déterminer la table enfant d'un ID donné?

Je voudrais avoir une fonction qui renvoie un type d'un ID: Type TypeFromBaseID(int baseID)

je peux penser à deux façons de le faire, mais j'espère qu'il ya une meilleure façon:

a) Il suffit d'ajouter une colonne à la base qui stocke le nom de la table de sa table enfant

B) une série de cas des déclarations qui fait quelque chose comme db.ChildA.Any(x=>x.ID == baseID)

Répondre

1

Qu'est-ce que vous proposez en a) est effectivement w Dans la modélisation ER, on sait que le discriminateur est «discriminant» et cela me semble être une solution plus propre.

Je voudrais juste vous inviter à reconsidérer en utilisant des noms de table complets ici. Essayez d'économiser de l'espace (et des performances) en utilisant des entiers (et en documentant clairement quelle valeur entière "mappe" dans quelle sous-table).

+0

Une énumération sur le côté C# serait une manière propre de documenter le mappage. –