考虑以下假设情景:
ObjectA 1 - * ObjectB ObjectC 1 - * ObjectB ObjectD 1 - * ObjectB
是否有最佳做法是否要创建以下表格(多个到多个表格)......
对象A 对象B ObjectC ObjectD ObjectA_ObjectB ObjectC_ObjectB ObjectD_ObjectB
...对(具有多个可空列的单个子表)...
对象B ObjectAID(可空) ObjectCID(可空) ObjectDID(可空)
我有一个案例,其中7个以上的对象可以有许多与之关联的ObjectB。
一个注意事项是,个人关系没有什么特别之处(即,没有任何属性,ObjectA和ObjectB之间的关系只有...否则我会直接找到多对多的表格)。
答案 0 :(得分:0)
创建一个包含3列的表:
这样,所有引用都保存在一个表中,并且没有稀疏记录。您可以轻松地从任何对象连接到其注释,也可以从任何注释到其引用对象。这是一个如何工作的简单例子。
Select * from ObjectX as x
Join ObjectBReferences as r
on x.id = r.other_object_id and r.other_object_type = 'X'
Join ObjectB b
on r.object_b_id = b.id
我自己实现了这种确切类型的东西,这是我从我使用过的商业软件中借用的设计模式。它也是rails中使用的标准“多态”方法,例如,和其他框架。