【问题标题】:is it ok to have "short-cut" references to jump over table relations?是否可以使用“快捷方式”引用来跳过表关系?
【发布时间】:2011-08-07 20:08:24
【问题描述】:

抱歉标题

我有以下关系,一个盒子属于一个插槽,属于一个机架,属于一个冰箱。反过来说,冰箱有很多架子,有很多插槽,有一个盒子。

对于某些操作,无需知道盒子在冰箱内的位置。如果我有从盒子到冰箱的捷径,它会简化一些查询。

盒子表中有冰箱的外键是不是很糟糕,如果是,为什么?

【问题讨论】:

    标签: database-design foreign-key-relationship relationship


    【解决方案1】:

    这可能取决于关系的更新频率。如果关系可能经常更改,那么您将不得不在多个位置更新关系的开销。这也可能使事情变得更加困难,因为如果您更改一个,您必须确保所有出现的事件都得到更新。

    但是,如果这些值不会经常更改,那么它似乎可以使您的查询更快。

    This 看起来是一个很好的数据库规范化示例,他们使用的示例与您的非常接近。如果您对规范化感兴趣,Wikipedia 关于这方面的文章非常好。

    【讨论】:

    • 如果您使用的数据库支持约束的参照完整性强制执行,那么该数据库将帮助您避免忘记更新非规范化表中的外父键的编程代码。
    • 是的,我同意。虽然我没有看到问题中使用的数据库类型,所以我只包括在内,因为它是您需要以一种或另一种形式考虑的额外内容。
    • 感谢您的回答和 cmets。我应该提到我正在使用 MySQL。
    【解决方案2】:

    通过在两个不同的地方记录冰箱与盒子的关联,您就有可能产生矛盾。因此,您要么必须创建额外的约束逻辑以确保冗余数据一致,要么接受数据可能有误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-16
      • 1970-01-01
      • 1970-01-01
      • 2022-10-25
      • 1970-01-01
      • 2016-12-06
      • 1970-01-01
      相关资源
      最近更新 更多