我有树表,其中两个与第三表有很多关系。现在我想知道我是否将这种关系合并在一起并为这种关系创建一个关系表是不好的做法?
我认为这个设计可以使我的关系和操作更容易管理和更容易理解。但我担心表现。 我想知道哪种方式有更好的性能?
共享中间表我添加了它的图片或为每个关系创建一个中间表?
答案 0 :(得分:2)
复杂的交汇点本身并不坏。 prescriptions
表格中的一行可能包含doctor_id
,patient_id
和pharmacy_id
值。这是有效的,因为一个处方代表了医生,患者和药房的汇合(加上一些其他信息可以被纳入更相关的表格中)。重要的是处方只能用几个外键表示。
你所拥有的是不同的。您正在描述tbl_1
中的行可以与tbl_2
或 tbl_3
相关联的情况,具体取决于rel_type
的值。多个rel_type
可以实现多个连接。 此不好,因为您无法在tbl_x_id
上创建可强制执行的外键约束。乍一看它可能看起来更简单,因为它只有一个联结表,但它隐藏了很多复杂性,后来会受到伤害。它会表现得更糟,但真正的问题是缺乏参照完整性。