假设我有3个型号:
我问了一个基于我是否应该让每个模型跟踪其关系的问题:SQL relationships and best practices
这个例子就是一个“页面”表,说明其作者是谁......问题似乎是,如果2个用户是这一页的作者,则必须添加一个新的特定表称为PageRelationshipsWithUsers,可能引用了PageID和创建它的UserID,以及共同作者的单独行。
可以理解这听起来有点不对劲。我最终会得到一大堆关系表,最有可能的是,它只能用一个多用途关系表替换......所以我决定想出一个如下的关系表:
关系表新
RelationshipID | ItemID | LinkID | ItemType | LinkType | Status
-----------------------------------------------------------------------------
1 | 23(PageID) | 7(UserID) | ("Page") | ("User") | TRUE
2 | 22(CommentID) | 7(UserID) | ("Comment") | ("User") | TRUE
3 | 22(CommentID) | 23(PageID) | ("Comment") | ("Page") | TRUE
然而,我非常欣赏一些关于这样的想法如何布置我的关系表的意见。
有什么想法吗?
工作同事告诉我答案:
想象一下模型“Book”的上述关系表
用户可以租借书籍,因此关系是用户 - >书... 但如果他也可以买书怎么办:用户 - >预订......
哎呀,我们需要一个新的关系...并且考虑到这个关系表应该是1个大小适合所有,我们现在需要添加一个新的单独表...哎呀。
所以答案是NO NO NO。不,这很顽皮。保持关系表的独立性和特定性。
答案 0 :(得分:2)
由于以下几个原因,您对关系表的建议并不理想:
规范化数据库时,您不应该害怕拥有多个表。只需确保使用有意义的命名约定并自我记录。例如,您可以将作者和页面之间的关系表命名为“PageAuthors”,而不是“Pages”。