gpt4 book ai didi

database-design - 多对多关系

转载 作者:行者123 更新时间:2023-12-04 17:28:50 25 4
gpt4 key购买 nike

我有一个客户和经理,两个独立的表。我的客户表有近亿条记录,而经理表有 100 条记录。现在我可以将客户映射到经理。规则如下

  • 一个经理可以有多个客户。
  • 一个客户可能会映射到多个经理。

  • 解决这个问题的最佳数据库设计是什么?创建有能力的 ManagerCustomerMapping 是一种想法。但我对此并不满意。因为这给我带来了一张非常大的 table 。例如。如果 Manager1 和 Manager2 映射了所有客户,则该表有 2 亿条记录。

    最佳答案

    尽管您有疑虑,但最好的数据库设计正是您所描述的。换句话说,有一个映射表 ManagerCustomerMapping .

    当且仅当存在无法通过其他方式解决的实际性能问题时,始终从 3NF 开始并进行修改。

    如果您的业务和看起来一样大(拥有 1 亿客户),磁盘存储应该不是问题,映射表的正确索引应该可以缓解任何性能问题。

    是的,如果每个客户都映射到两个不同的经理,您将拥有 2 亿条记录。那不是问题。在我工作的那种商店(System z 上的 DB2)中,这是一张中等大小的表。

    SQL 的美妙之处在于,如果 DBMS 性能不够好,您几乎可以更换它。

    两亿行的两个 ID 列对于普通数据库来说不会是繁重的,这是最好的方法,特别是如果可能没有将客户分配给经理(反之亦然)。在这种情况下,任何其他尝试将客户 ID 放入经理表(或将经理 ID 放入客户表)的解决方案都将浪费空间。

    关于database-design - 多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1672009/

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