二、研讨课:
1. 假设员工关系EMP(员工号,,部门,部门,部门负责人,家庭住址,家庭成员,成员关系)如下表所示。如果一个部门可以有多名员工,一个员工可以有多个家庭成员,那么关系EMP属于 数据冗余 问题;为了解决这一问题,应该将员工关系EMP分解为 (员工号,,部门,家庭地址,家庭成员,成员关系)(部门,部门负责人,部门) ,
画出ER图(上学期学过了,很简单,懒得画),主外键(主键:员工号,外键:部门)(主键:部门)。 员工 号 0011 0011 0011 0012 0012 0021 0021 0031 晓明 晓明 晓明 吴俊 吴俊 立丽 立丽 吴俊 部门负责人 0012 0012 0012 0012 0012 0021 0021 0021 部门 开发部 开发部 开发部 开发部 开发部 市场部 市场部 市场部 财务部 部门 808356 808356 808356 808356 808356 808358 808358 808356 808360 家庭住址 海淀区1号 海淀区1号 海淀区1号 路15号 路15号 雁塔路8号 雁塔路8号 太白路2号 科技路18号 家庭成员 成员关系 大军 胡敏铮 晓丽 吴胜利 王若垚 国庆 罗明 王国钧 吴鸿翔 父亲 母亲 妹妹 父亲 母亲 父亲 母亲 父亲 父亲 0022 王学强
2. 判断F={A->BC,B->A,AD->E}和G={A->BC,B->A,BD->E}是等价的 因为B->A,所以BD->AD,因为AD->E,所以BD->E,所以。。。
3. 设关系模式R具有n个属性,在模式R上可能成立的函数依赖有 (1) 个?其中平凡的FD有 (2) 个?非平凡的FD有 (3) 个?以上3点都需说明为什么
三、作业:
1. 设函数依赖集 F={AB->E,AC->G,AD->BG,B->C,C->D},试证AC->G是冗余的。 AD->BG,C->D,所以AC->BG,所以AC->G,所以冗余 2. 课本Page124:习题5.3 (1)X->ø永远满足。
(2)ø->Y,则 属性Y对于各元组的值相同 。 (3)ø->ø为平凡的函数依赖,永远满足。 3. 课本Page124:习题5.8
证明:(反证法)假设存在A→B
那么 A→AB, 关系模式R的候选码即为A,不是全码 ∴ 假设不存在,R不满足A→B 同理:R不满足 B→A
第2周(第五章:、关键码、最小函数依赖集)
二、研讨课:
2.设有函数依赖集:F={AB->C,C->A,BC->D,ACD->B,D->EG,BE->C,CG->BD,CE->AG},计算其等价的最小依赖集。
1、把右边都写成单属性
AB->C,C->A,BC->D,ACD->B,D->E,D->G,BE->C,CG->B,CG->D,CE->A,CE->G 2、去左边冗余属性
C->A,CE->A冗余,去掉CE->A,所以
AB->C,C->A,BC->D,ACD->B,D->E,D->G,BE->C,CG->B,CG->D,CE->G 3、去冗余的FD
D->G,所以CD->CG,CG->B,所以CD->B,所以ACD->B,所以ACD->B冗余 所以
AB->C,C->A,BC->D,D->E,D->G,BE->C,CG->B,CG->D,CE->G 3. 已知R(ABCDE),F={A→B,BC→A,A→D},求R的全部非主属性。 L:C R:D N:E LR:A,B CE+=CE ACE+=ABCDE BCE+=ABCDE
所以非主属性为D 三、作业:
1. 已知F={B→D,A→D,DA→CB,CD→A},求Fmin。 1、右边单属性
B→D,A→D,DA→C,DA→B,CD→A 2、左边冗余属性
A→D,DA→C,DA→B,所以A→C,A→B 所以
B→D,A→D,A→C,A→B,CD→A 3、冗余的FD:无
2. 如果关系模式R(A,B)的候选码为(A,B)(即为全码),那么该关系模型一定不满足A→B,或B→A。 没什么好说的
3. 设有R(ABCDE),F={ A→C,B→C,C→D,CE→A,DE→C },求候选码。 L:B,E R: N:
LR:A,C,D BE+=ABCDE 所以BE
第3周(第五章:分解无损和保持FD)
二、研讨课:
1. R(ABCDE), F={AB→C,AC→E,C→B,E→C,D→C},ρ={ABC,AD,AE,BE,DE},求ρ的分解无损性 ABC AD AE BE DE ABC AD AE BE DE ABC AD AE BE DE ABC AD AE BE DE A a1 a1 a1 b14 b15 A a1 a1 a1 b14 b15 A a1 a1 a1 b14 b15 A a1 a1 a1 b14 b15 B a2 b22 b23 a2 b25 B a2 b22 b23 a2 b25 B a2 b22 a2 a2 a2 B a2 b22 a2 a2 a2 C a3 b32 b33 b34 b35 C a3 b32 b33 b33 b33 C a3 b32 b33 b33 b33 C a3 b32 a3 a3 a3 D b41 a4 b43 b44 a5 D b41 a4 b43 b44 a5 D b41 a4 b43 b44 a5 D b41 a4 b43 b44 a5 E b51 b52 a5 a5 a5 E b51 b52 a5 a5 a5 E b51 b52 a5 a5 a5 E b51 b52 a5 a5 a5 ABC AD AE BE DE ABC AD AE BE DE A a1 a1 a1 b14 b15 A a1 a1 a1 b14 b15 B a2 a2 a2 a2 a2 B a2 a2 a2 a2 a2 C a3 a3 a3 a3 a3 C a3 a3 a3 a3 a3 D b41 a4 b43 b44 a4 D b41 a4 b43 b44 a4 E a5 a5 a5 a5 a5 E a5 a5 a5 a5 a5
2. 关系模式R(U,F),其中U={W,X,Y,Z},F={WX→Y,W→X,X→Z,Y→W }。关系模式R的候选键是 (1) , (2) 是无损连接并保持函数依赖的分解。 L: R:Z N:
LR:W,X,Y W+=WXYZ Y+=WXYZ X+=XZ
候选键:W和Y 出发点:X→Z
不妨大胆的假设R1,R2使得无损联结,也就是R1∩R2=X,R2-R1=Z 就有WXY与XZ 验证依赖性
πWXY(F)={WX→Y,W→X,Y→W} πXZ(F)={X→Z}
πWXY(F)∪πXZ(F)=F 大功告成!
3. 举出一个满足无损但不保持FD的分解例子,并说明分解的不合理? 举出一个保持FD但不满足无损的分解例子,并说明分解的不合理。 没什么好说的! 三、作业:
1. 证明BCNF一定是3NF。 反证法,假设不是,存在传递
然而传递的中间不是候选键的话语BCNF矛盾 所以。。。
到时候自己编一个BCNF
2.给定关系模式R,其中:U={A,B,C,D},F={A->B,B->C,C->D,D->A},判断关系模式R的分解ρ={AB,BC,CD}是否具有依赖保持性。 求投影,方法看研讨
3. 课本Page125:习题5.15 画表格,方法如研讨
4. 已知R,U= { A, B, C, D, E },F={ AB→C , D→E, C→D},R的一个分解ρ= {R1(A,B,C), R2(C,D), R3(D,E)}。判定分解ρ是否为无损连接的分解和保持函数依赖性。 画表格+求投影
第4周(第五章:式分解,多值依赖自学)
二、研讨课:
1. 如下关系模式R表示某学校学生及宿舍的情况
R(学号,,系,宿舍楼,宿舍房号,协会) 满足的函数依赖集合为
F={学号→,学号→系,宿舍楼→系,学号→宿舍房号,宿舍房号→宿舍楼} 试将R规化为满足BCNF的关系模式。 学号,协会是候选键,所以F肯定不是BCNF
((学号,协会)→(,宿舍房号)),(宿舍房号→宿舍楼)(宿舍楼→系)
2. 假设某旅馆业务规定,每个账单对应一个顾客,账单的发票号是惟一的,账单中包含一个顾客、到达日期和顾客每日的消费明细,账单的格式如图 发票号 123456 123456 123456 123456 到达日前 2014/4/1 2014/4/1 2014/4/1 2014/4/1 顾客 艾尚达 艾尚达 艾尚达 艾尚达 消费日期 2014/4/1 2014/4/1 2014/4/1 2014/4/2 项目 房租 餐费 上网 餐费 金额 280 56 10 180 如果根据上述业务规则,设计一个关系模式:
R(发票号,到达日期,顾客,消费日期,项目,金额)。 试回答下列问题:
(1)找出R的候选键。 发票号,项目,消费日期
(2)判断R最高可达到第几式,为什么? 3,NO WHY
(3)给出R的一个可能的3NF分解。
R1((发票号,项目,消费日期)→(到达时间,顾客)) R2(项目→金额)
(4)给出R的一个可能的BCNF分解。
R1((发票号,项目,消费日期)→(到达时间,顾客)) R2(项目→金额) 三、作业:
1.说明以下说法是否正确以及理由:
(1)所有候选码都为单个属性的关系模式一定满足2NF;、 左边为单属性不可能为局部依赖 (2)二目关系一定是满足3NF的;
设二目关系为R(A,B),则候选码的可能性为(A,B)、A或B
情况一:候选码为(A,B),不存在非主属性,故R一定满足3NF;
情况二:候选码为A,R满足A→B,不存在传递A→B,故R一定满足3NF; 情况三:类似情况二。
(3)候选码为全码的关系模式一定是满足BCNF的关系模式;
因为关系模式是全码,所以任何属性或属性组对候选码都是直接函数依赖,根据BCNF的定义,此关系模式一定满足BCNF。
2. 已知关系R(A,B,C,D,E,F,G)上的函数依赖集
F={AC->BEFG,A->B,C->DEF,E->F}
试将R分解成一组等价的3NF模式 (1)先求Fmin 1、右边为单属性
AC->B,AC->E,AC->F,AC->G,A->B,C->D,C->E,C->F,E->F 2、去左边重复
AC->B,AC->E,AC->F冗余
所以AC->G,A->B,C->D,C->E,C->F,E->F 3、去冗余FD
C->E,E->F,所以C->F冗余
所以AC->G,A->B,C->D,C->E,E->F (2)求候选码 L:A,C R:B,D,E,F N: LR:
AC+=ABCDEFG 所以候选码是AC
(3)要满足2NF,3NF,所以R1(AC->G)R2(A->B)R3(C->D,C->E)R4(E->F) 3. 设关系模式R(A,B,C,D),F={A→C,A→B,B→D},将R分解为BCNF。 1、候选码 L:A R:C,D N; LR:B A+=ABCD
所以候选码为A 2、分解
R1(A→C,A→B)R2(B→D) 4. 课本Page125:习题5.18。 懒得做了!做法跟上面差不多的
第5周(第七章:数据库设计;第八章:事务概念)
三、作业:
1. 已知R(A,B,C,D,E,F,G,H,I,J),F={AB→E,ABE→FG,B→FI,C→J,CJ→I,G→H},求最小函数依赖集,然后分解成三式的关系模式集合,并判断该分解是否具有无损连接性。
2. 如下给出的关系R为第几式?是否存在操作异常?请举例说明。若存在,则将其分解为高一级式。分解后的式中是否可以避免这些操作异常?
数据冗余
((工程号,材料号,数量)→(开工日期,完工日期,价格)) 这是第一式 修改成
(工程号→(开工日期,完工日期)) ((工程号,材料号,数量)→价格) 3. 课本Page170:习题7.15。
第6周(第八章:故障恢复)
二、研讨课:
1. 某数据库配置时把数据库文件、备份文件、日志文件放在同一个硬盘上,是否合适?并说明理由。放在同一台计算机的不同硬盘上呢?从故障恢复的角度应该如何配置合理?至少哪两类文件不应放在同一硬盘上?
不合适,当发生介质故障时候,如果放在同一个硬盘上,数据库文件就无法 补救回来。
也不是很合适,当整台电脑被病毒破坏时,数据库文件、备份文件、日志文件 也是容易被损坏的。
数据库备份放在共享文件夹里,共享指定给另外一台电脑。
数据库文件,备份文件。及时日志文件丢失损坏,之前备份的文件也有很多数据 但如果备份文件都不在了,日志文件也是没用的。
2. 假定系统采用检查点方法,T1、T2和T3是并发事务,在t19时发生系统故障,最近的检查点在t8时(见图);A、B、C和D都是数据库中的数据项,初值依次是800、300、70和80, 说明所需的恢复工作。 时刻 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19
T1 read(B) B=B*2 write(B) read(A) A=A+10 write(A) COMMIT read(A) A=A-100 write(A) COMMIT T2 read(D) D=D-100 write(D) read(A) read(B) B=B+A write(B) …
答:(1)事物T2不必恢复,因为它的更新在检查点之前就写到了数据库.(A=700)
t19:发生故障 T3 t4:T2开始 t8:检查点 t9:T3开始 说 明 t1:T1开始 (2)事物T3必须撤销,因为T3还未做完,撤销事物T3对db的修改,就恢复D=80 (3)事物T1必须重做,因为T1做完,但是它的结束在下一个结束点之前,对DB修改仍然在存缓冲区,还没写到磁盘。 重做 A=710. 参照书本175-176面各种情况的解决方法
3. 假定系统采用检查点方法,当系统崩溃时产生了以下并发事务的日志记录。 (1) 请给出系统在恢复后搜索日志时所形成的重做队列和撤销队列。 (2) 请给出恢复后各数据项的值。 1. 课本Page195:习题8.4。 2. 课本Page195:习题8.5。 3. 为什么系统故障恢复时先UNDO再REDO操作?请举日志队列说明 第7周(第八章:并发控制) 二、研讨课: 1. 判断下列并发调度是不是可串行化调度,为什么?修改如下并发调度为可串行化调度 时间 t0 t1 t2 t3 t4 t5 t6 t7 事务T1 Read A Update A=A+1 Read B Update B=B+1 数据库中值 A=10, B=2 事务T2 Read B Read A Update B=A+B 2. 设T1,T2,T3是如下三个事务: 2 T1: A:=A+2; T2: A:=A*2; T3: A:=A; 设A的初始值为0. 1) 若三个事务允许并发执行,则有多少种可能的正确的结果,请分别列举出来 2) 请给出一个可串行化的调度,并给出执行结果 3) 请给出一个非串行化的调度,并给出执行结果 4) 若三个事务都遵守两段锁协议,请给出一个产生死锁的调度。 1) A33=6 123 16 132 8 213 4 231 2 312 4 321 2 结果为4种,为2、4、8、16 2) 3) 3. 操作序列T1、T2、T3对数据A、B、C并发操作如下所示,T1与T2间并发操作(1) , T2与T3间并发操作(2) 。修改如下并发调度为可串行化调度 时间 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 T1 读A=50 读B=200 X1=A+B 读A=50 读B=100 X1=A+B 验算不对 T2 读B=200 B=B-100 写B T3 读B=200 B=B+50 写B 三、作业: 1. 课本Page196:习题8.10。 2. 课本Page196:习题8.11。 3. 课本Page196:习题8.12。 第8周(第八章:完整性和安全性;第九章分布式自学) 二、研讨课: 1. 写有关school数据库的完整性约束 (1)确保每个学生在同一学期同一门课只能选一个老师开设的课程。 create assertion asse1 check (not exists( select * from e as a,e as b where a.xh = b.xh and a.xq = b.xq and a.kh = b.kh and a.gh <> b.gh ) ); (2)确保每门课程每年只开设一次。 Create assertion ass2 check (1>all(select count(distinct (A.课号)) From 开课表 as A,开课表 as B Where A.学年=B.学年 And A.课号=B.课号 Group by 学年,课号 )); 2. 设有三个关系模式:STUDENT(SNO,SNAME,AGE,SEX,SADDR,DNO) COURSE(CNO,CNAME,CHARA,CREDIT,DNO,TERM,TNAME) GRADE(SNO,CNO,TERM,PGRADE,EGRADE,GGRADE) 中文含义:学生(学号,,年龄,性别,住址,所在系), 课程(课程号,课程名,课程性质,学分数,开课系,开课学期,教师), 成绩(学号, 课程号, 开课学期,平时成绩,考试成绩,总评成绩)。 请用指定的方法定义下列完整性约束: 1、每个学期每个学生至多可选8门课程(用断言)。 Create assertion ass1 check ( 8>=all(select count(distinct (cno)) From grade Group by sno,term ) ); 2、如果总评成绩修改后低于60分,那么,如果平时成绩大于80分,在修改后的 总评成绩上再增加考试成绩的8%,但不得超过60分(用SQL3触发器)。 create trigger trig1 after update of ggrade on grade referencing old as oldtuple new as newtuple when (newtuple.ggrage<60 and oldtuple.egrade>80) update grade set ggrade=newtuple.ggrade + oldtuple.pgrade * 0.08 where sno = newtuple.sno ando = newtuple.cno and term = newtuple.term and (60>=newtuple.ggrade + oldtuple.pgrade * 0.08) update grade set ggrade=60 where sno = newtuple.sno ando = newtuple.cno and term = newtuple.term and (60 借阅情况表(借书证号, 书号, 借书日期, 还书日期) 1)把对书籍表的查询、修改权和转授权授予用户admin。 Grant select,update on 书籍表 to admin With grant option 2)使每个人都能查询未出借图书的借阅情况,但不能直接查看借阅情况表。 create view A as Select 书籍表.所有属性 from 书籍表,借阅情况表 Where 书籍表.书号=借阅表.书号 and 书籍.状态=’未出借’ Grant select on A to public 三、 作业: 1. 课本Page196:习题8.19。 2. 课本Page196:习题8.20。 3. 课本Page215:习题9.5。 第9周(第十章:对象数据库) 二、研讨课: 1. 对照题目给出的容,补充完整下面的对象联系图和对象关系数据库定义。 eno(工号) ename(姓名) work_forEmployee sex(性别) (部门号) dno Department staff_ (部门名)dname mno(经理编号) Manager language(精通语言) CREATE TYPE MyString char varying; CREATE TABLE Department (dno MyString, dname MyString, (1) , (2) ); CREATE TABLE Employee (eno integer, ename MyString, sex MyString, (3) ); CREATE TABLE Manager ( mno integer, (4) ) under Employee; 2.对上面定义的数据库用SQL完成以下查询: ⑴ 找出各个男职工的工号、、部门名和经理编号。 ⑵ 找出精通日语的经理所在部门的职工的工号和。 这道题的答案在PPT《习题课-第十周》里面有 2. 根据如下对象关系数据库定义,画出对应的对象联系图 CREATE TYPE MyString char varying; CREATE TABLE dept( dno integer, dname MyString, enroll setof(ref(student)), offer setof(ref(coursetext))); CREATE TABLE student(sno integer, sname MyString, age integer, enrolled ref(dept), choose setof(ref(grade))); CREATE TABLE course(cname MyString, hours inter, credit inter. offered_by ref(dept), chief open setoff(ref(grad)); CREATE TABLE s_c (grade inter, choosed_by ref(student), done ref(course))); 3. 建立一个关于系、学生、班级、社团等信息的关系数据库。 描述学生的属性有:学号、、出生年月等。 描述系的属性有: 系名、系号、系办公室地点、宿舍区等。 描述社团的属性有:社团名、成立年份、地点。 有关语义如下: 一个系的学生住在同一个宿舍区。每个学生可参加若干社团,每个社团有若干学生。 请画出对象关系图,用ORDB的定义语言定义这个数据库。 三、作业: 1. 课本Page230:习题10.1。 2. 课本Page231:习题10.6。 3. 课本Page232:习题10.7。 因篇幅问题不能全部显示,请点此查看更多更全内容