下面第(23)~(24)题基于以下说明:设有如下两个关系,若雇员信息的主键是雇员号,部门信息表的主键是部门号。假设雇员信息表中的工资最低为800(包括800),最高不能超过2000。另外,这里假定DBMS不支持级联删除和级联更新功能。
雇员信息表
雇员号 | 雇员名 | 部门号 | 工资 |
001 | 张山 | 02 | 2000 |
010 | 王宏达 | 01 | 1200 |
056 | 马林生 | 02 | 1000 |
101 | 赵敏 | 04 | 1500 |
部门号 | 部门名 | 主任 |
01 | 业务部 | 李建 |
02 | 销售部 | 应伟东 |
03 | 服务部 | 周垠 |
04 | 财务部 | 陈力胜 |
今对以上两个关系做如下操作:
Ⅰ.从雇员表中删除行(‘010’,‘王宏达’,‘01’,1200)。
Ⅱ.从部门表中删除行(‘01’,‘业务部’,‘李建’)。
Ⅲ.从部门表中将部门名为‘服务部’的行删除。
Ⅳ.将雇员表中雇员号=‘010’的工资改为2600元。
在上述所给的操作中,哪个(些)操作能被执行
A.Ⅰ、Ⅱ
B.Ⅱ、Ⅲ
C.Ⅲ、Ⅳ
D.Ⅰ、Ⅲ
参考答案:A
解析: 注意到雇员信息的主键是雇员号,外键是部门号;部门信息表的主键是部门号。另外,“雇员信息表中的工资最低为800(包括800),最高不能超过2000”属于用户自定义的完整性规则。所以对题目中给出的操作仔细验证是否违背了关系的3类完整性规则,就可以很容易判断出哪些操作是否可以被执行。
删除参照关系(即外码所在的关系)中的元组肯定不会破坏上述3类完整性规则,但向参照关系中插入元组或者更新参照关系中的元组有可能会破坏完整性规则;向被参照关系中插入元组也肯定不会破坏参照完整性规则,但有可能破坏实体完整性规则和用户自定义的完整性规则,更新被参照关系中的元组有可能破坏3类完整性规则,删除被参照关系中的元组只有可能破坏参照完整性规则。这些情形总结如下。
在对参照关系和被参照关系进行操作时的各种可能破坏3类完整性规则的情形。
[*]