我的 MySql 数据库中有 3 个表,分别名为“用户”、“交易”和“销售”。现在,Users 表与 Deals 表具有一对多关系,Deals 表与 Sales 表具有一对多关系。
现在我没有在用户和销售之间设置任何直接的一对多关系(但它们已经通过外键 deal_id(Sales)-> user_id(Deals)->User 间接引用。所以如果我想搜索销售通过用户,我可以轻松地运行联接查询并通过 user_id 获取销售额。
我还可以通过将 user_id 外键放入 Sales 表中来在 User 和 Sale 之间创建直接的一对多关系。
现在从良好实践和/或性能的角度来看哪种方法更好?
最佳答案
这取决于实际关系。如果销售
确实取决于交易
,那么您可以从那里查找用户。例如,如果sales
确实是deals
的子类型,则情况就是如此。或者,如果用户因某种原因更改了交易
,那么相应的促销
会自动更改吗?
但是,如果 sales
是一个独立的实体,并且与 users
存在关系,那么您需要将该列包含在“sales”中。如果一次销售由许多交易组成,则尤其如此,但我认为您的数据模型是相反的。
根据你的说法,通过连接查找值听起来很合理。这会影响性能,但通过正确的索引,查询应该没问题。
关于mysql - 数据库关系 外键的直接引用与间接引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54770460/