代码之家  ›  专栏  ›  技术社区  ›  gnarf

建立一个联系人数据库-需要一些模式灵感

  •  12
  • gnarf  · 技术社区  · 15 年前

    我一直在为我正在开发的应用程序设计数据结构。它需要处理的事情之一是存储客户/联系信息。我一直在研究一些不同的联系人信息程序的接口,如通讯录、Gmail联系人等。

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

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

    有人做过类似联系人数据库的SQL实现吗?有什么见解/建议/陷阱可以避免,你可以和一个试图自己在这里工作的人分享吗?我所描述的是合理的还是过于复杂的?

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

    4 回复  |  直到 8 年前
        1
  •  14
  •   gbn    15 年前

    这有点老套,但在开始考虑表格之前,你需要知道你的数据以及你将如何处理它。

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

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

    (我只是想贴一张图片…) Contact Management http://www.databaseanswers.org/data_models/contact_management/images/contact_management_model.gif

        2
  •  4
  •   Damir Sudarevic    8 年前

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

    contact_model_01

        3
  •  2
  •   jww    8 年前

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


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

        4
  •  1
  •   Garry    15 年前

    在我的经验中,有几点会突然出现。

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

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