我有三张桌子:书,萨格斯和宇宙。书籍使用idSaga作为外键。Sagas使用idUniverse作为外键。
它们都是一对多的关系。
一本书可以是一个传奇故事的一部分,也可以是一个更大宇宙的一部分;例如:戒指的领主和戒指的联姻是LOTR传奇的第一部,而LOTR是在传奇的宇宙中。
我该怎么称呼一本像霍比特人这样的书呢?它不是任何传奇的一部分,而是传奇宇宙的一部分。
我不想在表簿中添加一个新字段(对于外键),它看起来像是破坏了规范化。增加一个新的表格,书籍和宇宙之间的关系看起来有点过分。
发布于 2021-12-06 04:16:27
我不想在表簿中添加一个新字段(对于外键),它看起来像是破坏了规范化。
这正是我会做的。我不知道你所说的“看起来像是打破正常化”是什么意思,但对我来说,这似乎很理想,因为书中的->宇宙关系可能是有用的。
例如,假设您有一个新特性,您希望计算给定宇宙中的所有书籍。如果books
表中没有外键,则必须查询sagas
表以获取与sagas无关的信息。
通过排除此外键,您将限制今后使用此关系的选项。
总之,我想说:
Books M:1 Saga
Books M:1 Universe
Saga M:1 Universe
我也同意另一个答案,那就是,在某些情况下,一本书可能存在于多个宇宙,但这取决于你是否允许这样做:)
https://stackoverflow.com/questions/70240680
复制相似问题