我们的应用程序已经过定制,可处理许多不同类型的客户,其中某些设置仅适用于少数或一位客户。我决定添加一个[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模式。 –