删除异常:如放弃修一门课,只选修这-门课的学生被删除
数据冗余度大 修改复杂
原因:存在对码的冗余依赖。Sdept、 Sloc部分函数依赖于码。
解决方法:S-L-C分解为两个关系模式,以消除这些部分函数依赖 SC(Sno, Cno, Grade) S-L(Sno, Sdept, Sloc) 2、2NF;若R∈1NF,且每一个非主属性完全函数依赖于码,则R∈2NF 简而言之,第二范式就是每一行被码唯一标识 例:S-L-C(Sno, Sdept, Sloc, Cno, Grade) ∈1NF S-L-C(Sno, Sdept, Sloc, Cno, Grade) ∈2NF SC(Sno, Cno, Grade) ∈ 2NF
S-L(Sno, Sdept, Sloc) ∈ 2NF
采用投影分解法将一个1NF的关系分解为多个2NF的关系,可以在一定程度上减轻原1NF关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。但将一个1NF关系分解为多个2NF的关系,并不能完全消除关系模式中的各种异常情况和数据冗余。
3、3NF:关系模式R 中若不存在这样的码X、属性组Y及非主属性Z(Z ? Y), 使得X→Y, Y → X, Y→Z成立,即每个非主属性都不传递依赖于R的码,则称R ∈ 3NF。若R∈3NF,则每一个非主属性既不部分依赖于码也不传递依赖于码。
简而言之,第三范式(3NF)要求一个数据库表中不能包含其它表中已包含的非码信息。 例:S-L(Sno, Sdept, Sloc) ∈ 2NF S-L(Sno, Sdept, Sloc) ∈ 3NF S-D(Sno,Sdept) ∈ 3NF D-L(Sdept, Sloc)∈ 3NF 如果R∈3NF,则R也是2NF。
局部依赖和传递依赖是模式产生数据冗余和操作异常的两个重要原因。
由于3NF模式中不存在非主属性对候选码的局部依赖和传递依赖,因此一定程度上上解决原2NF关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题具有较好的性能。将一个2NF关系分解为多个3NF的关系后,仍然不能完全消除关系模式中的各种异常情况和数据冗余。
4、BC范式(BCNF):关系模式R∈1NF,若X→Y且Y ? X时X必含有码,即每个属性都不传递依赖于R的码,则R ∈BCNF。
等价于:每一个决定因素都包含码,即消除任何属性对码的部分和传递函数依赖 若R∈BCNF 所有非主属性对每一个码都是完全函数依赖;所有的主属性对每一个不包含它的码,也是完全函数依赖;没有任何属性完全函数依赖于非码属性。 R ∈BCNF
R ∈3NF 。如果R∈3NF,且R只有一个候选码
R ∈BCNFR ∈3NF
例:关系模式S(Sno,Sname,Sdept,Sage)假定S有两个码Sno,Sname
S∈3NF S ∈ BCNF 例:系模式SJP(S,J,P) s 学生,J课程, P名次 函数依赖:(S,J)→P;(J,P)→S (S,J)与(J,P)都可以作为候选码,属性相交 SJP∈3NF,(不存在非主属性对码的部分和传递依赖) SJP∈BCNF,(每个决定因素都包含码)
第七章:数据库设计
1、数据库设计的基本步骤?每一个阶段的具体内容和方法?P205
1、需求分析
(1)内容:通过详细调查现实世界要处理的对象(组织、部门、企业等),充分了解原
系统(手工系统或计算机系统)工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。
调查的重点是“数据”和“处理”,通过调查、收集与分析获得用户对数据库如下要求: 信息要求:用户需要从数据库中获得信息的内容与性质。由信息要求可以到处数据要求,即在数据库中需要存储哪些数据。
处理要求:用户要完成什么处理功能,对处理的相应时间有什么要求,处理方式是批处理还是联机处理。
安全性与完整性要求。 (2)方法 1、 2、
调查组织机构情况。包括了解该组织部门组成情况、各部门的职责等,为分析信息流程准备。
调查各部门的业务活动情况。包括了解各个部门输入和使用什么数据库,如何加工处理这些数据,输出什么信息,输出到什么部门,输出结果的格式是什么,这是调查的重点。
3、 4、
在熟悉了业务活动的基础上,协助用户明确对信息系统的各种要求,包括信息要求、处理要求、安全性与完整性要求(重点)。
确定新系统的边界。对前面调查的结果进行初步分析,确定哪些功能由计算机完成或将来准备让那个计算机完成,哪些活动由人工完成。
(3)数据字典
数据流程图:表达了数据和处理的关系。 数据字典:系统中各类数据描述的集合,是进行详细的数据手机和数据分析所获得的主要成果。
1、 数据项:
数据项描述={数据项名、数据项含义说明、别名、数据类型、长度、取值范围、取值含义、与其他数据项的逻辑关系、数据项之间的联系}
2、 数据结构:数据之间的组合关系。
数据结构描述={数据结构名、含义说明、组成:{数据项或数据结构}}
3、 数据流:数据结构在系统内传输的路径。
数据流描述={数据流名、说明、数据流来源、数据流去向、组成:{数据结构}、平均流量、高峰期流量}
4、 数据存储:数据结构停留或保存的地方,也是数据流的来源和去向之一。
数据存储描述={数据存储名、说明、编号、输入的数据流、输出的数据流、组成:{数据结构}、数据量、存取额度、存取方式}
5、 处理过程:具体处理逻辑一般用判定表或判定树来描述。
处理过程描述={处理过程名、说明、输入:{数据流}、输出:{数据流}、处理:{需要说明}} 2、概念结结构设计 (1)方法
1、自顶向下:即首先定义全局概念结构的框架茫然和逐步细化。
2、自底向上。即首先定义各局部应用的概念结构,然后将他们集合起来,得到全局概念结构。
3、逐步扩张。首先定义最重要的核心概念结构,然后向外扩充,以滚雪球的方式逐步生成其他概念结构,直至总体概念结构。
4、混合策略。即将自顶向下和自底向上结合,用自顶向下策略设计一个全局概念结构
的框架,以它为顾家记成由自底向上策略中设计的各局部概念结构。
3、逻辑结构设计
4、物理结构设计
5、数据库实施
6、数据库运行和维护
2、什么是数据库的概念结构设计及其设计步骤,E-R图的设计
E-R图P213
3、什么是数据库的逻辑结构设计?试述其设计步骤?E-R图向关系模型的转换
逻辑结构设计P224
4、数据库的再组织和重构造
第八章:数据库编程
1、嵌入式SQL与主语言之间的通信
2、游标的概念,用法,作用
第十章:数据库恢复技术
1、事务概念和四个特性,恢复技术能保证事务的哪几个特性
事务是用户所定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。事务具有四个特性:
1、原子性:事务是数据库的逻辑单位,事务中所包括的读项操作要么都做,要么都不做。 2、一致性:事务执行的结果必须是使数据库从某个一致性状态转变到另一个一致性状态。 3、隔离性:一个事务的执行不能被其他事务干扰,即一个事务内部的操作及所试用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。 4、持续性:(永久性)事务一旦提交,它对数据库中主句的改变就应该是永久的。接下来的其他操作或昂不应对其执行结果产生任何影响。
为了保证事务的原子性、一致性与持续性。DBMS必须对事务故障、系统故障和介质故障进行恢复;为了保证事务的隔离性和一致性,DBMS需要对并发操作进行控制。
2、数据库中为什么要有恢复子系统?它的功能是什么?
因为计算机系统中的硬件的故障、软件的错误、操作员的失误及恶意的破坏都是不可避免的,这些故障轻则造成当前运行事务非正常中断,影响数据库中数据的正确性,重则会破坏数据库,导致数据库中的全部或部分数据丢失,因此必须要有恢复子系统。
恢复子系统的功能:把数据从错误状态恢复到某一已知的正确状态,也称为一致状态或完整状态。
3、日志文件的内容,作用,登记原则P283
日志文件是用来记录事务对数据库所做的更新操作的文件。
目的:进行事务故障恢复;进行系统故障恢复;协助后背副本进行截至故障恢复。 内容:
事务标识(标明是哪个事务); 操作的类型(插入、删除或修改); 操作对象(记录内部标识);
更新前数据的旧值(对插入操作而言,此项为空值) 更新后数据的新值(对删除操作而言,此项为空值) 作用:
1、事务故障恢复和系统故障恢复必须用到日志文件。
2.在动态转储方式中必须建立日志文件,后备副本和日志文件结合起来才能有效地恢复数据库。
3、在静态转储方式中,也可以建立日志文件。当数据库毁坏后可重新装入后援副本把数据库恢复到转储结束时刻的正确状态,然后利用日志文件,把已完成的事务进行重做处理,对鼓掌发生时尚未完成的事务进行撤销处理。
登记原则:
1、登记的次序严格按并发事务执行的时间测序。 2、必须先写日志文件,后写数据库。
4、数据库恢复的基本技术
P279
5、故障的种类及其影响以及相应的恢复策略
1、事务内部故障的恢复:事务内部故障的恢复由DBMS自动完成,对用户而言是透明的。DBMS执行的恢复步骤如下:
(1)反向扫描文件日志(即从后向前扫描日志文件),查找该事务的更新操作。
(2)对该事务的更新操作执行逆操作,即将日志记录中“更新前的值”写入数据库。 (3)继续反向扫描日志文件,进行同样的处理。
(4)如此继续下去,直至独到此事务的开始标记,该事务故障恢复就完成了。
2、系统故障的恢复:会造成数据库处于不一致的状态,主要是一方面,为完成事务对数据库所做的更新可能已写入数据库;另一方面,已提交事务对数据库做的更新可能尚留在缓冲区,未能及时写入数据库。因此恢复操作就是撤销(UNDO)故障发生时为完成的事务,重做(REDO)已完成的事务。恢复步骤如下:
(1)正向扫描日志文件,找出在故障发生之前已经提交的事务队列(REDO队列)和为完成的事务队列(UNDO队列)。 (2)对于撤销队列中的各个事务进行UNDO处理。进行UNDO处理的方法是:反向扫描日志文件,对每个UNDO事务的过呢更新操作执行逆操作,即将日志记录中“更新前的值”写入数据库中。
(3)对重做队列中的各个事务进行REDO处理。进行REDO处理的方法是:正向扫描日志文件,对每个REDO事务重新执行日志文件中所登记的操作,激将日志记录中“更新
后的值”写入数据库。
3、截至故障的恢复:恢复方法是重装数据库,然后重做已完成的事务,具体操作如下: (1)DBA装入最新的数据库后备副本(离故障发生时刻最近的转储副本),使数据库回复到转储时的一致性状态。
(2)DBA装入转储结束时的日志文件副本。
(3)DBA启动系统恢复命令,有DBMS实现恢复功能,即重做已完成的事务。
6、具有检查点的恢复技术,检查点记录以及包括的内容P287
检查点记录是一类新的日志记录。包括以下内容:
1、建立检查点时刻所有正在执行的事务的清单,如书图T。 2、这些事务最近一个日志记录的地址,如书图D。
第十一章:数据库并发控制技术
1、数据库中为什么要并发控制?能保证事务的哪些特性
数据库是共享资源,通常有许多事务同时运行。
当多个事务并发存取数据库中的数据时,会产生同时读取和/或修改同意数据的情况。若对并发操作不加以控制,可能会存取和存储不正确的数据,破坏数据库的一致性。所以,数据库管理系统必须提供并发控制机制。
并发控制可以保证事务的一致性和隔离性,保证数据库的一致性。
2、并发操作可能产生哪几类数据不一致
1、丢失修改:两个事务1、2同时读入同意数据并进行修改,2所提交的结果破坏(覆盖)了1提交的结果,导致1所做的修改被丢失。
2、不可重复读:事务1读取某一数据后,事务2对其执行更新操作,使1无法再现前一次读取的结果。
3、读‘脏’数据:事务1修改某一数据,将其协会磁盘,事务2读取同意数据后,事务1由于某种原因被撤销,这是事务1已修改过的数据将恢复原值,事务2所读取的数据就与数据库中的数据不一致,则事务2所独到的就是‘脏’数据,即不正确的数据。
避免不一致性的方法是并发控制机制。最常用的并发控制技术是封锁技术。
3、活锁和死锁的概念 P296
4、封锁以及不同的封锁类型和相关的相容性矩阵
5、并发调度的可串行性,冲突可串行性化调度的概念,如何判断一个并发调度是正确的? P299
6、两段锁协议的概念 P301
7、封锁的粒度,多粒度封锁协议 P302