假设您有以下架构。
用户有很多部门,(fk user_I'd)
每个部门都有很多办公室(fk department_I'd)
每个办公室都有很多交易(遇到)(fk office_id)
现在的问题是,如果我想获得某个用户的所有遭遇,我将需要搜索该用户的部门 offices 中的所有 encoutets。
你不觉得有很多联接吗?
然而,如果我在 encounter 表中包含树的所有外键?然后我可以select * from encounters where user_I'd = X
然而,这让我的表格看起来很难看,并且包含大量重复的父数据!
所以我的问题是,在这种情况下,最佳做法是什么? 更多 fk 或更少并使用连接?
最佳答案
当我设计我的表时,我通常不会做任何冗余,而是将多个连接的复杂性保留在服务器端代码的服务层中。当您以后想要更改设计时,它可以提供更大的灵 active 。
这可能是宗教问题而不是纯粹的逻辑问题,因此您可能需要更多此类答案才能做出决定。
关于mysql - 数据建模,我应该使用多少 fk?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21815027/