数据库关系直接与外键的间接引用

问题描述 投票:0回答:1

我在名为Users,Deals和Sales的MySql DB中有3个表。现在Users表与Deals表有一对多的关系,Deals表与Sales表有一对多的关系。

现在我没有在用户和销售之间设置任何直接的一对多关系(但它们已经通过外键deal_id(销售) - > user_id(交易) - >用户间接引用。所以如果我想搜索用户的销售,我可以轻松运行连接查询并通过user_id获取Sales。

我还可以通过将user_id外键放在Sales表中来创建User和Sale之间的直接一对多关系。

现在从良好的实践和/或绩效的角度来看哪种方法更好?

mysql sql foreign-keys
1个回答
0
投票

这取决于实际关系。如果sales真的依赖于deals,那么你可以从那里查找用户。例如,如果sales真的是deals的子类型,那将是真的。或者,如果用户由于某种原因在deal上更改,它会自动更改为相应的sale吗?

但是,如果sales是一个独立实体并且与users有关系,那么你会想要在`sales中包含该列。如果销售由许多交易组成,那将尤其如此,但我认为您的数据模型是另一种方式。

根据你的说法,通过联接查找价值听起来非常合理。这会影响性能,但通过正确的索引,查询应该没问题。

© www.soinside.com 2019 - 2024. All rights reserved.