14

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

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

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

有没有人做过类似联系人数据库的任何 SQL 实现?有什么见解/建议/陷阱可以避免您可以在这里与尝试自己从事项目的人分享吗?我所描述的是否合理或过于复杂?

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

4

4 回答 4

16

这有点陈词滥调,但在开始思考表格之前,您需要了解您的数据以及您将如何处理这些数据。

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

或者,这里有一堆数据模型可能会启发你。这是“联系人管理”,但还有其他内容,例如“客户”部分

(我只是想发布一张图片..) (来源:databaseanswers.org联系人管理

于 2009-12-02T20:26:14.903 回答
4

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

联系模型_01

于 2009-12-02T23:22:14.147 回答
2

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


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

于 2011-12-25T05:12:27.177 回答
1

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

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

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

于 2009-12-02T20:49:37.647 回答