发布时间 : 星期六 文章《数据库系统概论》复习总结更新完毕开始阅读
例:在关系Std(Sno, Sdept, Mname)中,有:
Sno → Sdept,Sdept → Mname Mname传递函数依赖于Sno
8、第一范式~BCNF 第一范式(1NF):若关系模式R的每一个分量是不可再分的数据项,则关系模式R属于第一范
式。
第二范式(2NF):若关系模式 R∈1NF,且每一个非主属性完全函数依赖于码,则关系模式 R
∈2NF 。(即 1NF 消除了非主属性对码的部分函数依赖则成为2NF)。
例:关系模式 S-L-C(Sno, Sdept, Sloc, Cno, Grade)
Sloc为学生住处,假设每个系的学生住在同一个地方
函数依赖包括 (Sno, Cno)
Grade
Sno → Sdept (Sno, Cno) Sno → Sloc (Sno, Cno) Sdept → Sloc
Sloc Sdept
(虚线表示部分函数依赖)
由于非主属性Sdept和Sloc并不完全函数依赖于码(Sno, Cno),所以不是2NF 解决方法:
S-L-C分解为两个关系模式,以消除这些部分函数依赖,这就属于2NF了 SC(Sno, Cno, Grade) S-L(Sno, Sdept, Sloc)
第三范式(3NF):关系模式 R 中若不存在这样的码 X、属性组 Y 及非主属性 Z(Z 不是Y的子集)使得 X → Y,YX,Y→Z 成立,则称 R∈3NF (每一个非主属性既不部分依赖于码有人不传递依赖于码) 例:上例中,在S-L中存在非主属性对码的传递函数依赖,所以不属于3NF
解决方法:采用投影分解法,把S-L分解为两个关系模式,以消除传递函数依赖:
S-D(Sno, Sdept)码为Sno D-L(Sdept,Sloc) 码为Sdept
BCNF:关系模式 R∈1NF 。若 X→Y 且 Y 不是 X 的子集时,X必含有码,则
R∈BCNF(即每一个决定属性因素都包含码)
BCNF性质:若R∈BCNF
13
①所有非主属性对每一个码都是完全函数依赖
②所有的主属性对每一个不包含它的码,也是完全函数依赖 ③没有任何属性完全函数依赖于非码的任何一组属性
例:在关系模式STJ(S,T,J)中,S表示学生,T表示教师,J表示课程。
每一教师只教一门课。每门课由若干教师教,某一学生选定某门课,就确定了一个固定的教师。某个学生选修某个教师的课就确定了所选课的名称
函数依赖: (S,J)→T,(S,T)→J,T→J (S,J)和(S,T)都是候选码
STJ∈3NF (S,J)和(S,T)都可以作为候选码,S、T、J都是主属性,没有任何非主属性对码传递依赖或部分依赖。但STJ不是BCNF,因为T是决定因素,T不包含码
解决方法:将STJ分解为二个关系模式: ST(S,T) ∈ BCNF, TJ(T,J)∈ BCNF
关于第四范式和多值依赖的内容,大家按书复习
?例题:设有如下关系R
课程名 C1 C2 C3 C4 教师名 刘爽英 乔志伟 于得水 井超 教师地址 D1 D2 D2 D2 (1)它为第几范式? 为什么? (2)是否存在删除操作异常?若存在,则说明是在什么情况下发生的?
(3)将它分解为高一级范式,分解后的关系是如何解决分解前可能存在的删除操作异常问题?
解: (1)它是2NF。 因为R的候选关键字为“课程名”。依赖关系: 课程名→教师名,教师名 → 课程名,教师名→教师地址,所以课程名→教师地址。即存在非主属性“教师地址”对候选关键字课程名的传递函数,因此R不是3NF。但:因为不存在非主属性对候选关键字的部分函数依赖,所以R是2NF。
(2)存在。当删除某门课程时,会删除不该删除的教师的有关信息。 (3)分解为高一级范式如图所示。
R1(课程名,教师名) R2(教师名,教师地址)
14
课程号 C1 C2 C3 C4 教师名 刘爽英 乔志伟 于得水 井超 教师名 刘爽英 乔志伟 于得水 井超 教师地址 D1 D2 D2 D2 R1 R2 分解后,若删除课程数据时,仅对关系R1操作,教师地址信息在关系R2中仍然保留,不 会丢失教师方面的信息。
?第七章 数据库设计
? 本章内容:数据库设计概述、数据库设计的6个步骤
? 本章主要考点:?数据库设计的6个步骤 、ER图合并出现的冲突与解决方法、?ER图
转换成关系模式 ?1、简述数据库设计的主要步骤。
(1)需求分析(2)概念结构设计(3)逻辑结构设计(4)数据库物理设计 (5)数据库实施(6)数据库运行和维护。
2、ER图合并汇总会出现什么冲突?怎么解决冲突? ①出现的冲突有:属性冲突、命名冲突、结构冲突
②属性冲突和命名冲突通常用讨论、协商等行政手段解决。结构冲突通常根据应用语义对实体联系的类型进行综合或调整。
3、在数据库设计中,用E-R图来描述信息结构但不涉及信息在计算机中的表示,它是数据库设计的(B)阶段。 A.需求分析
B.概念设计
C.逻辑设计
D.物理设计
4、在关系数据库设计中,设计关系模式是(C)的任务。
A.需求分析阶段
B.概念设计阶段
C.逻辑设计阶段
D.物理设计阶段
5、数据库物理设计完成后,进入数据库实施阶段,下列各项中不属于实施阶段的工作是(B)。
A.建立库结构
B.扩充功能
C.加载数据
D.系统调试
6、从E-R模型关系向关系模型转换时,一个M∶N联系转换为关系模型时,该关系模式的关键字是(C)。
A.M端实体的关键字 B.N端实体的关键字 C.M端实体关键字与N端实体关键字组合 D.重新选取其他属性 7、当局部E-R图合并成全局E-R图时可能出现冲突,不属于合并冲突的是(B)。
A.属性冲突
B.语法冲突
C.结构冲突
D.命名冲突
8、数据流程图(DFD)是用于描述结构化方法中(C)阶段的工具。
A.可行性分析
B.详细设计
C.需求分析
D.程序编码
?9、设有商店和顾客两个实体,“商店”有属性商店编号、商店名、地址、电话,“顾客”有属性顾客编号、姓名、地址、年龄、性别。假设一个商店有多个顾客购物,一个顾客可以到多个
15
商店购物,顾客每次去商店购物有一个消费金额和日期。试画出E-R图,并注明属性和联系,并将其转换为关系模型。 解:E-R图
关系模型:顾客(顾客编号,姓名,地址,年龄,性别) 商店(商店编号,商店名,地址,电话) 购物(顾客编号,商店名称,日期,消费金额)
◎第十章 数据库恢复技术
? 本章内容:事务的基本概念、故障的种类、恢复策略 ? 本章主要考点:基本概念、恢复策略 1、(C)是DBMS的基本单位,它是用户定义的一组逻辑一致的程序序列。
A.程序
B.命令
C.事务
D.文件
2、事务的原子性是指(A)。
A.事务中包括的所有操作要么都做,要么都不做 B.事务一旦提交,对数据库的改变是永久的
C.一个事务内部的操作及使用的数据对并发的其他事务是隔离的 D.事务必须是使数据库从一个一致性状态变到另一个一致性状态
3、若数据库中只包含成功事务提交的结果,则此数据库就称为处于(B)状态。
A.安全
B.一致
C.不安全
D.不一致
4、若系统在运行过程中,由于某种原因,造成系统停止运行,致使事务在执行过程中以非控制方式终止,这时内存中的信息丢失,而存储在外存上的数据未受影响,这种情况称为(B)。
A.事务故障
B.系统故障
C.介质故障
D.运行故障
5、(B)用来记录对数据库中数据进行的每一次更新操作。
A.后援副本
B.日志文件
C.数据库
D.缓冲区
6、用于数据库恢复的重要文件是(C)。
A.数据库文件 B.索引文件
C.日志文件
D.备注文件
7、数据库恢复的基础是利用转储的冗余数据。这些转储的冗余数据包括(C)。
A.数据字典、应用程序、审计档案、数据库后备副本 B.数据字典、应用程序、日志文件、审计档案
16
C.日志文件、数据库后备副本 D.数据字典、应用程序、数据库后备副本 8、事务的特性为原子性、隔离性、一致性、持续性。
9、数据库系统中的故障包括事务内部的故障、系统故障、介质故障、计算机病毒。
◎第十一章 并发控制
? 本章内容:并发控制的概述、封锁、活锁和死锁、两段锁协议
? 本章主要考点:封锁中读锁和写锁的概念、活锁和死锁的概念、两段锁协议 1、设有两个事务T1、T2,其并发操作如右图所示,下面评
T1 T2 价正确的是(B)。 A.该操作不存在问题
B.该操作丢失修改
①读A=10 ② ③A=A-5写回 读A=10 A=A-8写回 C.该操作不能重复读 D.该操作读“脏”数据 2、解决并发操作带来的数据不一致性总是普遍采用(A)。 A.封锁
B.恢复
C.存取控制
D.协商 ④ 3、若事务T对数据R已经加X锁,则其他事务对数据R(D)。
A.可以加S锁不能加X锁
B.不能加S锁可以加X锁 D.不能加任何锁
C.可以加S锁也可以加X锁
4、并发操作会带来哪些数据不一致性(D)。
A.丢失修改、不可重复读、脏读、死锁 B.不可重复读、脏读、死锁
C.丢失修改、脏读、死锁 D.丢失修改、不可重复读、脏读 5、什么是封锁?
封锁就是事务T在对某个数据对象操作之前,先向系统发出请求,对其加锁 6、什么是活锁?什么是死锁?
活锁:事务T1封锁了数据R,事务T2又请求封锁R,于是T2等待。T3也请求封锁R,当T1释放了R上的封锁之后系统首先批准了T3的请求,T2仍然等待。T4又请求封锁R,当T3释放了R上的封锁之后系统又批准了T4的请求……T2有可能永远等待,这就是活锁的情形。避免方法:采用先来先服务的策略。
死锁:事务T1封锁了数据R1,T2封锁了数据R2,T1又请求封锁R2,因T2已封锁了R2,于是T1等待T2释放R2上的锁,接着T2又申请封锁R1,因T1已封锁了R1,T2也只能等待T1释放R1上的锁,这样T1在等待T2,而T2又在等待T1,T1和T2两个事务永远不能结束,形成死锁。
7、预防死锁的方法有一次性封锁法、顺序封锁法。 8、死锁的诊断与解除方法有超时法、等待图法。 9、试述两段锁协议的概念
所谓两段锁协议是指所有事务必须分两个阶段对数据项加锁和解锁。
获得封锁:在对任何数据进行读、写操作之前,事务首先要获得对该数据的封锁 释放封锁:在释放一个封锁之后,事务不再申请和获得任何其他封锁
若并发事务都遵守两段锁协议,则对这些事务的任何并发调度策略都是可串行化的 若并发事务的一个调度是可串行化的,不一定所有事务都符合两段锁协议
17