0%

数据库系统

参考
安徽大学教材《数据库系统原理及应用教程》苗雪兰
《数据库系统概论》王珊

第一章

数据库系统基本概念

(题)数据库管理系统的功能:数据定义、数据操纵、数据库运行管理、数据库维护功能。
数据库管理系统的功能:数据操作功能(数据的定义、建立、维护、查询和统计)、数据控制功能(对数据安全性和完整性的控制)

数据操纵功能

增删改查

数据库系统的特点

数据库系统与人工管理和文件系统相比的具有以下特点

数据结构化

数据库系统实现整体数据结构化。
“整体”结构化是指数据库中的数据不仅仅针对某个应用,而是面向整个组织或企业,不仅数据内部是结构化的,而且整体是结构化的,数据之间是具有联系的。

数据的共享性高、冗余度低且易扩充

数据独立性高

物理独立性:用户的应用程序与数据库中数据的物理存储是相互独立的
逻辑独立性:用户的应用程序与数据库的逻辑结构是相互独立的

数据由数据库管理系统统一管理和控制

数据的安全性保护

数据的安全性指保护数据以防止不合法使用造成的数据泄密和破坏

数据的完整性检查

数据的完整性指数据的正确性、有效性和相容性

并发控制
数据库恢复
其它
  • 数据的最小存取单位是数据项
  • (题:与文件系统的最大区别)整体数据结构化

数据模型

数据模型:对现实世界数据特征的抽象
数据模型是数据库系统的核心和基础

两类数据模型

概念模型(信息模型)

是按照用户的观点来对数据和信息建模,主要用于数据库设计

逻辑模型和物理模型

逻辑模型

包括:层次模型、网状模型、关系模型等,主要用于数据库管理系统的实现

物理模型

对数据最底层的抽象,描述数据在系统内部的表示范式和存取方式,或在磁盘或磁带上的存储方式和存取方法,是面向计算机系统的

概念模型

信息世界的基本概念

实体、属性、码、实体型、实体集、联系

概念模型的一种表示方法:实体-联系方法

E-R图

数据模型的组成要素

数据结构

描述数据库的组成对象以及对象之间的联系

数据操作

数据的完整性约束条件

一组完整性规则。
完整性规则是给定的数据模型中数据及其联系所具有的制约和依存规则,用以限定符合数据模型和数据库状态以及状态的变化,以保证数据的正确、有效和相容。

常见的数据模型

层次数据模型

定义
  • 有且仅有一个结点没有双亲结点,这个结点称为根结点
  • 除根结点之外的其他节点有且只有一个双亲结点

网状数据模型

定义
  • 有一个以上的结点没有双亲
  • 结点可以有多于一个的双亲

关系数据模型

在关系模型中,数据的逻辑结构是一张二维表,它由行和列组成。
是用关系表示实体及其联系

数据库系统的结构

数据库系统的三级数据模式结构

  • 模式(逻辑模式),是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
    • 模式实际上是数据库数据在逻辑级上的视图。
    • 一个数据库只有一个模式
  • 外模式(子模式或用户模式),是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
    • 通常是模式的子集
    • 一个数据库可以有多个外模式
  • 内模式(存储模式或物理模式),是数据物理结构和存储方式的描述,是数据在数据库内部的组织方式。
    • 一个数据库只有一个内模式

二级映像技术及其作用

外模式/模式映像

保证了数据与程序的逻辑独立性,简称数据的逻辑独立性
逻辑独立性:模式变,外模式不变

模式/内模式映像

保证了数据与程序的物理独立性,简称数据的物理独立性
物理独立性:内模式变,模式不变
(题)数据的物理独立性是指用户的应用程序与存储在磁盘上的数据库中的数据是相互独立

第二章 关系数据库

关系的完整性

关系模型中有3类完整性约束:实体完整性、参照完整性和用户定义的完整性

实体完整性

若属性A是基本关系R的主属性,则A的值不能为空值

参照完整性

参照完整性规则就是定义外码与主码之间的引用规则。
参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须:

  • 或者取空值(F的每个属性值均为空值)
  • 或者等于S中某个元组的主码值

关系代数

关系运算

选择、投影、连接、除运算等

第3章 关系数据库标准语言SQL

数据定义

基本表的定义、删除与修改

定义基本表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
CREATE TABLE <表名> 
(
<列名> <数据类型> [列级完整性约束条件]
[,<列名> <数据类型> [列级完整性约束条件]]
...
[,<表级完整性约束条件>]
);


CREATE TABLE Student
(
Sno CHAR(9) PRIMARY KEY, /*列级完整性约束条件,Sno是主码*/
Sname CHAR(20) UNIQUE, /*Sname取唯一值*/
Cname CHAR(40) NOT NULL /*列级完整性约束条件,Cname不能取空值*/
);

CREATE TABLE SC
(
Sno CHAR(9),
Cno CHAR(9),
PRIMARY KEY(Sno,Cno), /*主码由两个属性构成,必须作为表级完整性进行定义*/
FOREIGN KEY(Sno) REFERENCES Student(Sno),
FOREIGN KEY(Cno) REFERENCES Course(Cno)
/*表级完整性约束条件,Cno是外码,被参照表是Course,被参照列是Cno*/
);

修改基本表

1
2
3
4
5
6
ALTER TABLE <表名>
[ADD [COLUMN] <新列名> <数据类型> [完整性约束]]
[ADD <表级完整性约束>]
[DROP [COLUMN] <列名> [CASCADE|RESTRICT]] /*CASCADE 自动删除引用了该列的其他对象 RESTRICT 如果该列被其他对象引用,则拒绝删除该列*/
[DROP CONSTRAINT <完整性约束名> [RESTRICT|CASCADE]]
[ALTER COLUMN <列名> <数据类型>];

索引的建立与删除

建立索引

1
2
3
4
5
6
CREATE [UNIQUE] [CLUSTER] INDEX <索引名>
ON <表名> (<列名> [<次序>] [,<列名> [<次序>]] ...)

UNIQUE 每一个索引值只对应唯一得数据记录
CLUSTER 建立的索引是聚簇索引
<次序> 指定索引值得排列次序,可选ASC(升序)或DESC(降序),默认为ASC

数据查询

1
2
3
4
5
SELECT [ALL|DISTINCT] <目标列表达式> [,<目标列表达式>] ...
FROM <表名或视图名> [,<表名或视图名> ...]|(<SELECT语句>) [AS] <别名>
[WHERE <条件表达式>]
[GROUP BY <列名1> [HAVING <条件表达式>]] /*满足HAVING的条件才输出*/
[ORDER BY <列名2> [ASC|DESC]]; /*ASC 升序 DESC降序*/

数据更新

插入数据

1
2
3
INSERT
INTO <表名> [(<属性列 1> [,<属性列2>] ...)]
VALUES(<常量1> [,<常量2>] ...);

修改数据

1
2
3
UPDATE <表名>
SET <列名> = <表达式> [,<列名> = <表达式>] ...
[WHERE <条件>];

删除数据

1
2
3
DELETE
FROM <表名>
[WHERE <条件>]

视图

定义视图

1
2
3
CREATE VIEW <视图名> [(<列名> [,<列名>] ...)]
AS <子查询>
[WITH CHECK OPTION];

第4章 数据库安全性

数据库安全性控制

授权:授予与收回

GRANT

1
2
3
4
5
6
7
8
9
GRANT <权限> [,<权限>] ...
ON <对象类型> <对象名> [,<对象类型> <对象名>]...
TO <用户> [,<用户>] ... /*<用户> 若是PUBLIC,即为全体用户*/
[WITH GRANT OPTION]; /*获得某种权限得用户可以把这种权限授予其他用户*/

例:
GRANT SELECT,UPDATE(Cno)
ON TABLE 图书
TO PUBLIC

REVOKE

1
2
3
4
5
6
7
8
9
REVOKE <权限> [,<权限>] ...
ON <对象类型> <对象名> [,<对象类型> <对象名>] ...
FROM <用户> [,<用户>] ... [CASCADE|RESTRICT]; /*CASCADE 级联 RESTRICT 限制*/

例:
REVOKE INSERT
ON TABLE SC
FROM U5 CASCADE;

视图机制

通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动对数据提供一定程度的安全保护

第5章 数据库完整性

触发器

定义触发器

1
2
3
4
5
6
7
8
9
CREATE TRIGGER <触发器名>
{BEFORE|AFTER} <触发事件> ON <表名>
REFERENCING NEW|OLD ROW AS <变量> /*指出引用的变量*/
FOR EACH{ROW|STATEMENT} /*定义触发器的类型,指明动作体执行的频率*/
[WITH <触发条件>] <触发动作体> /*仅当触发条件为真时才执行触发动作体*/

<触发事件>:可以是INSERT、DELETE或UPDATE,也可以是组合
触发器类型:ROW 行级触发器 STATEMENT 语句级触发器

第六章 关系数据理论

关系数据模式的规范化理论

函数依赖与码

  • 函数依赖是码概念的推广
  • K是关系模式R的超码当且仅当K->R(注:K部分属性值相同时,其它所有属性值都相同)
  • K是R的候选码当且仅当
    • K->R,且
    • 没有$\alpha$$\subset$K,使$\alpha$->R(不存在K的真子集)
  • 平凡的函数依赖:若$\beta$$\subseteq$$\alpha$,$\alpha$ -> $\beta$
  • 非平凡的函数依赖:若$\beta$$\nsubseteq$$\alpha$,$\alpha$ -> $\beta$

1NF

R$\in$ 1NF,产生的问题:

  • 数据冗余度大
  • 插入异常:应该插入的数据未被插入
  • 删除异常:不应删除的信息也删除了
  • 修改复杂

2NF

定义:若R$\in$ 1NF,且每一个非主属性完全函数依赖于任何一个候选码,则R$\in$ 2NF。

3NF

定义:设关系模式R<U,F>$\in$ 1NF,若R中不存在这样的码X,属性组Y及非主属性Z(Y$\nsubseteq$Z)使得X$\rightarrow$Y,Y$\rightarrow$Z成立,Y$\nrightarrow$X,则称R<U,F>$\in$ 3NF。

由定义可以证明,若R$\in$ 3NF,则每一个非主属性既不传递依赖于码,也不部分依赖于码。

可能存在主属性对码的部分依赖和传递依赖。
(题)仍存在一定的插入和删除异常。

BCNF

定义:关系模式R<U,F>$\in$ 1NF,若X$\rightarrow$Y且Y$\nsubseteq$X时X必含有码,则R<U,F>$\in$ BCNF

即关系模式R<U,F>中,若每一个决定因素都包含码,则R<U,F>$\in$ BCNF
已消除了插入和删除的异常.

4NF

定义:关系模式R<U,F>$\in$ 1NF,如果对于R的每个非平凡多值依赖X$\rightarrow$$\rightarrow$Y(Y$\nsubseteq$X),X都含有码,则称R<U,F>$\in$ 4NF

4NF就是限制关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖。

函数依赖集的闭包

  • 给定函数依赖集F,存在其他函数依赖被F逻辑蕴含
    • 例,如果A$\rightarrow$B且B$\rightarrow$C,则可推出A$\rightarrow$C(即A$\rightarrow$C被A$\rightarrow$C和B$\rightarrow$C逻辑蕴含)
  • 被F逻辑蕴含的全体函数依赖的集合称为F的闭包,用F+表示F的闭包

Armstrong公理

  • 可利用Armstron公理找出F+
    • 若$\beta$$\subseteq$$\alpha$,则$\alpha$$\rightarrow$$\beta$(自反律)
    • 若$\alpha$$\rightarrow$$\beta$,则$\gamma$$\alpha$$\rightarrow$$\gamma$$\beta$(增补律)
    • 若$\alpha$$\rightarrow$$\beta$且$\beta$$\rightarrow$$\gamma$,则$\alpha$$\rightarrow$$\gamma$(传递律)
  • Armstrong公理是
    • 正确有效的(不会产生错误的函数依赖)
    • 完备的(产生所有成立的函数依赖即F+

例题
Armstrong公理的补充定律

计算F+

计算F+

属性集的闭包

属性集的闭包
计算$\alpha$<sup>+</sup>
例题
例题
例题
数据库求候选码的算法

数据库求候选码

【例1】关系模型R<U,F>,U={A,B,C,D},F={B→D,AB→C},求R候码。
在求解之前先要明白一些定理。我们把函数依赖集中F中的属性分为四类:

L类:所有依赖关系中仅出现在函数依赖左部的属性。
R类:所有依赖关系中仅出现在函数依赖右部的属性。
LR类:所有依赖关系中即出现在函数依赖左部又出现在函数依赖右部的属性。
N类:所有依赖关系中没有出现的属性。

定理一:对于给定的关系模式R及其函数依赖集F,若X(X∈U)是L类属性,则X必为R的任一候选码的成员。
定理二:对于给定的关系模式R及其函数依赖集F,若X(X∈U)是R类属性,则X不在任何候选码中。
定理三:对于给定的关系模式R及其函数依赖集F,若X(X∈U)是LR类属性,则X可能在候选码中。
定理四:对于给定的关系模式R及其函数依赖集F,若X(X∈U)是N类属性,则X必包含在R的任一候选码中。

第一步:先判断属性集U中所有属性属于哪一类。A仅出现在AB→C左边,属于L类。B仅出现在B→D左边和AB→C左边,属于L 类。C仅出现在AB→C右边,属于R类。D仅出现在B→D右边,属于R类。

第二步:由定理可知,A,B必在候选码中,C,D必不在候选码中。因为不知道是否还有其他属性,假定目前候选码K=AB。

第三步:求K=AB的闭包。根据闭包算法(具体请见闭包求法)得,AB+ =ABCD,发现AB的闭包等于属性集U。可以得出结论K=AB就是R的候选码,且是唯一候选码。

但如果第三步中,求得的闭包不等于U,便要继续算下去,看例2。

【例2】关系模型R<U,F>,U={A,B,C,D},F={BCD→A,A→C},求R候选码。

第一步:同样对U中属性进行分类,得出A是LR类,B是L类,C是LR类,D是类。

第二步:由定理可知,B,D必在候选码中,A,C可能在候选码中。假定目前候选码K=BD。

第三步:求K=BD的闭包。根据闭包算法得,BD+=BD,并不等于U。这时,我们从LR类中取一个属性,和BD组成临时候选码K。

第四步:先从LR类中取A,得到K=ABD。再求K=ABD的闭包,得到ABD+=ABCD,正好等于U,说明K=ABD是R的一个候选码。再从LR类中取C,得到K=BCD。再求K=BCD的闭包,得到BCD+=ABCD,也等于U,说明K=BCD也是R的一个候选码。所以R的候选码K={ABD,BCD}。

最后,如果第四步中在LR类中取一个属性的组合都不满足K的闭包等于数据集U,则从LR类中取2个,3个,……n个,分别组合,直到选出一个数据集K的闭包等于属性集U,K就是R的一个属性集。

属性闭包的用法

属性闭包的用法

正则覆盖

数据库系统P63
正则覆盖
正则覆盖
正则覆盖

无关属性

无关属性

模式分解

模式分解

第七章 数据库系统的设计方法

数据库系统设计概述

数据库系统设计的基本步骤

需求分析阶段

数据字典是关于数据库中数据的描述,即元数据,而不是数据本身。
数据字典包括:数据项、数据结构、数据流、数据存储和处理过程

概念结构设计阶段

E-R模型是用E-R图来描述现实世界的概念模型

逻辑结构设计阶段

E-R图向关系模型转换、数据模型优化

物理设计阶段

数据库实施阶段

数据库运行和维护阶段

概念结构设计

概念结构设计

E-R图集成

各子系统的E-R图之间的冲突主要有三类:属性冲突、命名冲突和结构冲突

  • 属性冲突:属性域冲突、属性取值单位冲突
  • 命名冲突:同名异义冲突、异名同义冲突
  • 结构冲突:同一个对象在不同的应用中具有不同的抽象、同一个实体在不同分E-R图中的属性组成不一致、实体之间的联系在不同的分E-R图中呈现不同的类型

数据库逻辑结构的设计

逻辑结构设计的任务就是把概念模型结构转换成某个具体的DBMS所支持的数据模型

数据模型得优化

数据库逻辑设计的结果不是唯一的。
关系数据模型的优化通常以规范化理论为指导。
并不是规范化程度越高的关系就越优。

设计步骤

  • 把概念模型转换成一般的数据模型
  • 将一般的数据模型转换成特定的DBMS所支持的数据模型
  • 对数据模型进行优化

数据库物理结构的设计

确定数据库的存储结构

确定数据的存放位置和存储结构要综合考虑存取时间、存储空间利用率和维护代价3方面的因素。3方面之间常相互矛盾,需权衡,选择一个折中方案。

第8章 数据库编程

存储过程和函数

存储过程

创建存储过程

1
2
CREATE OR REPLACE PROCEDURE 过程名 ([参数1,参数2 ...]) /*存储过程首部*/
AS <过程化SQL块>; /*存储过程体,描述该存储过程的操作*/

第10章 数据库恢复技术

事务

概念:事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是不可分割的工作单位
特性:原子性、一致性、隔离性、持续性

故障的种类

事务内部的故障

事务故障仅指非预期的故障。意味着事务没有达到预期的终点(COMMIT或者显式的ROLLBACK)。
恢复程序要撤销该事务已经作出的任何对数据库的修改,这类恢复操作称为事务撤销(UNDO)

系统故障(软故障)

指造成系统停止运转的任何事件,使得系统要重新启动。
恢复子程序必须在系统重新启动时让所有非正常终止的事务回滚,强行撤销所有未完成事务。
系统重新启动后,恢复子程序除需要撤销所有未完成的事务外,还需要重做(REDO)所有已提交的事务。

介质故障(硬故障)

计算机病毒

恢复的实现技术

恢复的基本原理:冗余

数据转储

登记日志文件

第11章 并发控制

数据库完整性

数据库的完整性是指数据的正确性和相容性

数据库并发控制

并发控制的基本概念

并发操作带来的数据不一致性包括:丢失修改、不可重复读、读“脏”数据

封锁及封锁协议

(题)封锁机制是实现数据库并发控制的主要方法。

锁的类型

排他锁(独占锁或写锁,简称X锁)、共享锁(读锁,简称S锁)

封锁协议

一级封锁协议

协议:事务T在修改数据之前必须对其加X锁,直到事务结束才释放。
防止丢失修改,不能保证可重复读、不读“脏”数据

二级封锁协议

协议:事务T对要修改的数据先加X锁,直到事务结束才释放X锁;对要读取的数据先加S锁,读完后释放S锁
防止丢失修改、读“脏”数据

三级封锁协议

协议:事务T在读取数据前对其先加S锁,在要修改数据之前对其加X锁,直到事务结束后才释放所有锁。
防止丢失修改、读“脏”数据、不可重复读

封锁出现的问题及解决方法

活锁和死锁

活锁

解决方法:先来先服务

死锁
死锁预防
  • 一次封锁法:要求每个事务必须一次将所有要使用的数据全部加锁,否则不能继续执行
  • 顺序封锁法:预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实施封锁
死锁的诊断和解除
  • 超时法
  • 等待图法

并发调度的可串行性

可串行化调度

定义: 多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行这些事务时的结果相同

可串行性是并发事务正确调度的准则

名词解释

数据库(DB)

数据库管理员(DBA)

(题)职责:定义概念模式、修改模式结构、编写完整性规则、(无编写应用程序)

数据库系统(DBS)

数据库管理系统(DBMS)

数据定义语言(DDL)

数据操纵语言(DML)

通过DML实现数据的插入、修改、删除等数据存取操作的功能

数据控制语言(DCL)