0

我在 SQL Server 2008 上有一个带有数据库的 Web 应用程序。我正在分析给定应用程序的 ER 模型。

有一个表“Table1”,其中包含“ContactType”和“ContactID”列。基于 ContactType 值“ContactID”指向不同的表(Table_ContactType1 或 Table_ContactType2)。

所以,在这种情况下,我们不能定义外键。我想知道这是不是一个好习惯?如果没有,我应该以某种方式改变模型吗?如果没有定义外键,以后会不会出现一些问题?

编辑: 现在很难将 ContactType1 和 ContactType2 表合并到一个表中。因为 CotnactType1 是一个之前使用过的表,它包含有权访问系统的用户(登录名和密码、电子邮件和其他信息)。IT 是一个包含许多字段的表。不幸的是,新的需求来了,并且创建了新的表 ContactType2。该表只有三列,它们是组织名称,对系统没有任何访问权限。将它们组合起来非常困难,因为它会影响很多功能。最简单的事情 - 当添加到 contacttype1 表的联系人时,电子邮件、用户名、密码不能为空等。但还有很多其他的。

4

2 回答 2

2

您可以创建第三个表,它将合并ContactType1它们ContactType2的公共列(TypeID),然后您可以从您的 FKTable1到新的组合表(我们称之为ContactTypeUnified

ContactType1并且ContactType2既可以保持原样,也可以将它们的 ID 作为新ContactTypeUnified表的 FK。

您在这里唯一的麻烦是数据操作ContactType1并且ContactType2还必须反映在ContactTypeUnified

于 2013-06-06T12:57:42.700 回答
0

一般来说,没有完整性的数据库设计是不可信的,需要不惜一切代价避免 - 所以是的,您确实需要应用外键。在这种情况下,我只会合并两个联系人类型表,因为它们不太可能分开。

于 2013-06-06T12:46:00.580 回答