《数据库系统概论》复习总结 联系客服

发布时间 : 星期六 文章《数据库系统概论》复习总结更新完毕开始阅读

例:在关系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