【发布时间】:2013-02-05 16:14:40
【问题描述】:
我正在尝试创建用户有联系人的数据库。我设计了下表,我对关系应该如何的部分感到困惑,因为它看起来应该是一对多的,但它也是多对多的关系。
在数据库中,每个用户都必须有联系人表,联系人是数据库中的其他用户。但是联系人必须属于每个用户。
在这种情况下是什么关系?
【问题讨论】:
标签: database-design entity-relationship
我正在尝试创建用户有联系人的数据库。我设计了下表,我对关系应该如何的部分感到困惑,因为它看起来应该是一对多的,但它也是多对多的关系。
在数据库中,每个用户都必须有联系人表,联系人是数据库中的其他用户。但是联系人必须属于每个用户。
在这种情况下是什么关系?
【问题讨论】:
标签: database-design entity-relationship
这种情况是什么关系?
多对多。
在您的联系人表中,您有一个 owner_id 和一个contact_id。您可以轻松地将这些列称为 user_1_id 和 user_2_id。
使用您的列名,一个contact_id 可以有多个owner_id,一个owner_id 可以有多个contact_id。
Contacts 表上的集群(主)索引是 (owner_id, contact_id)。您还需要在 Contacts 表上定义一个唯一索引 (contact_id, owner_id)。
【讨论】:
联系人是个人,用户也是(而公司是法人)。
一个人可以扮演用户的角色,也可以不扮演。
一个人可以在一段时间内与另一个人建立关系。
party_relationship.type 的示例是“联系人”
【讨论】: