考虑表示“大于或等于”的关系geq,即,仅当y> = x时(x,y)∈geq。
create table geq
(
ib integer not null
ub integer not null
primary key 1b
foreign key (ub) references geq on delete cascade
)
如果删除元组(x,y),则可能执行以下哪项操作?
(A)删除z> y的元组(z,w)
(B)删除z> x的元组(z,w)
(C)删除w
说明:在以上问题中,关系模式为(lb,ub),其中lb是主键,而ub是引用其自身关系的主键的外键。
因此,表geq既是主表(具有参考键)又是子表(具有参考键)。
该表有两个约束,一个是如果存在一个元组(x,y),则y大于或等于x,另一个是引用完整性约束,它是外键上级联删除。
on-cascade-delete表示“从另一个表(主表)中删除引用的行,然后从子表中删除”。
Suppose the instance in the given relation is the following:
x y
-----
5 6
4 5
3 4
6 6
现在,如果我们删除元组(5,6),那么元组(4,5)也应该删除(因为元组(4,5)中的5引用了元组(5,6)中的5,而后者不再存在,因此引用元组也应删除),并且随着(4,5)被删除,因此出于相同的原因,元组(3,4)也应删除。
因此,如果删除元组(5,6),则总共必须删除3行。
现在从上述实例可以说,如果(x,y)即(5,6)被删除,则元组(z,w)即(3,4)也将被删除。我们可以在这里看到w