第6章 关系数据理论(难点)
一、单项选择题
1.设计性能较优的关系模式称为规范化,规范化主要的理论依据是 。
A.关系规范化理论 B.关系运算理论 C.关系代数理论 D.数理逻辑 答案:A 2.当关系模式R(A,B)已属于3NF,下列说法中 是正确的。
A.它一定消除了插入和删除异常 B.仍存在一定的插入和删除异常 C.一定属于BCNF D.A和C都是
答案:B
3、关系模型中的关系模式至少是 。
A.1NF B.2NF C.3NF D.BCNF 答案:A
4、消除了部分函数依赖的1NF的关系模式,必定是 。
A.1NF B.2NF C.3NF D.4NF 答案:B 5.关系规范化中的删除异常是指 ( )
A.不该删除的数据被删除 B.不该插入的数据被插入 C.应该删除的数据未被删除 D.应该插入的数据未被插入
答案:A
6.有关系模式A(S,C,M),其中各属性的含义是:S:学生;C :课程;M:名次,其语义是:每一个学生选修每门课程的成绩有一定的名次,每门课程中每一名次只有一个学生(即没有并列名次),则关系模式A最高达到( ) A.1NF B.2NF C.3NF D.BCNF
答案:D
二、多项选择题
1.关系规范化中的删除操作异常、插入操作异常是指 。
A.不该删除的数据被删除 B.不该插入的数据被插入 C.应该删除的数据未被删除 D.应该插入的数据未被插入 答案: AD
2.不规范的关系模式可能存在的问题是: A.插入异常 B删除异常 C更新异常 D冗余太大 答案: ABCD
3. 数据依赖中最重要的是:
A多值依赖 B函数依赖 C关系依赖 D属性依赖 答案: AB 三、判断题
1.关系模式的分解不唯一 。
对
2. 关系模式的候选码可以有多个,主码只能有一个。
对
3. 关系规范化过程中,是可以逐步达到2NF、3NF及更高的等级。
对
4.规范化实质是概念的单一化,即让一个关系描述一个概念、一个实体或者实体间的一种联系。若多余一个概念就把它分离出去。 对
四、填空题
1、在关系A(S,SN,D)和B(D,CN,NM中,A的主键是S,B的主键是D,则D在S中称为 。答案:外部键
2、对于非规范化的模式,经过 ① 转变为1NF,将1NF经过 ② 转变为2NF,将2NF经过 ③ 转变为3NF。
答案:①使属性域变为简单域 ②消除非主属性对主码的部分依赖③消除非主属性对主码的传递依赖 3、在关系数据库的规范化理论中,在执行“分解”时,必须遵守规范化原则:保持原有的依赖关系和 。 答案:无损连接性
4. 关系模式R(A,B,C,D)中,存在函数依赖关系{A→B,A→C,A→D,(B,C)→A},则侯选码是 , ,
R∈ NF。
答案:A,(BC),BC
5. 已知关系R(A,B,C,D)和R上的函数依赖集F={A→C,D,C→B},则
R∈ NF。 答案:2
五、综合练习
1、已知学生关系模式
S(Sno,Sname,SD,Sdname,Course,Grade)
其中:Sno学号、Sname姓名、SD系名、Sdname系主任名、Course课程、Grade成绩。 (1)写出关系模式S的基本函数依赖和主码。
(2)原关系模式S为几范式?为什么?分解成高一级范式,并说明为什么? (3)将关系模式分解成3NF,并说明为什么? (1)写出关系模式S的基本函数依赖和主码。 答: 关系模式S的基本函数依赖如下:
Sno→Sname,SD→Sdname,Sno→SD,(Sno,Course) →Grade 关系模式S的码为:(Sno,Course)。
(2)原关系模式S为几范式?为什么?分解成高一级范式,并说明为什么?
答: 原关系模式S是属于1NF的,码为(Sno,Course),非主属性中的成绩完全依赖于码,而其它非主属性对码的函数依赖为部分函数依赖,所以不属于2NF。
消除非主属性对码的函数依赖为部分函数依赖,将关系模式分解成2NF如下: S1(Sno,Sname,SD,Sdname) S2(Sno,Course,Grade)
(3)将关系模式分解成3NF,并说明为什么? 答: 将上述关系模式分解成3NF如下:
关系模式S1中存在Sno→SD,SD→Sdname,即非主属性Sdname传递依赖于Sno,所以S1不是3NF。进一
步分解如下:
S11(Sno,Sname,SD) S12(SD,Sdname) 分解后的关系模式S11、S12满足3NF。
对关系模式S2不存在非主属性对码的传递依赖,故属于3NF。所以,原模式S(Sno,Sname,SD,Sdname,
Course,Grade)按如下分解满足3NF。 S11(Sno,Sname,SD) S12(SD,Sdname) S2(Sno,Course,Grade) 2、设有如下关系R
(1)它为第几范式? 为什么?
(2)是否存在删除操作异常?若存在,则说明是在什么情况下发生的?
(3)将它分解为高一级范式,分解后的关系是如何解决分解前可能存在的删除操作异常问题? (1)它为第几范式? 为什么?
解:它是2NF。 因为R的候选关键字为“课程名”。 依赖关系: 课程名→教师名,教师名 课程名,教师名→教师地址,所以 课程名→教师地址。即存在非主属性“教师地址”对候选码课程名的传递函数,因此R不是3NF。但:因为不存在非主属性对候选码的部分函数依赖,所以R是2NF。
(2)是否存在删除操作异常?若存在,则说明是在什么情况下发生的? 解: 存在。当删除某门课程时会删除不该删除的教师的有关信息。
(3)将它分解为高一级范式,分解后的关系是如何解决分解前可能存在的删除操作异常问题? 解: 分解为高一级范式如图所示。
R1如下: R2如下:
分解后,若删除课程数据时,仅对关系R1操作,教师地址信息在关系R2中仍然保留,不会丢失教师方面的信息。
3、设某商业集团数据库中有一关系模式R如下: R (商店编号,商品编号,数量,部门编号,负责人)
如果规定:(1) 每个商店的每种商品只的在一个部门销售;(2) 每个商店的每个部门只有一个负责人;(3) 每个商店的每种商品只有一个库存数量。
试回答下列问题:(1) 根据上述规定,写出关系模式R的基本函数依赖;
答: 关系模式S的基本函数依赖如下: (商店编号,商品编号) →部门编号,(商店编号,部门编号)→负责人,(商店编号,商品编号) →数量
(2) 找出关系模式R的候选码;答:关系模式R的码为:(商店编号,商品编号, 部门编号)。
(3) 试问关系模式R最高已经达到第几范式?为什么?答: 原关系模式R是属于1NF的,码为(商店编号,商品编号, 部门编号),非主属性对码的函数依赖全为部分函数依赖,所以不属于2NF。
消除非主属性对码的函数依赖为部分函数依赖,将关系模式分解成2NF如下: R1(商店编号,商品编号, 部门编号, 数量) R2(商店编号,部门编号, 负责人)
(4) 如果R不属于3NF,请将R分解成3NF模式集。 答:将R分解为
R1(商店编号,商品编号, 部门编号, 数量) R2(商店编号,部门编号, 负责人)
分解后的R不存在传递的函数依赖,所以分解后的R已经是第3NF
4.设有关系STUDENT(S#,SNAME,SDEPT,MNAME,CNAME,GRADE),(S#,CNAME)为候选码,设关系中有如下函数依赖: (S#,CNAME)→SNAME,SDEPT,MNAME
S#→SNAME,SDEPT,MNAME (S#,CNAME)→GRADE SDEPT→MNAME 试求下列问题:
(1)关系STUDENT属于第几范式?并说明理由。(3分)
(2)如果关系STUDENT不属于3NF,请将关系STUDENT逐步分解为
3NF。(7分)
要求:写出达到每一级范式的分解过程,并指明消除什么类型的函数依赖。
参考答案:
(1) 关系STUDENT是1NF,因为F中存在非主属性SNAME,SDEPT,MNAME对侯选码(S#,CNAME)的
部分函数依赖,所以达不到2NF。 (2)
① 首先消除部分函数依赖(S#,CNAME)→SNAME,SDEPT,MNAME将关系分解为: R1(S#,SNAME,SDEPT,MNAME),R2(S#,CNAME,GRADE)
R1(S#,SNAME,SDEPT,MNAME),S#为候选码, R1的函数依赖集为:
F1 = { S#→SNAME,SDEPT,MNAME,SDEPT→MNAME}
R2(S#,CNAME,GRADE),S#为候选码, R2的函数依赖集为:
F2={(S#,CNAME)→GRADE}
② 在关系R1中还存在非主属性MNAME对候选码S#的传递函数依赖S#→MNAME,所以将R1进一步分解:
R11(S#,SNAME,SDEPT) ,R12(SDEPT,MNAME)
其中:
R11(S#,SNAME,SDEPT) 以S#为候选码, R11的函数依赖集为:
F11 = { S#→SNAME,SDEPT}
R12(SDEPT,MNAME) 以SDEPT为候选码, R12的函数依赖集为: F12 = { SDEPT→MNAME}
在R2、R11、R12关系模式中都消除了非主属性对码的传递函数依赖,所以上述三个关系模式均是3NF。