我們的應用程序已經過定製,可處理許多不同類型的客戶,其中某些設置僅適用於少數或一位客戶。我決定添加一個[Settings]表格來允許每個設置成爲一行,而不是連續向客戶表中添加可爲空的列, 。與不同數據類型的多對多關係
[dbo].[Settings]
[SettingID] [int]
[SettingCode] [nchar](4)
[SettingDescription] [nvarchar](255)
,然後通過一個多到多表連接到[客戶]表
[dbo].[Customer_Settings]
[Customer_SettingsID] [int]
[CustomerID] [int]
[SettingID] [int]
我的問題是如何處理的事實,許多這些設置需要一個額外的數據在[Customer_Settings]表格上鍵入。
例如,我們可以將一個設置設置爲需要時間數據類型的「最新傳送時間」,或另一個設置爲需要int的「分鐘至期滿」。
兩種方式我能想到的來處理,這是可空列添加到[Customer_Settings表所示:
[dbo].[Customer_Settings]
[Customer_SettingsID] [int]
[CustomerID] [int]
[SettingID] [int]
[ValueTime] [time] NULL
[ValueInt] [int] NULL
...
這似乎是糟糕的設計。
我能想到的另一種方法是子表添加到[Customer_Settings表所示:
[dbo].[Customer_Settings_Int]
[Customer_Settings_Int_ID] [int]
[Customer_SettingsID] [int]
[Value] [int]
這似乎是它是標準化的,但也很麻煩。請讓我知道,如果其中之一顯然更好,或者如果有另一種選擇。謝謝!
您正在進入可怕的Entity-Attribute-Value模式。 –