查看更多
当前 - 选择题 - 关系数据库
中等
单选题
2013年11月第4题
#第二版教材
#必须掌握

给定员工关系
EMP(EmpID,Ename,sex,age,tel,DepID),
其属性含义分别为:员工号、姓名、性别、年龄、电话、部门号;
部门关系 DEP(DepID,Dname,Dtel,DEmpID),
其属性含义分别为:部门号、部门名、电话、负责人号。若要求 DepID 参照部门关系 DEP 的主码 DepID,则可以在定义 EMP 时用 (问题1) 进行约束。若要查询开发部的负责人姓名、年龄,则正确的关系代数表达式为 (问题2)

浓缩知识点

数据库中,外键约束是保障参照完整性的关键机制,需在关联的从表中进行声明,格式为Foreign Key(从表关联字段) References 主表(主表主键字段),以此确保从表的关联字段值均对应主表中已存在的主键值,避免出现无效的关联数据,比如员工表的部门号字段需参照部门表的部门号主键,以此保证员工所属部门都是真实存在的有效部门。而用关系代数实现跨表复杂查询时,通常遵循“先筛选、再连接、后投影”的逻辑:先用选择操作σ筛选出目标数据集,再通过自然连接或等值连接关联相关表,补充必要的匹配条件,最后用投影操作π提取所需属性,这种流程既保证查询逻辑准确,还能通过提前筛选缩减数据量来提升查询效率,比如查询特定部门负责人信息时,就需要先筛选出目标部门,关联员工表后匹配负责人与员工号的对应条件,再提取姓名、年龄等所需字段。

正确答案
C

本题考察的是外键约束的定义方式与关系代数表达式(选择、投影、连接)的应用
在模式中,EMP.DepID 应参照 DEP 的主键 DepID,定义时应使用外键约束;查询“开发部负责人姓名、年龄”需要先选出 Dname=“开发部”的部门,再与 EMP 进行连接,并加入 EmpID=DEmpID 的条件以锁定负责人,再投影出 Ename、age。

问题 1
A选项 Primary Key (DepID) On DEP (DepID):定义的是 DEP 的主键,不是在 EMP 中建立参照,错误。
B选项 Primary Key (DepID) On EMP (DepID):把 EMP 的 DepID 设为主键,与题意不符,错误。
C选项 Foreign Key (DepID) References DEP (DepID):在 EMP 中把 DepID 声明为外键,参照 DEP(DepID),完全符合题意,正确。
D选项 Foreign Key (DepID) References EMP (DepID):把 EMP.DepID 参照 EMP 自身,不符合实际参照关系,错误。
所以选择 C。

问题2
为得到负责人需满足三个关键步骤:选择部门σ_{Dname='开发部'}(DEP)、连接与 EMP(自然连接在 DepID 上),再施加负责人条件EmpID = DEmpID,最后投影姓名与年龄
A选项:对 Emp × Dep 做选择“第一属性=开发部”,既无明确属性位置语义也缺少负责人条件,错误。
B选项:先对 Dep 做选择 σ_{2=开发部}(第二属性 Dname),与 Emp 做自然连接(在公共属性 DepID 上),再用 σ_{1=9} 表示 EmpID(第1位)= DEmpID(第9位)锁定负责人,最后投影第2、4位(Ename、age),表达正确。
C选项:Emp 与选出的 Dep 直接笛卡尔积后只投影 2、3 位,既无连接条件也无负责人条件,错误。
D选项:对 Emp 先做投影再与 Dep 自然连接,仅限定部门,未施加 EmpID=DEmpID 的负责人条件,会得到该部门所有员工而非负责人,错误。
所以选择 B。

联系我们
隐私协议
用户协议
微信公众号
知乎
小红书
浙ICP备2021029036号
@2022-2026
嘉兴市安芯网络科技有限公司 版权所有