客户数据库设计

时间:2012-10-03 14:53:37

标签: database-design sql-server-2008-r2

我们设计这个数据库来跟踪我们的客户数据库,但我觉得它设计有点复杂我觉得有人可以提一些设计建议吗? enter image description here

enter image description here

3 个答案:

答案 0 :(得分:0)

对此图表的一些想法:

  • 在多对多连接表上设置主键(两列都应该是PK,大概是)
  • 我没有在表格中看到“重复”的电话号码违反规范化规则,相反,我认为这是巧合。你不会因为名字只有两个人被命名为“Joe”而没有一个完整的名字表。另外,想象一下如果两个人共用一个电话号码,那么其中一个人会获得不同的号码。如果phone直接引用Customer,则更新一个数字是一个简单的操作,但是奇怪(对我来说)插入一个新的phone并且在连接表上有多个操作只是为了做同样的事情的事情。
  • Email相同的交易。
  • 如果有多种选择,应用程序将如何选择要使用的手机或电子邮件?应该提供default位还是ordinal列?
  • 客户是否有许多地点,许多公司或两者兼而有之?

答案 1 :(得分:0)

如果简单性是关键点,我建议您将与客户相关的地址类型信息折叠到一个表中,如下所示:

    customer_contact_details{
    customer_id MEDIUM_INT
    contact_type VARCHAR2(10)
    contact_details VARCHAR2(100)
    status BOOLEAN
    }

然后可以根据您的需要将contact_type字段标记为Home Phone,email,primary_email,work_phone,primary contact。然后,您可以在一个表中包含所有此类相关联系信息。简化您的架构,您只需要一个联接就可以了解信息。

答案 2 :(得分:0)

另一个部分解决方案是使用联系人表:CUSTOMER有联系人(一对多);每个CONTACT可能有多个PHONE号码(即便如此,您只需要一个手机号码,一个家庭号码,一个工作号码和一个传真号码),但只有一个EMAIL地址。