我应该打破规范化规则并添加一个额外的fk吗

0s0u357o  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(273)

在mysql中,我有许多相关的表:
表A在表B中有许多行
表B在表C中有许多行
tablec在tabled中有许多行
我需要非常有规律地从一个表遍历到另一个表,例如在列出表中的记录以及表中相关记录的计数时。这将导致繁琐的代码和潜在的性能瓶颈。
另一种方法是在tabled中创建一个引用tabla的fk。严格地说,这是一个冗余键,但我认为我可以很容易地管理对值的更新(以避免数据完整性问题)。我认为性能的提高将是显著的,代码将更具可读性。
我这样做是不是要进入一个痛苦的世界?还是其他地方的模式?我计划给钥匙贴上标签,这样很明显,这只是一种方便,而不是规范性的参考。

0pizxfdo

0pizxfdo1#

这不是你通常会做的事情。打开正确的索引 tableB 以及 tableC ,连接的性能应该足够好。
如果您发现这还不够,那么您应该尝试更大胆的措施——例如复制外键。在这种情况下,即使在出现任何性能问题之前,我也没有理由过早地优化数据库。

相关问题