gpt4 book ai didi

mysql - 外键困境

转载 作者:行者123 更新时间:2023-11-29 10:50:06 24 4
gpt4 key购买 nike

大家好,我遇到了外键困境。假设我们有表 A、表 B 和表 C。

表 A 是 super 表 B 的子表,记录通过 id 上的外键从 A 到 B 连接(单向)。现在表 C 包含可应用于 A 和 B 的信息。我知道将这些信息放在表 B 上会派上用场,但我不确定表 A,从技术上讲,这些信息也可能属于表 A。

现在我的问题是,让表A通过其在表B中的父行访问表C中的信息,或者从表A到表C并直接引用表C建立一个“快捷方式”会更好吗?

要简化这两个选项:

选项1:表A引用表B + 表B引用表C

选项2:表A引用表B+表B引用表C+表A引用表C

由于选项 1 中的相同信息仅在一张表之外,因此执行选项 2 有什么好处吗?

最佳答案

外键

  • 隐式生成的索引(为了性能)和
  • 约束(为了数据完整性);

FK 只是间接地“引用另一个表的方式”。所以,我希望你简单地谈论专栏。 (任何列都可以用于“引用”任何其他表。)

众多教科书原则之一是 DRY——不要重复自己。这是一个明智的原则,因为最终会出现问题并且重复的数据会变得不一致。从 A 到 C 的额外链接是多余的。

另一方面,在巨大的数据集中,为了提供所需的性能而违反了各种教科书原则。 (我所说的“巨大”是指数十亿行,也许是数百万行,但不是数千行。)

由于您似乎才刚刚开始,我建议您在遇到问题时不要走捷径并担心性能。是的,需要额外的 JOIN

对于新手来说,性能问题通常很快就会出现,但并不是因为缺乏捷径;还有许多其他的教训需要首先学习。提示:了解“复合索引”;我认为这是初学者无法学习的第一大演奏技巧。 (关注 FK 会分散对 INDEX 的关注。)

关于mysql - 外键困境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43885395/

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