在关系代数中表达约束

时间:2015-02-11 14:46:56

标签: relational-algebra

我需要在关系代数中表达这种约束:

我有一些表,其中一列包含所有可能的值:ALL_VAL

和包含来自ALL_VAL的一些值的表格,这些值不符合规则:NOT_FIT_VAL

我可以计算FIT_VAL = ALL_VAL - NOT_FIT_VAL

我需要的是一个约束:在FIT_VAL中至少有一个项目。

我使用与空组不等号:

ALL_VAL,

NOT_FIT_VAL

FIT_VAL = ALL_VAL - NOT_FIT_VAL

FIT_VAL<> {空}

但我不确定在关系代数中是否允许<>(不等于) 没有一本书或文章显示示例或说我可以使用它。

我想对此进行一些澄清,以及正确的表达方式。 谢谢

1 个答案:

答案 0 :(得分:1)

严格地说,表达式" FIT_VAL<> {空}"不是关系表达式(它不产生关系,而是产生真值),因此将这些表达式视为"有效的关系代数表达式"。

是有点问题的。

但严格来说,我并不知道你的教科书在这方面削减了读者/用户的余量。根据"严格来说"方法,使用关系代数来定义约束甚至是不可能的,因为约束的定义必须几乎按照定义产生布尔结果(数据库是否满足)。这可能就是为什么看到用于表达/定义数据库约束的关系代数非常特殊的原因!

使用关系代数定义数据库约束的另一种方法是定义一个扮演" fault表达"的角色的关系表达式。然后隐含地,默认地假设规则是评估此表达式的结果必须始终为空。但那个(AFAIK)是我的完全私人的方法,如果你也在教科书中找到它,我会感到惊讶。

相关问题