第一章
1.数据库管理系统(DBMS)
数据定义语言(DDL)、数据操纵语言(DML)
2.数据库系统(DBS)
由数据库、数据库管理系统、应用程序和数据库管理员组成
3.数据库管理技术的产生和发展
(1)人工管理阶段(2)文件管理阶段(3)数据库管理阶段
各区别见P7表(重)
数据库系统与文件系统的本质区别:数据库系统实现整体数据的结构化
4.物理独立性和逻辑独立性的概念P13
5.数据库系统的核心和基础:数据模型
6.两类数据模型:第一类概念模型、第二类逻辑模型和物理模型
逻辑模型-->物理模型,由数据库系统完成
7.概念模型的表示方法:实体—联系方法(E-R方法)P16
8.数据模型的组成要素:数据结构、数据操作、完整性约束条件
9.按数据结构的类型来命名数据模型:层次模型、网状模型、关系模型
10.关系模型的数据结构:关系(表)、元组(一行)、码、域、分量(元组中的一个属性值)、关系模式(表示为 关系名(属性1,属性2......))
11.模式是相对稳定的,实例时相对变动的
12.三级模式:模式、外模式、内模式
模式:是数据库中全体数据的逻辑结构和特征的描述
外模式(子模式或用户模式):数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述
内模式(储存模式):是数据物理结构和存储方式的描述
13.二级映像:
(1)模式/外模式映像:保证数据和程序的逻辑独立性
对于每一个外模式,都有一个。
(2)模式/内模式映像:保证数据和程序的物理独立性
第二章
1.域:具有相同数据类型的值的集合
不同取值个数个数称为域的基数
2.笛卡尔积:所有域的所有不同组合 P38
3.关系:R(D1,D2,...,Dn) n是关系的目或度
关系的候选码、主属性、主码、全码
4.关系有三种类型:基本关系(基本表或基表)、查询表、视图(虚表)
5.基本关系具有的性质:
(1)列是同质的
(2)不同的列可以出自同一个域
(3)分量必须去原子值,即每一个分量都必须是不可分的数据项
6.关系模式是型,关系是值
7.关系操作包括两大部分:查询操作和更新操作(插入、删除、修改)
查询操作分为选择、投影、并、差、笛卡尔积(5种基本操作)、连接、除、交
操作的对象和结果都是集合
该操作方式也称“一次一集合方式”
非关系数据模型的数据操作方式称“一次一记录方式
8.关系数据语言的分类
关系代数语言
关系演算语言:元组关系演算语言、域关系演算语言
具有关系代数和关系演算双重特点的语言:结构化查询语言
结构化查询语言是集查询、数据定义语言、数据操作语言和数据控制语言于一体的关系数据语言
关系完备性:一个关系数据语言能够表示关系代数可以表示的查询
9.外码:自身不是主码、取值会参照另外一张表(也可同一张表)的主码的取值
外码不一定要与相应的主码同名
10.关系的完整性
(1)实体完整性:主属性不能取空值
(2)参照完整性:关系中的外码或取空值或取等于它参照的关系的主码值
(3)用户定义的完整性
11.集合运算
(1)传统的关系运算:并:RUS 差:- 交 笛卡尔积:A×B
关系A、B分别有k1、k2个元组,则A×B有k1×k2个元组
(2)专门的关系运算:投影、选择、连接、除运算等
A.投影后会取消相同的元组
B.连接:等值连接(含自然连接,符号:,查询常用到)、非等值连接
自然连接中被舍弃的元组称为悬浮元组
外连接、左外连接、右外连接 P55
C.除运算(待定)
D.查询练习:P53、P56~57(重)
第四章 数据库安全性
1.数据库安全性主要包括:用户身份鉴别、多层存取控制、审计、视图、数据加密等技术
2.数据库管理系统提供的最外层安全保护措施:用户身份鉴别
方法:静态口令鉴别、动态口令鉴别、生物特征鉴别、智能卡鉴别
3.存取控制机制主要包括:定义用户权限、合法权限检查(组成数据库管理系统的存取控制子系统)
定义用户权限:登记到数据字典中,这些定义称为安全规则(授权规则)
4.自主存取控制(MAC)
(1)通过SQL的GRANT和REVOKE语句来实现
(2)用户权限由两个要素组成:数据库对象和操作类型
(3)定义存取权限称为:授权
(4)GRANT...ON...TO 用户; 详见P141-P142
若用户后面再加 WITH GRANT OPTION,表示该用户可以将该权限授权给其他
(5)REVOKE...ON...FROM 用户; 详见P143-P14
若用户后面再加 CASCADE,表示级联回收了该用户之前对其他用户的授权
(6)创建用户:CREATE USER [WITH][3个权限]
3个权限:CONNECT、RESOURCE、DBA 其区别见P145表
没有指定权限时,默认只是最低级权限
(7)角色:是权限的集合 角色的创建(CREATE)和收回(REVOKE)见P147
4.强制存取控制(DAC)
(1)数据库全部实体分为:主体(用户、进程)、客体(文件、基本表、视图等)
(2)给主体客体指派一个敏感度标记 :绝密、机密、可信、公开
(3)规则:不上读、不下写 P148
5.MAC和DAM共同构成数据库管理系统的安全机制。
系统先检查MAC,再检查DAC
6.视图机制的作用:A.提供数据的逻辑独立性
B.提供一定的安全性
创建:CREATE VIEW 视图名称
AS SELECT选出的一张小表
创建后可以对用户在该视图上授权 P149
7.审计:事后检查的安全机制
(1)功能:把用户对数据库的所有操作自动记录在审计日志里
(2)分为:用户级审计:用户对自己创建的表或视图进行审计
系统级审计:监测登录要求、授权和回收等
(3)通过AUDIT语句设置审计功能,NOAUDIT语句取消审计功能 P151
(4)审计设置和审计日志存放在:数据字典
8.数据加密 P151
第五章 数据库完整性
1.指数据的正确性和相容性
2.数据完整性和安全性的区别:P157
3.实体完整性
(1)定义方法:2种 P158 PRIMARY KEY
(2)实体完整性检查:
A.检查主码是不是唯一(全表扫描或在主码上建立索引如B+树索引)
B.检查主码的各属性是否为空
(3)处理:都拒绝执行
3.参照完整性
(1)定义方法:P160 FOREIGN KEY ()REFERENCES表名()
(2)参照完整性检查:
可能破坏参照完整性的情况:
参照表增加或修改一个元组;被参照表删除或修改一个元组 P161
(3)处理:拒绝(NO ACTION)、级联(CASCADE)、设置为空值
后2个是被参照表删除或修改时,对应的参照表删除或设为空值
后1个还要根据实际情况看是否可以设置为空值
(4)默认操作是拒绝,可以自己设置,在定义外码后加 ON DELETE CASCADE
或ON UPDATE CASCADE等等 P162
4.用户定义完整性:
(1)属性上的约束条件定义:NOT NULL;UNIQUE;CHECK(...) P163~164
(2)元组上的约束条件定义:在最后用CHECK语句,适用范围所有元组 P165
(3)处理:拒绝执行
5.完整性命令约束语句 CONSTRAINT 名字 P165~166
(1)可以对约束条件命名、可以对2个属性联合进行约束
(2)可以删除(DROP)或修改(ADD,修改前先删除)约束条件
6.触发器(事件-条件-动作规则):类似约束,但可实施更为复杂的检查和操作
(1)只有创建表的用户才可以在表上创建触发器,且数量有限
(2)只能在表上创建(触发器的目标表),视图不可
(3)定义:CREATE TRIGGER 触发器名
P170 触发时机 触发事件(包含在哪个表)
REFERENCING(引用到的变量)
...
触发动作间隔
WHEN(触发条件)
触发动作体
触发时机:BEFORE、AFTER
触发动作间隔:FOR EACH ROW(行级)、FOR EACH STATEMENT(语句级)
可引用的变量:对于行级,有OLDROW、NEWROW
对于语句级,有OLDTABLE、NEWTABLE
(4)删除触发器:DORP TRIGGER 触发器名 ON 表名
第六章
1.函数依赖、平凡函数依赖和非平凡函数依赖、完全函数依赖和部分函数依赖、传递函数依赖 P182
2.1NF;2NF:不存在部分函数依赖(若码只有一个属性,则一定满足);
3NF:非主属性对码不存在传递函数依赖 BCNF:决定因素都是码
4NF:不存在多值依赖
3.多值依赖P187
4.多值依赖的性质 P187~188
5.规范化的目的:尽量消除插入,删除异常,修改复杂,数据冗余
6.采取“一事一地”的模式设计原则
第七章 数据库设计
1.数据库设计的特点:
(1)数据库建设的基本规律:三分技术,七分管理,十二分基础数据
(2)结构(数据)设计和行为(处理)设计相结合
2.数据库设计的方法:新奥尔良方法、基于E-R模型的设计方法、3NF设计方法、面向对象的设计方法、统一建模语言(UML)方法
3.数据库设计的基本步骤:
(1)需求分析
(2)概念结构设计:产生E-R图
(3)逻辑结构设计:转为某个数据库管理系统所支持的数据模型,如关系模型
(4)物理结构设计:选取一个物理结构(包括存储结构和存取方法)
(5)数据库实施
(6)数据库运行和维护
以上3、4步与所选的数据库管理系统密切相关
4.需求分析
(1)调查的重点是“数据”和“处理”,通过调查获得以下要求:
信息要求、处理要求、安全性和完整性要求
(2)分析需求的方法:结构化分析方法(SA方法)
采用自顶向下、逐层分解的方式分析系统
(3)数据字典:即元数据,在需求分析阶段建立
包括数据项、数据结构、数据流、数据存储、处理过程 P213
5.概念结构设计
(1)四类方法:自顶向下、自底向上(主要)、逐步扩张、混合策略
(2)E-R图的集成:
A.合并E-R图,生成初步E-R图
B.消除不必要的冗余,设计基本E-R图
(3)合并E-R图会产生3种冲突:
属性冲突:属性域冲突、属性取值单位冲突
命名冲突:同名异义、异名同义
结构冲突:3种 P228
(4)消除冗余的方法:分析方法,即以数据字典和数据流图为依据
6.逻辑结构设计
(1)E-R图转换为关系模式
1:1关系、1:n关系、m:n关系的转换方法:P232(重)
(2)数据模型的优化:通常以规范化理论为指导
方法:确定函数依赖关系,消除冗余,确定范式,确定是否要对某些模式进行合并或分解
7.物理结构设计
(1)常用的存取方法:索引方法、聚簇方法(都是针对某个属性列)
(2)索引方法:B+树索引、hash索引 P236(重)
代价:维护索引,查找索引要付出代价
(3)聚簇方法:把属性上具有相同值的元组集中存放在连续的物理块中
聚簇的好处:A.大大提高查找的效率
B.减少访问磁盘的次数
C.减少存储空间(相同在聚集在一起,聚簇码只要存1次)
一个关系只能有一个聚簇。
何处建立聚簇:A.经常在一起进行连接操作的关系;
B.经常出现在在相等条件比较中的属性
C.属性上的值重复率很高(学号肯定不适合)
建立聚簇将导致元组移动其物理存储位置,此关系上原来建立的所有所有无效;
(4)确定数据的存放位置:将易变部分和稳定部分,经常存取部分和存取频率较低部分分开存放。
A.表和索引放在不同的磁盘上
B.比较大的表分放在不同磁盘上
C.日志文件与数据库对象放在不同磁盘上
第八章
1.使用游标的步骤:P251
第九章 关系查询处理和查询优化
1.查询处理分为四个阶段:查询分析、查询检查、查询优化、查询执行
(1)查询分析:语法规则
(2)查询检查:语义检查-->根据数据字典中的用户权限和完整性约束定义对用户的存取权限进行检查-->转换成关系代数表达式-->查询树(语法分析树)
(3)查询优化:包括代数优化和物理优化
代数优化:关系代数表达式的优化
物理优化:存取路径和底层操作算法的选择
(4)查询执行:优化器-->执行策略-->查询执行计划-->代码生成器-->代码
2.选择操作的查询算法
(1)简单的全表扫描算法
(2)索引扫描算法:通过索引找到满足条件的元组指针-->元组
对于范围选择的,可以用B+树索引
3.连接操作的查询算法
(1)嵌套循环算法
(2)排序-合并算法:外、内表都要排好序(各扫描一遍)
(3)索引连接算法:在内表建立索引(各扫描一遍)
(4)hash join算法:把连接属性作为hash码
第一步:划分阶段/扩建阶段:扫描一个较少元组的表进入哈希桶
第二步:试探阶段/连接阶段:扫描另外一个表.....
条件:第一阶段那个表能够完全放入内存的hash桶
4.查询优化例子:P281(重)
引入索引的是属于物理优化
5.查询树的启发式优化:P284-285
6.物理优化可以选择的方法:
(1)基于规则的启发式优化
(2)基于代价估算的优化
(3)两者结合的优化方法
7.基于启发式规的优化
(1)选择操作的启发式规则:什么时候用全表扫描,什么时候用索引扫描
P286~287
(2)连接操作的启发式规则:选择算法考虑顺序:有序选2算法-->有索引的选3算法-->选4算法-->选嵌套循环算法(选小的表作为外表)
7.基于代价估算的优化 P288(重)
(1)全表扫描算法
(2)索引扫描算法
(3)嵌套循环连接算法
(4)排序-合并算法
8.语义优化法:P289(略看即可)
第十章 数据库恢复技术
1.事务:恢复和并发控制的基本单位
4个特性:原子性、一致性、隔离性、持续性
事物以BEGIN TRANSACTION开始,以COMIT或ROLLBACK结束
2.三种写入硬盘的策略:force、no force、steal
3.故障的种类
(1)事务内部的故障:非预期的,如运算溢出、并发事务发生死锁
处理:UNDO撤销
(2)系统故障(软故障):CPU故障、操作系统故障、DMBS代码错误,断电
处理:未提交的UNDO,已提交的REDO重做
(3)介质故障(硬故障):磁盘损坏
(4)计算机病毒
4.恢复的基本原理:冗余
5.建立冗余数据(恢复的实现)最常用的技术:数据转储、登记日志文件
6.数据库恢复中采用的基本技术:数据转储(通过后备副本或后援副本)
7.转储类型
(1)静态转储
优点:保持数据一致性
缺点:转储必须等待...新事务的开始要等待...降低了数据库的可用性
(2)动态转储
缺点:数据不一致
解决:建立日志文件登记转储期间各事务对数据库的操作
(3)海量转储
(4)增量转储
8.登记日志文件 P298~299
9.恢复策略
(1)事务故障的恢复:UNDO
步骤:A.反向扫描日志文件
B.对该事务的更新操作执行逆操作
C.重复
(2)系统故障的恢复:UNDO或REDO
步骤:A.正向扫描日志文件,找出已提交的事务记入重做队列和未完成的事务记入撤销队列
B.分别对2个队列进行处理
(3)介质故障的恢复:重装数据库,重做已完成的事务
步骤:A.装入最新的后备副本
对于动态转储,还要装入日志文件副本
B.装入相应的日志文件副本,重做已完成的事务
10.具有检查点的恢复技术
(1)隔一段时间在日志文件中建立检查点,在另一个文件(重新开始文件)中记录各个检查点的地址
(2)检查点记录的内容:P302
(3)将缓存中的所有日志记录写入磁盘的日志文件-->建立检查点-->缓存中所有数据记录写入磁盘的数据库-->将检查点地址写入重新开始文件
(4)出现故障时,采取的不同恢复策略:P302~303
(5)使用检查点方法恢复的步骤:P303
11.数据库镜像:只选择对关键数据和日志文件进行镜像,而不是对整个数据库
第十一章
1.事务执行类型:串行执行,交叉并发方式,同时并发方式
2.并发必须保证事务的一致性和隔离性
3.并发可能带来的问题
(1)丢失修改:2个人同时修改同一数据
(2)不可重复读:一个人读取期间,另一个人对该数据进行修改,删除或添加新的纪录 幻影现象
(3)读“脏”数据
主要原因是并发破坏了隔离性,并发控制机制就是要用正确的方式调度并发操作
4.封锁
(1)排它锁(写锁,X锁);共享锁(读锁,S锁)
(2)2种锁的区别:P312
5.活锁解决:采用先来先服务的策略
6.死锁
(1)预防方法:A.一次封锁法 B.顺序封锁法
(2)诊断:A.超时法 B.等待图法(有回路)
(3)解除:撤销一个代价最小的事务
7.可串行化调度:其结果与某一次串行执行的结果相同
8.冲突操作:不同事务对同一数据的 读写或写写;其它操作都不是
9.不同事务的冲突操作和同一事务的两个操作是不能交换的
10.一个调度能够通过交换形成一个串行调度,则称冲突可串行化调度
交换例题 P318
11.冲突可串行化调度--->串行化调度正确的调度
不满足冲突可串行化调度也可以是串行化调度 P319
12.两段锁协议 P319
(1)遵守两段锁协议--->可串行化调度 只是充分条件
(2)一次封锁法遵守两段锁协议,但遵守两段锁协议不一定是一次封锁法,可能发生死锁
13.封锁粒度
14.多粒度封锁 多粒度树
15.意向锁 IS IX SIX=S+IX 相容矩阵