我正在研究数据库以管理小公司的客户数据。客户是公司和机构(学校......等),当然还有人/联系人。将会有更多的范围及时添加,但是现在我正在寻找核心设计本身的任何输入,如果有任何我在这里遗漏的东西,可能会导致问题。图像不包括项目的附加查找表; country,teltype..etc。我有点担心我过度规范了它,并且它会使查询在长期内变得更加复杂。任何意见都赞赏。
更新 - 2016年12月13日
我已经在我的结构中创建了一个名为entity的超类,它帮助我将所有3合并为一个。我今天仍在努力,因为它今天已经发展了很多,所以再次感激任何投入。
答案 0 :(得分:2)
我看到图表的第一印象是您对数据进行了过度标准化(除非这是您的目标)。
考虑公司< - >您创建的电话关系: -
创建这样的关系如下:
- 公司可以有一对多的电话号码
- 电话号码可以属于一对多公司
评估一下;电话号码是否可能由您的结构中的多个公司共享? (现实世界暗示它不会)
对此进行扩展,我认为你可能会将这个课程的主要原因是允许同一个电话号码申请一个或多个联系人以及一个企业吗?
就个人而言,根据我的经验,我建议从发展的角度来看,数据重复(电话号码)可能更容易维护和管理。这将使您的数据结构和应用程序逻辑不那么复杂,并且应该减少对系统的搜索负担。
但是,这也意味着您最终可能会收到陈旧数据,例如,如果您的所有联系人都使用了公司电话号码并且公司号码已更新,那么所有联系人数据现在也需要更新。
从应用程序的角度来看,一种方式是使用公司联系人显示公司编号,然后您不需要复制数据。
以下是此关系的非规范化视图的示例:
您也可以将此应用于适用相同概念的电子邮件地址。
答案 1 :(得分:1)
您是否需要有电话,电子邮件和位置的桥接表?如果不需要多个站点,电子邮件或电话号码;您可以将属性添加到主实体。