Database design “可以吗?”;捷径;跳转表关系的引用?

Database design “可以吗?”;捷径;跳转表关系的引用?,database-design,foreign-key-relationship,relationship,Database Design,Foreign Key Relationship,Relationship,对不起,这个标题 我有下面的关系,一个盒子属于一个插槽,它属于一个架子,它属于一个冰箱。另一方面,冰箱有很多架子,有很多插槽,有一个盒子 对于某些操作,不需要知道冰箱内的盒子位置。如果我有一条从盒子到冰箱的捷径,它将简化一些查询 在桌子的盒子里放一把冰箱的外键是不是很糟糕?如果是,为什么 这可能取决于关系更新的频率。如果关系可能频繁更改,那么您将不得不在多个位置更新关系。这也会使事情变得稍微困难一些,因为如果您更改了一个事件,您必须确保所有事件都已更新 但是,如果这些值不会经常更改,那么似乎可以

对不起,这个标题

我有下面的关系,一个盒子属于一个插槽,它属于一个架子,它属于一个冰箱。另一方面,冰箱有很多架子,有很多插槽,有一个盒子

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


在桌子的盒子里放一把冰箱的外键是不是很糟糕?如果是,为什么

这可能取决于关系更新的频率。如果关系可能频繁更改,那么您将不得不在多个位置更新关系。这也会使事情变得稍微困难一些,因为如果您更改了一个事件,您必须确保所有事件都已更新

但是,如果这些值不会经常更改,那么似乎可以加快查询速度


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

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

如果您使用支持约束引用完整性实施的数据库,然后数据库将帮助您避免编程代码忘记更新非规范化表中的外部父键。是的,我同意。虽然我没有看到问题中使用的数据库类型,但我之所以将其包括在内,是因为您需要以某种形式对其进行说明。感谢您的回答和评论。我应该提到我正在使用MySQL。