表完整性与4表循环引用

时间:2016-03-14 20:21:16

标签: database-design relational-database referential-integrity

下面的用例一直困扰着我,它总是让我感到烦恼,我真的不知道解决方案。最近我又遇到了它:

  
      
  • object有0个或更多objectProperties;
  •   
  • object用于1个或多个operations;
  •   
  • operations的一些使用他们正在操作的objectProperties的1个或多个object(0个或更多关系);
  •   
  • objectProperty将用于1个或多个operations
  •   

这引出了以下数据库设计:
circular referential integrity problem erd
注意:表名用于说明问题


我的问题是

  • 此db设计对于所述用例是否正确?
  • 是否有任何方法强制数据库引擎*?
  • 中描述的用例的引用完整性

*)我可以在我的应用程序代码中强制执行此规则,但这让我觉得相当脆弱,所以我宁愿看到我的数据模型中的约束强制执行的完整性,如果可能的话。

1 个答案:

答案 0 :(得分:1)

您的图表正确表示了规定的要求。

要强制引用完整性,您可以将objectId添加到operationUsingObjectProperty表。然后,您可以在objectId, objectPropertyIdobjectId, operationId上创建复合外键约束。