2011-08-18 82 views
0

我有一個基表層次數據庫結構,然後幾個子表:查找子類ID從超類ID

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

每個子表中有一個ID,它是一個外鍵Base.ID;所以每個孩子都鏈接到一個也在Base中的ID。

我現在有一個情況,我有一個ID列表,我想知道他們實際屬於哪個子表。 確定給定ID的子表的最佳方式是什麼?

我想有一個從ID返回類型的函數:Type TypeFromBaseID(int baseID)

我能想到的兩種方法可以做到這一點,但我希望有一個更好的辦法:

A)只需添加到庫列存儲其子表

B)的表名有一系列的if語句,做類似db.ChildA.Any(x=>x.ID == baseID)

回答

1

您在提出什麼)是有效的w ^帽子在ER建模中被稱爲「鑑別器」,這對我來說似乎是一個更清潔的解決方案。

我只是希望您在這裏重新考慮使用全表名稱。嘗試通過使用整數來保存一些空間(和性能)(並清楚地記錄哪個整數值「映射」到哪個子表)。

+0

C#端的枚舉將是記錄映射的乾淨方式。 –