这是交易:这是我的第一个数据库项目,我担心这个问题的解决方案并不是最好的。数据库跟踪合作者的不同“类型”。这些类型是公司,组织,就业工人,其他“人”......
所有这些都有完全不同的信息集,但它们都有一个共同点 - 联系信息。我决定让用户输入他想要添加到任何合作者的联系信息,无论是电子邮件,电话,URL,传真等......
所以我创建了“Contacts
”表,其中将放置所有合作者的所有联系人数据,无论合作者是什么类型。
TablesList
是包含合作者类型列表(公司,组织,工人)的表
“联系人”表格中的每一行都必须包含"TableID"
个数字,用于标识合作者的类型(公司/工人/组织......),并且必须包含"RowID"
,用于标识确切的公司联系人/工人/组织。
存在的问题,Contacts表包含1列中3个其他表的外键,这可能不是很好。我可以删除这些关系,只是在没有DBMS了解约束的情况下用你的ID填充列,但这对我来说看起来不是一个好的解决方案,所以现在我怀疑这个想法是好的。
你有什么建议?
请记住,将来如果需要可能会增加更多类型的合作者(如临时工/合同工,代理商),联系人表也应设计为支持他们
提前致谢!
使用SQL CE和C#
这里是最新的草图:
修改
虽然感觉不对,但我刚刚删除了这些关系,到目前为止我的应用程序运行得很好
答案 0 :(得分:0)
我怀疑你的设计过度标准化了。您可以通过将数据合并到三个表中来简化它:公司,工人和组织。它不会被规范化,但它更容易使用。 查看http://www.codinghorror.com/blog/2008/07/maybe-normalizing-isnt-normal.html