名,学分,成绩)。
设一个学生可以选多门课程,一门课程可以被多名学生选。一个学生有唯一的所在系,每门课程有唯一的课程号和学分。请指出此关系模式的候选码,判断此关系模式是第几范式的,若不是第三范式的,请将其规范化为第三范式关系模式,并指出分解后的每个关系模式的主码和外码。 答:候选码为:(学号,课程号) 第一范式
学生(学号,姓名,所在系,性别) 课程(课程号,课程名,学分) 学生修课(学号,课程号,成绩)
学号为引用学生关系模式的外码 课程号为引用课程关系模式的外码
七、设有关系模式:学生(学号,姓名,所在系,班号,班主任,系主任),其语义为:一个学生只在一个系的一个班学习,一个系只有一个系主任,一个班只有一个班主任,一个系可以有多个班。 请指出此关系模式的候选码,判断此关系模式是第几范式的,若不是第三范式的,请将其规范化为第三范式关系模式,并指出分解后的每个关系模式的主码和外码。 答:候选码为:学号 第二范式
学生(学号,姓名,所在系,班号)
所在系为引用系关系模式的外码
班号为引用班关系模式的外码 系(所在系,系主任) 班(班号,班主任)
八、设有关系模式:教师授课(课程号,课程名,学分,授课教师号,教师名,授课时数),其语义为:一门课程(由课程号决定)有确定的课程名和学分,每名教师(由教师号决定)有确定的教师名,每门课程可以由多名教师教授,每名教师也可以讲授多门课程,每名教师对每门课程有确定的授课时数。指出此关系模式的候选码,判断此关系模式属于第几范式,若不属于第三范式,请将其规范化为第三范式关系模式,并指出分解后的每个关系模式的主码和外码。
答:候选码为:(课程号,授课教师号) 第一范式
课程(课程号,课程名,学分) 教师(授课教师号,教师名)
教师授课(课程号,授课教师名,授课时数)
课程号为引用课程关系模式的外码
授课教师号为引用教师关系模式的外码
练习1:下表给出的关系R为第几范式?是否存在操作异常?若存在,将其分解为高一级范式。
工程号 材料号 数量 开工日期 完工日期 单价 P1 P1 P1 P2 P2 I1 I2 I3 I1 I4 4 6 15 6 18 9805 9805 9805 9811 9811 9902 9902 9902 9912 9912 250 300 180 250 300 R 满足1NF
码:工程号+材料号
操作异常:数据冗余,插入异常,删除异常,修改异常 分析原因:
(工程号,材料号) ? 开工日期 工程号? 开工日期
存在部分函数依赖,不满足2NF (工程号,材料号) ? 单价 材料号?单价
存在部分函数依赖,不满足2NF 分解为:
R1(工程号,材料号,数量) R2(材料号,单价)
R3(工程号,开工日期,完工日期) 第七章 一、试说明事务的概念及四个特征。
答:事务是用户定义的数据操作系列,这些操作可作为一个完整的工作单元,
一个事务内的
所有语句被作为一个整体,要么全部执行,要么全部不执行。 四个特征:原子性、一致性、隔离性和持续性 三、在数据库中为什么要有并发控制机制?
答:数据库系统一个明显的特点是多个用户共享数据库资源,尤其是多个用
户可以同时存取相同数据。在这样的系统中,在同一时刻同时运行的事
务可达数百个。若对多用户的并发操作不加控制,就会造成数据库存、取的错误,破坏数据的一致性和完整性。所以数据库中要有并发控制机制。
四、并发控制的措施是什么?
答:在数据库环境下,进行并发控制的主要方式是使用封锁机制,即加锁。
具体的控制由锁的类型决定。
基本的锁类型有两种:排它锁(X锁)和共享锁(S锁)。
共享锁:若事务T给数据对象A加了S锁,则事务T可以读A,但不能修改A,其他事务只能再给A加S锁,而不能加X锁,直到T释放了A上的S锁为止。
排他锁:若事务T给数据对象A加了X锁,则允许T读取和修改A,但不允许其他事务再给A加任何类型的锁和进行任何操作。 五、设有3个事务:T1、T2和T3,其所包含的动作为: T1:A=A+2 T2:A=A*2 T3:A=A**2
设A的初值为1,若这三个事务运行并行执行,则可能的调度策略有几种?A最终的结果分别是什么?
答:6种策略。分别是T1T2T3 ,T1T3T2,T2T1T3,T2T3T1,T3T1T2,T3T2T1
结果分别是
六、当某个事务对某段数据加了S锁之后,在此事务释放锁之前,其他事物还可以对此段数据添加什么锁? 答:S锁
七、什么是死锁?如何预防死锁?
答:如果事务T1封锁了数据R1,T2封锁了数据R2,然后T1又请求封锁数
据R2,由于T2已经封锁了数据R2,因此T1等待T2释放R2上的锁,然后T2又请求封锁数据R1,由于T1封锁了数据R1,因此T2也只能等待T1释放R1上的锁.这样就会出现T1等待T2先释放R2上的锁,而T2又等待T1先释放R1上的锁的局面,此时T1和T2都在等待对方先释放锁,因而形成死锁。
预防死锁的方法有多种,常用的方法有一次封锁法和顺序封锁法。 八、三级封锁协议分别是什么?各级封锁协议的主要区别是什么?每一级封锁协议能保证什么?
答:一级封锁协议:对事务T要修改的数据加X锁,直到事务结束才释放。
二级封锁协议:一级封锁协议加上事务T对要读取的数据加S锁,读完后即释放S锁。
三级封锁协议:一级封锁协议加上事务T对要读取的数据加S锁,并直到事务结束才释放。
各级封锁协议的主要区别在于读操作是否需要申请封锁,以及何时释放锁。
一级封锁协议可以防止丢失修改,并保证事务T是可恢复的。 二级封锁协议除了可以防止丢失修改外,还可以防止读“脏”数据。