构建联系人数据库 - 需要一点架构灵感

时间:2009-12-02 20:21:02

标签: database-design street-address

我一直在为我正在处理的应用程序布局数据结构。需要处理的一件事是存储客户/联系信息。我一直在研究一些不同的联系信息程序的界面,如地址簿,Gmail联系人等。

我基本上将联系人归结为“实体”(个人,公司,角色等)。

  • 每个实体可以有多个地址电话电子邮件条目。
    • 每个都定义了“关系”(家庭/工作/助理等)
    • 实体 {1} - {relationship} - > {0 .. *} 数据
  • 实体可以有多个字段,这些字段是其他“通用”数据(生日,AIM帐户等)的自由格式数据存储
    • 实体 {1} - {fieldName} - > {0 .. *} 字段数据
  • 实体可以链接到其他实体,例如员工配偶
    • 实体 {0 .. }< - {relationship} - > {0 .. } 实体

有没有人做过类似联系人数据库的SQL实现?任何洞察/建议/陷阱,以避免你可以与试图在这个项目上工作的人分享?我所描述的内容是否合理或过于复杂?

有一个问题,假设您有4个人都在为同一家公司工作。它们都具有相同的“工作”电话号码(可能具有不同的扩展名) - 如果“工作”的号码或地址发生变化,我希望能够相当容易地更新联系人。现在很多都归结为如何使用数据库。我认为这成为将员工与各自公司实体联系起来的问题,但地址/电话号码不再直接与员工联系。我有点争论实现实体/数据关系,允许您将相同的邮寄地址/电话号码附加到多个人,并在一个地方更新它可以在所有地方更新它。我只是在想这个吗? 拉出头发

4 个答案:

答案 0 :(得分:14)

这有点陈旧,但在开始思考表格之前,你需要知道你的数据以及你将要做些什么。

我建议在实际实现任何表之前,先查看Object Role Modeling(或this)以简单的英语定义模型。我使用这个VS插件:NORMA,它也会为你生成一个模式。

或者,有一堆data models here可能会激励你。 这是“联系人管理”,但还有其他一些,例如“客户”部分

(我只想张贴图片..) Contact Management
(来源:databaseanswers.org

答案 1 :(得分:4)

这只是为了帮助解决你的第二个问题;电话分机实际上属于个人与公司实体之间的关系。

contact_model_01

答案 2 :(得分:2)

Microsoft提供了许多入门数据库模式,包括资产维护,联系人管理,客户和订单,文档管理,电子商务,帮助台,问题跟踪软件,零售库存控制和产品目录。请参阅Starter Database Schemas


编辑 (2016年4月):微软网站管理员似乎打破了链接。这是页面的Wayback Machine archive

答案 3 :(得分:1)

根据我的经验,有几点往往会突然出现......

考虑互惠关系。例如,如果有人被定义为公司的雇员,那么公司就是那个人的雇主。

您是将地址视为自身的实体,还是仅仅考虑与某个人/地方相关的自由文本?在某些应用程序中,地址(物理构建等)是“真实的”,表中只能存在一个。 (经常使用政府/邮政标识符)。