mysql - 数据建模,我应该使用多少 fk?

标签 mysql database database-design backbone-relational

假设您有以下架构。

用户有很多部门,(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/

相关文章:

database - 这是数据库的良好设计吗?

mysql - Sea Quail 生成的 MySQL SQL 数据导致 #1064 SQL 错误

php - 如何根据先前插入的 id 添加到表 - mysqli_insert_id 存在问题

php - 删除多个字段失败

MySQL REGEXP 3次重复字符

sql - Oracle - 创建更新另一个表的触发器时出现问题

sql - 是否可以在每个唱片标签上使用 PG 序列?

mysql - 包含可排列记录的表

java - 无法连接到 .NET 中的远程 MySQL (MariaDB) 数据库,但可以使用 Java

mysql - 选择与给定值相反的列