0

我準備做一個項目,我有繼承數據庫的SQL Server

Task Entity並且可以有多種類型的任務,並假設所有的人都彼此不同領域。那麼我如何在sql中管理這種方法?

像這樣

Task (abstract class) 
    Change Engine Oil (child class) 
    Meet James (child class) 

因此,在上述情況下,每個子類中有不同類型的屬性

回答

1

你可以認爲有2個表入手的 - 任務和TaskEntityDetails。

任務表將有2列 - 的TaskID(主鍵)和任務

TaskEntityDetails表將有4列 - ID(主鍵)的TaskID(外鍵),場,值。

字段列將爲行上的TaskID存儲所有字段,而不是將它們作爲單獨的列存儲。 Value列的值將與每個TaskID的字段相對應。

您的表看起來就像這樣:

ID TaskID Field   Value 
1  1   StartDate  2014-01-01 
2  1   EndDate  2014-01-31 
3  1   Contact  ABC 
4  2   StartDate  2014-01-01 
5  2   TaskName  XYZ 

然後可以使用PIVOT操作時要檢索的數據。通過這種方式,您可以避免在表中使用多個NULL值。

+0

如果我們考慮你的解決方案,那麼我們將把幾乎所有的數據放在'TaskEntityDetail'表中。這是一個很好的做法嗎? – Ancient

+0

我建議的是基本的結構。你總是可以繼續前進,併爲Fields創建一個單獨的表格,並將它們的鍵放在主表格中。 –

+0

好的,你還可以舉一個例子,你的第二個解決方案 – Ancient