如何设计对具有添加关系的单个数据库表的循环引用?

发布于 2024-08-12 06:49:55 字数 169 浏览 7 评论 0原文

我不确定如何最好地表达这个问题,但本质上我有一个联系人表,而不是执行典型的操作 - 联系人引用包含配偶信息的表和包含孩子的表,我想要每个将这些人作为联系人,然后定义这些联系人之间的关系(兄弟、姐妹、孩子、配偶等)。因此,联系人将存在于单个表中,但我无法确定如何根据联系人 ID 和关系类型最好地定义关系。任何建议将不胜感激。

I'm not sure how best to phrase the question, but essentially I have a table of contacts, and instead of doing the typical -- a contact has a reference to a table with spouse information, and a table with children, I want each of those people to be a contact, but then define a relationship between those contacts (brother, sister, child, spouse, etc.). So the contacts would exist in a single table, but I'm having trouble determining how best to define the relationship based upon their contact id and the relationship type. Any advice would be appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

烟沫凡尘 2024-08-19 06:49:55

CONTACTS

  • contact_id,pk

CONTACT_RELATIONSHIP_TYPE_CODE

  • contact_relationship_type_code,pk
  • description

CONTACTS_RELATIONS

  • parent_contact_id,pk,CONTACTS 的外键 表
  • child_contact_id,pk,CONTACTS 的外键表
  • contact_relationship_type_codeCONTACT_RELATIONSHIP_TYPE_CODE 表的外键

如果您认为需要支持一对人的多种关系类型,请添加 CONTACTS_RELATIONS.contact_relationship_type_code列到复合主键

CONTACTS table

  • contact_id, pk

CONTACT_RELATIONSHIP_TYPE_CODE table

  • contact_relationship_type_code, pk
  • description

CONTACTS_RELATIONS table

  • parent_contact_id, pk, foreign key to CONTACTS table
  • child_contact_id, pk, foreign key to CONTACTS table
  • contact_relationship_type_code, foreign key to CONTACT_RELATIONSHIP_TYPE_CODE table

If you see the need to support multiple relationship types to a pair of people, add the CONTACTS_RELATIONS.contact_relationship_type_code column to the composite primary key

烈酒灼喉 2024-08-19 06:49:55

这称为自连接,它非常常见并且相当容易提供您上面提到的功能。请查看这篇文章

This is called a self join, it is pretty common and fairly easy to provide the functionallity you mention above. Take a look at this article.

゛时过境迁 2024-08-19 06:49:55

只需实现一个包含四列的相交表 - key、c​​ontactid #1、contact id#2 和关系。

为什么要这样做呢?因为一个联系人可以有多个关系。

Just implement an intersect table with four columns - key, contactid #1, contact id#2, and relationship.

Why do it this way? Because a contact can have several relationships.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文