数据库关系直接与外键的间接引用
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中包含该列。如果销售由许多交易组成,那将尤其如此,但我认为您的数据模型是另一种方式。
根据你的说法,通过联接查找价值听起来非常合理。这会影响性能,但通过正确的索引,查询应该没问题。
以上是关于数据库关系直接与外键的间接引用的主要内容,如果未能解决你的问题,请参考以下文章