2

这是交易:这是我的第一个数据库项目,恐怕我对这个问题的解决方案不是最好的。数据库跟踪不同“类型”的合作者。这些类型是公司、组织、雇佣工人、其他“人”......

所有这些都有完全不同的信息集,但它们都有一个共同点——联系信息。我决定让用户输入他想添加到任何合作者的什么样的联系信息,无论是电子邮件、电话、URL、传真等等……

所以我创建了“ Contacts”表,所有合作者的所有联系数据都将被放入其中,无论合作者是什么类型。

TablesList表包含合作者类型列表(公司、组织、工人)

联系人表中的每一行都必须包含"TableID"标识合作者类型的数字(公司/工人/组织...),并且必须包含"RowID"标识联系人所涉及的确切公司/工人/组织的数字。

存在的问题是 Contacts 表在 1 列中包含来自其他 3 个表的外键,这不好。我可以删除关系并只在 DBMS 不知道约束的情况下用 thos ID 填充列,但这对我来说似乎不是一个好的解决方案,所以现在我怀疑这个想法是否有任何好处。

你有什么建议?

请记住,如果需要,将来可能会添加更多类型的合作者(如临时工/合同工、代理机构),并且联系人表也应设计为支持它们

提前致谢 !

顺便说一句,我使用 SQL CE 和 C#

这是正在发生的事情的草图:
在此处输入图像描述

编辑

虽然感觉不对,但我只是删除了关系,到目前为止它在我的应用程序中运行良好

4

1 回答 1

0

我怀疑您的设计过度规范化。您可以通过将数据合并到三个表中来简化它:公司、工人和组织。它不会被标准化,但使用起来要简单得多。查看http://www.codinghorror.com/blog/2008/07/maybe-normalizing-isnt-normal.html

于 2013-09-17T15:22:50.587 回答