由于以前来自某些Stackers的帮助,我差点就有这种设计。
前提在现实世界中很简单。
Product有一个ProductType,而ProductType又有一个ProductTypeGroup;
产品具有属性,而属性又具有AttributeGroup。
桥接表确保可以将AttributeGroup分配给特定的ProductGroups,并且可以将Attributes分配给特定的ProductTypes。两个桥接表之间也存在完整性。
但是,我仍然可以添加孤立属性(桥接表中不存在的属性)作为ProductAttributes。这需要固定,以便属性必须正确地与Product本身上设置的ProductType相关联,并且应该约束任何孤立或不匹配的属性。
我再次转向'触发'(我的解决方案,我无法做任何工作),但鉴于我们已经建立了很多关系,也可以使用我们的方法来实现结果得到或以修改过的形式。
由于我不是经验丰富的SQL专业人士,甚至也不是经验丰富的新手,我发现很难看到一个可行的模式,所以会欣赏一双专家的眼睛。
提前致谢。
更新:我现在知道孤立属性可以使用ProductTypes_Attributes_ProductAttributes之间的键来约束,但不解决不匹配的属性方案。
答案 0 :(得分:0)
这是一个非常开放的问题,如果我整天都很喜欢从头开始重新建模(不是说我必然会想出一个不同的方法,但我喜欢这个练习)。但是我没有一整天,所以我想这会给你你想要的东西。
我没有对此进行编码以进行测试,但它似乎正好在我脑海中。它是否对您有所帮助可能取决于您的ORM是否喜欢它。