第一章 绪论
§1概念与术语
一、数据、数据库、数据库管理系统、数据库系统
1.数据:能够输入计算机并被计算机程序识别和处理的信息集合。
2.数据库:数据库是在数据库管理系统的管理和控制之下,存放在存储介质上的数据集合。
3.数据库管理系统(DBMS):数据库系统中对数据进行统一管理和控制的软件系统。
4.数据库系统:由数据库、数据库管理系统、数据库应用、DBA、计算机系统平台构成。
二、数据管理及其发展
1.人工管理
2.文件关系
缺点:数据冗余度大、数据一致性、完整性难以维持、数据与程序缺乏高度独立性。
3.数据库系统
优点:数据组织结构化;数据冗余度较小易扩充;具有较高独立性;统一的数据控制。
三、数据库技术发展
§2数据库管理系统DBMS
一、DBMS功能
1.数据库定义功能
2.数据库操作功能
3.数据库运行控制功能
4.数据通信功能
5.支持存取海量数据
二、DBMS构成
查询处理程序、事务管理程序、存储管理程序、元数据数据(关于数据的数据)
三、查询处理器
把对数据库的操作转换成对存储器处理的请求。
四、存储管理器
控制数据的存储和数据在磁盘和主存之间的移动
五、事务管理器
1.事务:一个事务是访问并可能更新数据库的一组数据库操作。
2.事务管理器的任务:维护日志、并发控制(加锁)、故障恢复
§3数据库系统的模式结构
一、数据库的模式结构
三层模式结构:外模式、模式、内模式
1.内模式:也称存贮模式或物理层,他描述数据的实际存贮方式。
2.模式:也称逻辑模式或逻辑层,他描述数据库所有数据及其联系。
3.外模式:面向用户,也称子模式、用户模式或视图层。
4.二级映像:外模式/模式、模式/内模式
二、数据库数据的逻辑独立性和物理独立性
数据独立性:再某一层上修改该层模式定义而不影响位于上一层模式的能力叫做数据独立性。
1.逻辑独立性:局部逻辑结构独立于全局逻辑结构
2.物理独立性:逻辑结构独立于物理结构
第二章 数据库建模
§1数据库设计步骤
需求分析->概念模型->数据模型
§2概念模型
一、概念建模、ER模型的基本概念与ER图表示
1.实体:现实世界一个具体或抽象的事物成为ER模型的一个实体。
2.属性:用于刻画现实世事物的特性。ER只允许单值
3.实体集:现实世界具有相同特性事物的集合。
4.域:属性的取值范围。
5.键码:能够唯一识别一个实体的最小属性集。
6.候选码、主码:一个实体集不止有一个键码时,这些键码统称候选码,任何一个实体集都必须选择一个键码作为主码。
二、实体集之间的联系
联系的多样性
1.两个实体集之间联系的类型
一对一、一对多、多对多 箭头指向一
2.多个实体集之间的联系
3.同一实体集内个实体之间的联系
§3子类
继承父类的特性和联系
§4弱实体集
组成一个实体集键码属性中的一部分或者全部,必须是来自其他实体集的键码属性。
给弱实体集提供键码属性的实体集,与弱实体集之间的联系,必须是单值的。(一对一或一对多)
§5对约束的建模
一、约束的类型
1.键码约束(实体完整性约束):必须保证一个实体集至少有一个键码。
2.参照完整性约束:两个实体集E、F,E中存在一个实体集e,F上必须存在一个对应的实体集f。
3.用户完整性约束
4.单值约束(实体的完整性约束):
属性的单值约束,构成主码的属性任何时候必须有一个值,其他属性最多有一个值。
联系的单值约束,
5.域的约束
§6ER图设计原则
一、忠实性
二、避免冗余
三、尽量简单
四、选择合适的事物类型
第三章 关系数据模型
§1 数据模型概述
一、数据模型三要素:数据结构、数据操作、数据的约束条件
§2关系模型的基本概念
一、术语
1.关系:一个关系就是一张命名的二维表。
2.属性:表的一列成为表的一个属性,列的名字称为属性名。
3.域:属性取值的范围。
4.元组:关系的一行叫一个元组。
5.元组分量:关系中元组的属性值。
6.关系的键码、主属性:能够唯一标识一个元组的最少属性,成为键码。唯一性、最小性。构成键码的属性称为主属性。
7.主码:主码由键码构成。
8.全码:若一个关系的键码由关系的所有属性构成,则这样的键码成为全码。
9.超码:一个关系中能够唯一标识一个元组的属性,称为超码。(没有最小)
二、关系模式与关系实例的概念
1.关系模式:关系名以及关系属性的集合。
2.关系实例:一个关系的当前元组的集合,称为关系实例。
3.关系数据库模式:若干个关系模式集合构成一个关系数据库模式。
4.关系的性质:基于某一关系模式的关系是随时间变化的;
一个关系中,在任何时候都不能同时出现取值相同的两个元组;
一个关系的不同元组上下无序;
一个关系的不同列的先后次序无关紧要;
元组各分量必须是不可再分的。
§3从概念模型到关系数据模型的转换
一、转换一般实体集
二、转化联系:
一对多转化时,键码选用多的实体集的键码
三、子类实体集转化
1.ER方法:转换实体集并选好键码。
2.OO方法:每一个对象类创建一个关系模式。(由根找分支)
3.空值法:每一个实体对应关系的一个元组,与特定实体无关的属性置空。(创建一个最大的)
四、弱实体集的转化
1.弱实体集的键码由自身键码属性和所依赖的实体集的键码属性共同构成。
2.弱实体集和他所依赖的实体集之间的联系不用处理。
第四章 关系代数运算
第五章 关系数据库语言SQL
一、SQL特点:
1.综合统一
2.高度非过程化
3.面向集合的操作方法
4.多种使用方式:语言既是自含式语言,又是嵌入式语言
5.语言简洁、语法简单、易学易用
二、SQL语言使用的三种表
1.基本表:实际存在的表,即,基本表是实表。DBMS保存并维护基本表的数据和元数据。
2.查询表:用于存放查询的中间结果,以及查询结果的表。
3.视图表:它是由基本表或者其它视图表“导出”的表。 视图表是“虚”表。视图本身没有独立存在的数据。
第六章 SQL中的数据约束
§1 SQL数据约束概述
一、数据约束的作用
1.实现数据库数据的完整性
2.实现数据库的主动服务
二、数据完整性分类
1.实体完整性:键码约束,单值约束
2.参照完整性:外码约束
3.用户定义完整性:定义在属性元组和关系上的约束
§2 SQL的键码约束和单值约束
一、主码和单值约束
UNIQUE PRIMARY
二、维护
1.当对表进行插入和修改时,DBMS将进行主码约束和单值约束的检查,拒绝破坏约束的操作。
2.主码属性任何时候不能为NULL
§3 SQL中的参照完整性约束
一、参照完整性约束与外码约束的说明
R1被参照关系 R2参照关系
外码:R1的主码作为R2的外码,R2中任意元组在外码R2上取值
FOREIGN KEY(Sno) REFERENCES Student(Sno)
二、维护
1.缺省策略:任何破坏参照完整性的更新被拒绝。
2.级联策略删、改被参照关系元组时,必须连带删改参照关系中外码所在元组或外码属性值
3.置空值,当删改被参照关系元组时,系统吧参照关系中对应的外码属性值置空
§4 SQL中基于属性和元组的约束
一、属性的非空约束和check约束
NOT NULL
CHECK(age>15)
二、基于元组的约束
第七章 关系数据库设计理论
§1 函数依赖的基本概念
一、函数依赖及其影响
解决数据冗余度太大、修改异常、删除异常问题。
二、函数依赖基本概念
1.函数依赖定义: 设:R(U)是属性集U 上的关系模式,X,YU。 如果对于R(U)的任意一个关系r,以及r 的任意两个元组t1,t2,不存在:t1[x]=t2[x],而t1[Y]t2[Y],则称X函数决定Y,或者说Y函数依赖于X。记为:XY。
2.完全函数依赖和部分函数依赖
1) 定义完全函数依赖:在R(U)中,如果XY,且对 X的任何一个真子集X’,都有X’ Y,则称Y对X完全函数依赖,记作: X f Y
2) 定义部份函数依赖:在R(U)中,如果XY, 但Y不完全函数依赖X,则称Y对X部份函数依赖,记作X P Y。
3.传递函数依赖
在R(U)中,如果X→Y,Y X ( Y X), Y→Z,则称Z传递函数依赖于X,记为X t Z 。
4.非平凡的函数依赖
若X→Y,且Y X,则称 X→Y是非平凡的函数依赖。
5. 如果K是关系模式 R(U)的一个键码,则必有:K -> U
§2 关系模型的规范化
关系模式的各属性域是“原子” 的,则该关系模式是第一范式的,简称1NF
一、2NF
1. 定义:设R 是一个关系模式。若R1NF,且每一个非主属性完全函数依赖于码,则 R2NF。
2. 理解:若R2NF,则R 中不存在非主属性对码的部份函数依赖。
二、3NF
1. 定义: 如果关系模式R(U,F)是2NF的,且不存在键码X、属性组 Y以及非主属性 Z ,使得 X→Y ,Y→Z 成立,则 R∈3NF
2. 理解:若R∈3NF,则R中不存在非主属性对码的传递函数依赖。
三、BCNF
1. 定义:设:关系模式R∈1NF。如果对于R的每一个函数依赖X→Y(Y X),X都含有键码,那么 R∈BCNF。
2. 理解:(1) BCNF具有以下性质:
a. 所有非主属性完全依赖于每个键码。
b. 所有主属性完全依赖于不包含它的键码。
c. 没有任何(主/非主)属性完全函数依赖于任一非主属性(组)。
(2)在函数依赖范畴内,BCNF达到最高规范化程度。
四、多值依赖和4NF
五、规范化小结
1. 规范化目的:减小关系模式因规范化程度过低带来的数据冗余,避免修改、删除的异常。
2. 规范化的实现途径:模式分解。
3. 规范化步骤
§3 函数依赖理论及其应用
一、 函数依赖的逻辑蕴涵
二、函数依赖Armstrong公理
1.函数依赖Armstrong公理:自反性、增广行、传递性
2.四条推理规则:合并规则,分解规则,伪增广规则,伪传递规则
三、函数依赖集的闭包和属性的闭包
1. 函数依赖集F的闭包(Closure)
定义:在关系模式R(U,F)中,F以及它的逻辑蕴涵所构成的函数依赖集合,叫做F的闭包,记为F+。
2. 属性集X关于函数依赖集F的闭包X+F
3.判定一个函数依赖是否属于F+?
四、函数依赖的等价与复盖
1. 函数依赖集的等价
2. 极小函数依赖集
3. 计算Fm的算法:
五、从给定的函数依赖集,确定关系模式的键码
若属性X仅出现在F的左部,则X必是关系模式R任一键码的属性。
若属性X不出现在F的左部和右部,则X必是关系模式R任一键码的属性。
若属性X只出现在F的右部, 则X不是关系模式R的键码属性。
§4 关系数据库模式设计
一、模式分解概述
二、模式分解的无损连接性
三、模式分解的保持函数依赖性
四、模式分解的算法
1. 模式分解的几个结论
一个关系模式R:
(1)它一定可以无损连接性地分解成若干个BCNF的子模式(甚至是4NF的子模式)。
(2)它一定可以保持函数依赖性地分解成若干个3NF的子模式,但不一定能达到BCNF。
(3)它可以既保持函数依赖性,又具有无损连接性地分解形成一些3NF的子模式,但不一定能分解成为若干BCNF的子模式。
2.保持无损连接的分解到BCNF
3.保持函数依赖的分解到3NF
第八章 数据库系统控制
§1 数据库的安全性
一、数据库的安全性:保护数据库、防止因用户非法使用数据库造成数据泄露、更改或破坏。
二、安全性控制的一般方法
1.用户身份的表示和坚定
2.存取权限控制
3.定义并使用时图
4.审计制度
5.数据加密
三、存取权限控制
存取权限基本类型:slect insert delete update
1.初始权限的产生:数据库对象的初始拥有者
2.授权语句
3.回收权限语句
§2 事务管理
一、事务
1.什么是事务:事务时访问并可能更新数据库数据的一个程序执行单位
2.事务的性质(ACID):
原子性:事务的操作不可分割,要不全部执行,要么全不执行
一致性:一个事务必须是一个正确的程序
隔离性:一个正在执行的事务在提交之前,不允许把他对共享数据所做的改变,提交给其他事物
持久性:一旦事务已经提交,也不能丢失该事务的执行结果
二、事务管理与事务恢复
1.数据库系统故障分类
三种故障:系统故障(软故障)介质故障(硬故障)事务故障
2.日志文件
特点:记录了所有数据库更新操作的具体细节
创建日志的原则:“先物理的些日志记录,后执行数据库更新操作”
3.事务恢复
利用日志文件的记录,可以恢复事务故障,所以事务是恢复单元。
§3 并发
一、并发及其问题
1.什么叫并发:多个事务同时存取相同的数据
2. 并发带来的问题:数据一致性问题
修改丢失、读入脏数据、不可重复的读
结论:并发事务必须有合适的控制机制
并发事务必须可串行化的调度,否则不能输数据库系统高效运行,并保证事务有正确的结果
二、并发控制机制:封锁
1.锁的分类
排它锁(X):拒绝其他事务任何类型的锁请求
共享锁(S):拒绝其他事务的X锁请求,但允许其他事务的S锁请求
三、三级锁协议——解决数据一致性问题
1.一级锁协议——解决丢失修改
一个事务在修改数据A之前,必须先对数据A加X锁,直到事务结束才释放该锁
2.二级锁协议——解决读入脏数据
在一级锁协议的基础上,加上约定:一个事务在读取数据A之前,必须对数据A加 S锁,读入数据A之后立即释放S锁。
3.三级锁协议——解决不可重复度问题
在一级锁协议的基础上,加上约定:一个事务在读取数据A之前,必须对数据A加 S锁,直到事务结束,才能释放S锁。
四、事务的可串行性和两阶段锁协议
1.事务的可串行性:如果多个事务的一个交错执行过程的结果,与它们的一个串行执行过程产生的结果相同,则称这些事务是可串行化的。
2. 两阶段锁协议
(1)如果所有的事务都遵守“两阶段锁协议 ”,则这些事务是可串行化的。
(2)两阶段锁协议:每个事务分两个阶段提出锁操作
获得锁操作:任何事务可以申请获得锁,但不能释放锁
释放所阶段:任何事务可以申请释放锁,但不能获得锁
五、SQL标准的隔离性级别
隔离性级别指:多个事务并发执行时,一个事务所能容忍干扰的程度。