gpt4 book ai didi

sql - MYSQL 中多态关联的最佳实践

转载 作者:搜寻专家 更新时间:2023-10-30 19:42:53 24 4
gpt4 key购买 nike

我有一个包含表的数据库:客户 (client_id)公司 (company_id)

客户和公司都可以有地址 (address_id),存储在地址表中。

更好的做法是:

  1. 有 2 个链接到公司和地址的额外表格:

    clients(client_id)
    client_addresses(client_id, address_id)
    companies(company_id)
    company_addresses(company_id, address_id)
    addresses (address_id)
  2. 有一个表 entities,它有一个主键 entity_id 用于链接所有 3 个表:

    entities(entity_id)
    clients(client_id, entity_id)
    companies(company_id, entity_id)
    addresses (address_id, entity_id)

最佳答案

还有另一种选择。客户和公司可以被视为更通用实体的子类(或者,如果您愿意,子类型),可以称为联系人。客户是联系人,公司是联系人。我将跳过联系人是否既可以是客户也可以是公司。如果您选择以这种方式建模,您将面临一个问题,因为关系模型中缺少继承(更不用说多态性)。有几种方法可以解决这个问题,许多人已经实现并取得了一些不错的效果。您可以在 SO 中的三个标签中看到这些技术概述:

最后一种技术与第二种技术结合使用。

除了追查每个标签中的信息和问题之外,您还可以在网络上做进一步的研究。

关于sql - MYSQL 中多态关联的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35716497/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com