2017-06-15 63 views
2

假設我有兩個實體具有相似的字段,但其中有幾個不同。例如SQL Server一個表還是兩個表?

public class Foo{ 
    public int ID{get;set;} 
    public int IndexNumber{get;set;} 
    public string Name{get;set;} 
    public string Info{get;set;} 
} 

public class Bar{ 
    public int ID{get;set;} 
    public DateTime AppointmentTime{get;set;} 
    public string Name{get;set;} 
    public string Info{get;set;} 
} 

在實體框架,你實際上可以自動將ID,名稱和信息到第三父類和具有它的另外兩個繼承,並將它存儲它們在一張表中加上一個「鑑別器」列,列出類別名稱來區分它們。

我的問題是,假設兩個模型(外鍵和其他)之間沒有關係,用一個表和一個鑑別器或兩個表格做一個表更好嗎?

+4

我不會把它們放在同一張表中,因爲它們不是同一個東西。 –

+6

數據庫應該使用數據庫規則進行設計,以實現良好的設計。在表中混合不同的實體根本就不是好設計。數據庫表格不是Excel工作表。它代表一個實體或一個關係 –

+0

並且將多組數據放在一張Excel表格中通常也不是一個好主意! –

回答

4

最好從物理存儲角度考慮實體,但不要從域中考慮實體。應用不同業務規則且彼此不相關的不同實體應分開存儲。

即使FooBar實體此刻具有相關字段集,它們可以用於不同的目的。並且不要忘記實體不變量,它們可能不同(例如Name字段Foo類可能只包含名稱,但NameBar也應該包含姓氏,它是合成示例,但應指出區別,即使兩個字段都是字符串)

+0

好點。我還補充說,將來這兩個類可能會以不同的,不相關的方式演變,如果它們保持在同一個表中,可能會不必要地使DB設計複雜化。 – Alejandro