如何通过关系代数表达参照完整性约束?

Posted

技术标签:

【中文标题】如何通过关系代数表达参照完整性约束?【英文标题】:How can a referential integrity constraint be expressed through relational algebra? 【发布时间】:2021-12-19 15:19:12 【问题描述】:

为数据库设计中的参照完整性约束编写代数关​​系表达式是什么意思?

【问题讨论】:

首先:完整性约束是什么意思?它的叶/终端表达式是什么?关系代数表达式返回什么?它的叶/终端表达式是什么?您将如何使用表格来说明是或否? PSWhat is the equivalent, in Relational Algebra, of a SQL Table Relationship? 什么意思,“什么意思”?你是想问怎么做吗?或者你有没有举过一个据称正在做某事而你不理解的例子?或者您是否被告知要做某事,但不了解您被告知的内容或如何完成?还是什么? expressing constraints in relational algebra 【参考方案1】:

简短回答:一般来说无法表达。

但也许您想到了一种不太一般的情况?

更长的答案:关系代数有很多变体。也许有些是为了表达约束而设计的;但更常见的(尤其是 Codd 1972)不是。

您需要一个构造来返回布尔值(是/否,此数据库内容符合约束)。而大多数代数旨在返回关系值。

或者你需要一个约定,(比如说)一个空的结果意味着“有效”——假设一个完全空的数据库是有效的;但是有些限制使得完全空的数据库无效;那么您就必须编造一个非空结果,这会使您的查询“依赖于域”,而 Codd 竭力避免这种情况。

【讨论】:

不清楚破折号后面的内容是什么意思。但考虑到它正在说的一些事情,也许试图说,目前尚不清楚它为什么在那里。数据库上的约束不会阻止通过空或非查询来表达约束。在构造约束的相应查询后,您不需要“构造非空结果”;每当约束失败时,查询将根据给出的无效状态“构造一个非空结果”。 (授予约束和查询语言必须具有适当相似的表达能力。)

以上是关于如何通过关系代数表达参照完整性约束?的主要内容,如果未能解决你的问题,请参考以下文章

关系数据库系统

oracle入门数据完整性约束

数据完整性约束——实体完整性参照完整性

关系模型的完整性约束

完整性约束

参照完整性-外键约束