在一个关系表中合并两个多对多关系比分离关系更好吗?

时间:2018-02-04 17:26:20

标签: mysql database database-design

我有树表,其中两个与第三表有很多关系。现在我想知道我是否将这种关系合并在一起并为这种关系创建一个关系表是不好的做法? merge two many2many relation together

我认为这个设计可以使我的关系和操作更容易管理和更容易理解。但我担心表现。 我想知道哪种方式有更好的性能?

共享中间表我添加了它的图片或为每个关系创建一个中间表?

1 个答案:

答案 0 :(得分:2)

复杂的交汇点本身并不坏。 prescriptions表格中的一行可能包含doctor_idpatient_idpharmacy_id值。这是有效的,因为一个处方代表了医生,患者和药房的汇合(加上一些其他信息可以被纳入更相关的表格中)。重要的是处方只能用几个外键表示。

你所拥有的是不同的。您正在描述tbl_1中的行可以与tbl_2 tbl_3相关联的情况,具体取决于rel_type的值。多个rel_type可以实现多个连接。 不好,因为您无法在tbl_x_id上创建可强制执行的外键约束。乍一看它可能看起来更简单,因为它只有一个联结表,但它隐藏了很多复杂性,后来会受到伤害。它会表现得更糟,但真正的问题是缺乏参照完整性。