Table 具有 4-table 循环引用的完整性
Table integrity with 4-table circular references
以下用例时不时地困扰着我,它总是让我恼火,因为我真的不知道解决这个问题的方法。最近又遇到了:
- An
object
has 0 or more objectProperties
;
- an
object
is used in 1 or more operations
;
- some of the
operations
use 1 or more objectProperties
of the object
they are operating on (0 or more relation);
- an
objectProperty
will be used in 1 or more operations
.
这导致我进行以下数据库设计:
注意:table名字是为了说明问题而编造的
我的问题是:
- 此数据库设计对于所述用例是否正确?
- 是否有任何方法可以强制使用数据库引擎中描述的用例的参照完整性*?
*) 我可以在我的应用程序代码中强制执行此规则,但我觉得它相当脆弱,所以我宁愿看到数据模型中的约束强制执行的完整性,如果可能的话。
您的图表正确地表示了规定的要求。
要强制引用完整性,您可以将 objectId
添加到 operationUsingObjectProperty
table。然后,您可以在 objectId, objectPropertyId
和 objectId, operationId
.
上创建复合外键约束
以下用例时不时地困扰着我,它总是让我恼火,因为我真的不知道解决这个问题的方法。最近又遇到了:
- An
object
has 0 or moreobjectProperties
;- an
object
is used in 1 or moreoperations
;- some of the
operations
use 1 or moreobjectProperties
of theobject
they are operating on (0 or more relation);- an
objectProperty
will be used in 1 or moreoperations
.
这导致我进行以下数据库设计:
注意:table名字是为了说明问题而编造的
我的问题是:
- 此数据库设计对于所述用例是否正确?
- 是否有任何方法可以强制使用数据库引擎中描述的用例的参照完整性*?
*) 我可以在我的应用程序代码中强制执行此规则,但我觉得它相当脆弱,所以我宁愿看到数据模型中的约束强制执行的完整性,如果可能的话。
您的图表正确地表示了规定的要求。
要强制引用完整性,您可以将 objectId
添加到 operationUsingObjectProperty
table。然后,您可以在 objectId, objectPropertyId
和 objectId, operationId
.