【问题标题】:Should I break normalisation rules and add an additional FK我是否应该打破规范化规则并添加一个额外的 FK
【发布时间】:2018-04-18 02:18:31
【问题描述】:

在 MySQL 中,我有许多相关的表:

  • tableA在tableB中有很多行
  • tableB在tableC中有很多行
  • tableC在tableD中有很多行

我需要定期从 tableA 遍历到 tableD,例如在列出 tableA 中的记录以及 tableD 中相关记录的计数时。这将导致繁琐的代码和潜在的性能瓶颈。

另一种方法是在 tableD 中创建一个 FK,该 FK 引用回 tableA。严格来说,这将是一个冗余键,但我认为我可以很容易地管理对值的更新(以避免数据完整性问题)。我认为性能提升会很显着,代码也会更易读。

我这样做是不是要进入一个痛苦的世界?或者它是在其他地方看到的模式?我打算给密钥贴上标签,以便清楚地表明它只是为了方便,而不是规范参考。

【问题讨论】:

    标签: mysql sql database foreign-keys relational-database


    【解决方案1】:

    这不是您通常会做的事情。在tableBtableC 上使用正确的索引,连接的性能应该足够好。

    如果您发现这还不够,那么您应该尝试更多英勇的措施——例如复制外键。在这种情况下,我认为没有理由在出现任何性能问题之前过早地优化数据库。

    【讨论】:

      猜你喜欢
      • 2016-11-12
      • 2011-01-05
      • 2018-07-08
      • 1970-01-01
      • 2017-09-12
      • 1970-01-01
      • 2011-07-17
      • 2016-02-23
      • 2013-12-25
      相关资源
      最近更新 更多