如何确保SQL模式的完整性

时间:2016-04-20 13:47:44

标签: sql sql-server

我在SQL中遇到了一些设计难题 - 并且没有经验丰富的人会欣赏一些建议,以便最好地解决这个问题:

这是我到目前为止所拥有的:

  • ProductGroupMinor与ProductGroupMajor
  • 有1-1关系
  • 桥接表允许类别包含1个或多个ProductGroupMajor'
  • 商品表具有类别ID和ProductGroupMinor

我所挣扎的是如何确保类别 / ProductGroupMinor 组合是有效的。

enter image description here

1 个答案:

答案 0 :(得分:0)

可能但要注意缺点。

即,您可以将ProductGroupMinor(ID + ProductGroupMajorID)声明为UK,这是完全正确的,它是唯一的。然后将FK从Offer提交到此UK并将ProductGroupMajorID迁移到Offer。现在将Offer(CategoryID + ProductGroupMajorID)FK声明为ProductGroupMajor_Category桥接表。这将为您提供防弹的参考完整性。例如,现在没有人可以从桥表中删除某些内容,而在某些商品中引用了这种组合。

但它也会给开发人员带来负担,以跟踪这些额外的关系。例如,如果您需要重新安排产品组,即更改ProductGroupMinor中的ProductGroupMajorID,则它必须是涉及许多表和大量检查的事务。