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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库关系直接与外键的间接引用相关的知识,希望对你有一定的参考价值。

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

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

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

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

答案

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

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

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

以上是关于数据库关系直接与外键的间接引用的主要内容,如果未能解决你的问题,请参考以下文章

数据库中的主键与外键的关系

关系与外键约束

数据库中 主键与外键的区别?

sql server的主键与外键问题

SQL怎么在有外键的主键表中插数据

sql用命令创建主键与外键。