gpt4 book ai didi

SQL - 联系人、公司数据库设计

转载 作者:行者123 更新时间:2023-11-29 14:18:04 30 4
gpt4 key购买 nike

Basic DB Design

我正在开发一个数据库来管理一家小公司的客户数据。客户是公司和机构(学校等),当然还有人/联系人。会有更多的范围及时添加,但现在我正在寻找关于核心设计本身的任何输入,如果有任何我在这里遗漏的东西可能会导致问题。该图像不包括诸如以下项目的附加查找表;国家、电话打字机等我有点担心我过度规范化了它,从长远来看,这会使查询变得更加复杂。任何意见表示赞赏。

更新 - 2016 年 12 月 13 日

从那以后,我在我的结构中创建了一个名为实体的父类(super class),它帮助我将所有 3 个合并为一个。我仍在处理其余部分,因为它今天已经增长了很多,所以再次感谢任何意见。

enter image description here

最佳答案

我看图表的第一印象是您过度规范化了数据(除非那是您的目标)。

考虑公司 <-> 您建立的电话关系:-

CompanyTelephone Relationship

创建这样的关系:

  • A Company can have one to many Telephone Numbers
  • A Telephone Number can belong to one to many Companies

评估一下;在您的结构中,一个电话号码是否可能被多个公司共享? (现实世界表明它不会)

在此基础上展开,我相信您选择本类(class)的主要原因可能是允许相同的电话号码适用于一个或多个联系人以及一家公司?

就我个人而言,根据我的经验,从开发的角度来看,我建议重复数据(电话号码)可能更容易维护和管理。这将使您的数据结构和应用程序逻辑不那么复杂,并且应该减少搜索对系统的负担。

但是,这也意味着您最终可能会得到陈旧的数据,例如,如果您的所有联系人都使用公司电话号码并且公司号码已更新,那么所有联系人数据现在也需要更新。

从应用程序的角度来看,一种解决方法是显示公司编号和公司联系人,这样您就不需要重复数据。

这是这种关系的非规范化 View 的示例:

Example

您也可以将此应用于电子邮件地址,其中适用相同的概念。

关于SQL - 联系人、公司数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41092550/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com