我目前正在重新调整我们的联络管理数据库,我想听取人们的意见,解决一些具有共同属性的联系人类型的问题.
基本上我们有6种联系方式,包括Person,Company和Position @ Company.
在当前结构中,所有这些都有一个地址,但是在地址表中,您必须存储它们的类型才能加入联系人.
在一段时间后,加入联系人类型的一致要求令人沮丧.
今天我偶然发现一个讨论“表继承”的帖子(http://www.sqlteam.com/article/implementing-table-inheritance-in-sql-server).
基本上你有一个父表和一些子表(在这种情况下是每个联系人类型).从那里你强制执行完整性,以便一个子表必须具有一个主等效的类型被定义.
我看到它的方式,通过这种方法,我将不再需要将类型存储在地址中,因为所有类型的id是唯一的.
我只是想知道有人对这种方法有任何感觉,无论是一个好的方法还是替代方法?
我正在使用sql Server 05& 08应该有所作为.
谢谢
埃德
解决方法
我设计了一个数据库,就像你提供的链接一样.案例是存储许多不同技术报告的数据.报告类型的数量未定义,可能会增长到大约40种不同的类型.
我创建了一个主报表,具有自动增量主键.该表包含所有常见的信息,如客户,测试现场,设备,日期等.
那么每个报表类型都有一个表,其中包含与该报告类型相关的特殊信息.该表具有与主机相同的主键,并引用主机.
我将其分为不同表格(1通常是no-no)的想法是为了避免使用大量列的单个表格,因为您不断添加列可能难以维护.
我的表继承的设计给了我分段的数据和可扩展性,而不会难以维护.我唯一需要做的是写一个特殊的保存方法来自动处理对两个表的写入.到目前为止,我非常高兴与设计,并没有真正发现任何缺点,除了一个更复杂的保存方法.