当前位置:首页 > 数据库总复习题库及解析
U={A,B,C,D},F={A→B,B→C,D→B},把R分解成BCNF模式集:
1. 如果首先把R分解成{ACD,BD},试求F在这两个模式上的投影。 2. ACD和BD是BCNF吗?如果不是,请进一步分解。
解:(1) ∏ACD(F)={A→C,D→C} ∏BD(F)={D→B} (2)BD是BCNF。
ACD不是BCNF。模式ACD的候选关键字是AD(注意ACD是关系模式是A→C,D→C)。考虑A→C,这个函数依赖不满足BCNF条件(A不是模式ACD的候选关键字),将ACD分解为AC和AD,此时AC和AD均为BCNF。
6. 指出下列关系模式是第几范式? (1)R(X,Y,Z) F={XY→Z}
答:R是BCNF。R的候选关键字是XY。
7. 关系模式R(S#,C#,TNAME),其属性为学生学号、选修课程的课程号、任课教师姓名。
如果规定,每个学生可选修多门;每门课只有一个教师任教。 (1) 写出R的基本FD和关键码; (2) 说明为什么R不是2NF模式? (3) 举例说明R的数据冗余问题; (4) 试把R分解成2NF模式集。 解:(1)基本的FD有两个:(S#,C#)→TNAME,C#→TNAME。所以R的关键码为(S#,C#)。
(2)根据上述两个FD,可知(S#,C#)→TNAME是一个局部依赖,因此R不是2NF。 (3)由于每门课可以有多个学生选修,因此会产生数据冗余。譬如一个门有50个学生选修,在关系中就要有50个元组,但每门课只有一个教师,因此其教师姓名就要重复50次。这就是数据冗余,随之将会产生各种操作异常。 (4)R1(S#,C#) R2(C#,TNAME)
8. 设关系模式R(S#,TNAME,TADDR),其属性分别表示学生学号、指导教师姓名、指导教师地址。 如果规定,每个学生只有一个指导教师;每个教师只有一个联系地址;教师不允许同名同姓。 (1) 写出R的基本FD和关键码;
(2) 说明为什么R不是3NF模式? (3) 举例说明R的数据冗余问题; (4) 试把R分解成3NF模式集。 解:(1)基本的FD有两个:S#→TNAME,TNAME→TADDR。R的关键码为S#。 (2)根据上述两个FD,可知S#→TADDR是一个传递依赖,因此R不是3NF模式。 (3)由于一个教师可以指导多个学生,因此会产生数据冗余。譬如一个教师指导10个学生,在关系中就要有10个元组,但每个教师只有一个联系地址,因此其地址就要重复10次。这就是数据冗余,随之将会产生各种操作异常。 (4)R1(S#,TNAME) R2(TNAME,TADDR)。 9. 设有关系模式
R(职工名,项目名,工资,部门名,部门经理)
如果规定,每个职工可参加多个项目,各领一份工资;每个项目只属于一个部门管理;每个部门只有一个经理。
(1) 试写出关系模式R的基本FD和关键码。
(2) 说明R不是2NF的理由,并把R分解成2NF模式集。 (3) 进而把R分解成3NF模式集,并说明理由。 解:
(1) R的基本FD有三个: (职工名,项目名)→工资 项目名→部门名 部门名→部门经理 关键码为(职工名,项目名)。
(2) 根据(1),R中存在下列两个FD:
(职工名,项目名)→(部门名,部门经理) 项目名→(部门名,部门经理) 其中前一个FD是一个局部依赖,因此R不是2NF。 R应分解成两个模式:
R1(项目名,部门名,部门经理) R2(职工名,项目名,工资) R1和R2都是2NF。
(3) R2已是3NF。
在R1中,由于存在两个FD:
项目名→部门名,部门名→部门经理 即存在一个传递依赖,因此R1不是3NF。
对R1应分解成两个模式:R11(职工名,部门名),R12(部门名,部门经理)。这两个模式都是3NF。
因此,R分解成3NF模式集时,应该是:{R11,R12,R2}。
10. 设关系模式R(仓库编号,商品编号,库存量,商品名,规格)存储某商业集团的有
关信息。如果规定:
(1) 集团中有若干仓库,每个仓库中可放若干种商品;
(2) 每一个商品编号表示一种商品:一种商品(由于生产厂家不同)可以有多个商品编号,但其规格只有一个。
(3) 每个仓库每存有一个编号的商品,有一个库存量。 试回答下列问题:
(1) 据上述规定,写出模式R的基本FD;
(2) 说明R不是2NF的理由,并把R分解成2NF模式集; (3) 进而再分解成3NF模式集。 解:
(1) 基本的FD有三个:
(仓库编号,商品编号)→库存量 商品编号→商品名 商品名→规格
(2) R的关键码为(仓库编号,商品编号) 在R中有两个FD:(仓库编号,商品编号)→(商品名,规格) 商品编号→(商品名,规格) 其中前一个FD是局部依赖,所以R不是2NF模式。 R应分解成:
R1(商品编号,商品名,规格) R2(仓库编号,商品编号,库存量) R1和R2都是2NF模式。 (3) R2已是3NF模式。
在R1中存在两个FD:商品编号→商品名 商品名→规格
因此,商品编号→规格是一个传递依赖,R1不是3NF模式。 R1应分解成R11(商品编号,商品名) R12(商品名,规格)
所以将R分解成{R11,R12,R2}是一个3NF模式集。
11. 设某汽车运输公司数据库中有一个关系模式:
R(汽车牌照,司机编号,行驶公里,班组编号,班组长) 如果规定: (1) 每个汽车牌照对应一辆汽车。\行驶公里\为某司机驾驶某辆汽车行驶的总公里数。 (2) 每个司机属于一个班组;每个班组有一个班组长。 试回答下列问题:
(1) 根据上述规定,写出模式R的基本FD;
(2) 说明R不是2NF的理由,并把R分解成2NF模式集; (3) 进而再分解成3NF模式集。 解:(1)基本的FD有三个:
(汽车牌照,司机编号)→行驶公里 司机编号→班组编号 班组编号→班组长
(2) R的关键码为(汽车牌照,司机编号) 这样,R中会有两个FD:
(汽车牌照,司机编号)→(班组编号,班组长) 司机编号→(班组编号,班组长) 其中前一FD是局部依赖,所以R不是2NF。 R应分解成R1(司机编号,班组编号,班组长) R2(汽车牌照,司机编号,行驶公里) R1和R2都是2NF模式。 (3) R2已是3NF。
在R1中存在两个FD:司机编号→班组编号 班组编号→班组长
因此,司机编号→班组长是一个传递依赖,R1不是3NF。 R1应分解成R11(司机编号,班组编号) R12(班组编号,班组长) 结果:{R11,R12,R2}是一个3NF模式集。
12. 设有如下图所示的关系
职工号 e1 e2 e3 e4 职工年龄 性别 名 zhao qian shen li 20 25 38 25 F M M F 单位号 D3 D1 D3 D3 单位名 CCC AAA CCC CCC 试问R是否属于3NF?若不是,它属于第几范式?并如何规范化为3NF?
解:R不属于3NF,它是2F。
因为R的候选关键字为职工号,而:职工号==>单位号,单位号不能==>职工号,单位号==>单位名。
所以职工号传递==>单位名,即存在非主属性单位名对候选关键字职工号的传递函数依赖。
规范化关系子模式为R1(职工号,职工名,年龄,性别,单位号)和2(单位号,单位名)。
三、多项选择题
1. 有一关系,满足关系数据库的条件,但不满足关系的规范化,该数据库结构会出现
的问题可能有__。答:BCD
共分享92篇相关文档