gpt4 book ai didi

mysql - 表链,何时去规范化?

转载 作者:可可西里 更新时间:2023-11-01 07:59:59 27 4
gpt4 key购买 nike

假设 TABLE-A 在 TABLE-B 中可以有一行或多行,在 TABLE-C 中可以有一行或多行,在 TABLE-D 中可以有一行或多行......等等。

假设我在 TABLE-Z 并且需要了解有关 TABLE-A 的详细信息。我是否创建了从 TABLE-Z 一直到 TABLE-A 的 SQL 查询?在某些时候,如果 TABLE-Z 有一个 FK 到 TABLE-A 这样查询就不会那么痛苦,也许会很好。但是,如果我放那个 FK,我想我会破坏规范化,对吧?

关于如何处理这个问题的一般建议?

最佳答案

如果您使用复合主键(如果您在创建任何表之前对设计进行了正确的建模,实际上会发生这种情况),那么 TableA 中的键已经包含在 TableZ 中(作为最左边的列)。

但是,人们通常会在不理解原因 的情况下添加代理键。所以这个你需要连接所有26个表来建立TableA和TableZ之间的链接

TableA 和 TableZ 之间的额外 FK 可能与某些中间外键冲突;:这就是非规范化(或非规范化)数据具有固有风险并应谨慎使用的原因。

但是,您通常不会有 26 层嵌套表格。使用 2、3 甚至 6 向主键意味着我可以在没有任何中间表的情况下将 TableA 连接到 TableF。

就个人而言,我会使用复合键并避免额外的 FK,除非我有一个已知的、可重现的和可证明的瓶颈。大多数数据库不会注意到任何差异..所以不要优化

关于mysql - 表链,何时去规范化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8500867/

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