数据库系统原理
一、数据库系统概述
1、通常将描述事物的符号记录称为数据。
2、从数据中获得的有意义的内容称为信息。
3、数据是反映客观事物属性的记录,是信息的具体表现形式。
4、数据库是长期存储在计算机内、有组织的、可共享的大量数据的集合。
5、数据库数据具有永久存储、有组织和可共享三个特点。
6、数据处理是将数据转换为信息的过程。
7、数据管理是指对各种数据进行分类、组织、编码、存储、检索和维护。
8、数据库管理系统是一个管理、控制数据库中各种数据库对象的系统软件,主要功能有:数据库的建立和维护,数据定义功能,数据组织、存储和管理,数据操作功能,数据库事物管理和运行管理,其他功能。
9、常见的关系型数据库管理系统:oracle、DB2、Sybase、MySQL 、SQL Server、PostgreSQL 、Access、visual foxpro 。
10、数据库系统特点:数据结构化,数据共享性高、冗余度低、易扩充,数据独立性高,数据由DBMS统一管理和控制。
二、信息与数据模型
1、信息的三种世界是指现实世界、信息世界和计算世界。
2、信息的现实世界通过实体、实体的特征、实体集及实体集之间的联系进行划分和认识。
3、信息世界通过概念模型、过程模型和状态模型反映现实世界。
4、概念模型通过E-R图中的对象、属性和联系对现实世界的事物及关系给出静态描述。
5、数据模型主要用来抽象、表示和处理现实世界中的数据和信息。
6、数据处理的三层抽象描述:概念层、逻辑层、物理层。
7、数据模型要素:数据结构、数据操作、数据的完整性约束条件。
8、概念模型->概念模型转逻辑关系模型
三、关系模型与关系规范化理论
1、关系模型概述
关系模型:
定义
用二维表结构来表示实体以及实体之间联系的数据模型
有关概念
关系(Relation) :对应通常所说的二维表;
元组(Tuple) :表中的一行即为一个元组;
属性(Attribute) :表中的一列即为一个属性;
候选码(Candidatekey) :关系中的一个属性或属性组,其值能唯一标识一个元组。若 从属性组中去掉任何一个属性,它就不具有这一性质了,这样的 属性组称作候选码。
主码(Primary -key):进行数据库设计时,从一个关系的多个候选码中选定一个作为主码。
全码(ALL-key):关系中所有属性是这个关系的候选码,称为全码
主属性(Prime Attribute) :任何一个候选码中的属性称。
非主属性(Nonprimary Attribute):不含任何候选码的属性
域(Domain) :属性的取值范围;
分量(Component) :元组中的一个属性值;
关系模式(Relational Modle) :对关系的描述,表示为:关系名(属性1,属性2,…)
2、关系数据结构
在关系模型中,现实世界的实体以及实体之间的各种 联系均用关系来表示,即用二维表来表示。
有关概念:
1、域:是一组具有相同数据类型的值的集合。在关系中用域来表示属性的取值范围。域中所包含的值的个数称域的基数(用m表示)
2、笛卡尔积:给定一组域D1,D2,…,Dn,这些域中可以有相同的。D1, D2,…,Dn的笛卡尔积为:D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}
(1)所有域的所有取值的一个组合
(2)不能重复
(3)笛卡尔积的基数是所有域的基数的累乘乘积
例子:
D1 ={ 张清玫,刘逸 } ,D2={计算机专业,信息专业}
D1×D2={(张清玫,计算机专业),( 张清玫,信息专业),(刘逸,计算机专业),(刘逸,信息专业)}
3、元组:笛卡尔积中每一个元素( d1, d2,…,dn )叫作一个 n 元组 (n-tuple)或简称元组。
4、分量:笛卡尔积元素( d 1, d 2,…, d n )中的每一个值 di 叫作一 个分量
5、基数:若 Di (i=1,2,…, n )为有限集,其基数为 mi ( i =1, 2,…, n ),则 D1× D 2×…× D n 的基数(即元组( d 1, d 2,…, d n ) 的个数 M 为
M
=
m
1
×
m
2
×
.
.
.
M=m1×m2×...
M=m1×m2×...
关系
关系定义 :
D 1× D 2×…× D n 的子集叫作在域 D1, D2,…, Dn 上的 关系,表示为:
R(D1,D2,…, Dn) 其中:R :关系名 n:关系的目或度
1.关系是笛卡尔积的有限子集。
2.笛卡尔积不满足交换律,但关系满足交换律
3.关系是的笛卡尔积中取出有实际意义的元组的集合
有关概念
1、属性:关系中不同列可以对应相同的域 ,为了加以区分,必须对每列起一个名字,称为属性,n 目关系必有 n 个属性
关系的基本性质
1、列是同质的
2、不同的列可出自同一个域
3、列的顺序无所谓
4、任意两个元组不能完全相同
5、行的顺序无所谓
6、分量必须取原子值,每一个分量都必须是不可分的数据项。
关系模式
关系模式:一个关系的属性名的集合R(A1,A2,……An)叫关系模式。关系模式是型,关系是值。
关系模式可以形式化地表示为: R ( U, D ,dom, F)
R :关系名,U:组成该关系的属性名集合 ,D:属性组 U 中属性所来自的域 ,dom:属性向域的映象集合, F:属性间的数据依赖关系集合
3、关系操作
在关系的的特点是集合的方式,操作的对象和操作 的结果都是集合。
查询操作:
选择、投影、连接、除、并、差、交、笛卡儿积
更新操作:
插入、删除、修改
4、关系的完整性
实体完整性规则:若属性 A 是基本关系 R 的主属性,则属性 A 不能取空值。
参照完整性:设 F 是基本关系 R 的一个或一组属性,但不是关系 R 主码。如果F与基本关系 S 的主码Ks相对应,则称F是基本关系R的外 码。
用户定义的完整性:针对某一具体关数据库的约束条件的, 它反映某一具体应用所涉及的数据 必须满足的语义要求。
5、关系代数
概述
1.关系代数:是一种抽象的查询语言。用对关系的运算来表达查询。
2.关系代数运算的三个要素
运算对象:关系
运算结果:关系
运算符:四类(集合运算符、专门的关系运算符、算术比较
符、逻辑运算符)
Ø集合运算符 :∪(并运算)、-(差运算)、∩(交运算)、×(广义笛卡儿积)
• 将关系看成元组的集合
• 运算是从关系的“水平”方向即行的角度来进行
Ø 专门的关系运算符: σ(选择),π(投影),(连接),÷(除)
• 不仅涉及行而且涉及列
Ø 算术比较符: >(大于)、≥(大于等于)、<(小于)、≤(小于等于)、=(等于)、<>(不等于)
• 辅助专门的关系运算符进行操作
Ø 逻辑运算符:(非),∧(与),∨(或) • 辅助专门的关系运算符进行操作
常用表示记号:
(1) R,tR∈,t[Ai]
设关系模式为R(A1,A2,…,An)它的一个关系设 R。
t∈R: 表示t是R的一个元组
t[Ai]: 表示元组t中相应于属性Ai的一个分量
(2) A,t[A],
若A={Ai1,Ai2,…,Aik},其中Ai1,Ai2,…,Aik是A1, A2,…,An中的一部分,则A称为属性列或属性组。
t[A]=(t[Ai1],t[Ai2],…,t[Aik]):元组t在属性列A上诸 分量的集合。
(A一把)表示{A1,A2,…,An}中去掉{Ai1,Ai2,…,Aik}后剩余的 属性组。
(3)象集 Z x :
给定一个关系 R( X,Z ), X 和 Z 为属性组。
当 t [ X ]= x 时, x 在 R 中的象集定义为:Z x={ t [ Z ]| t∈R,t [ X ]= x }
它表示: R 中属性组 X 上值为 x 的诸元组在 Z 上分量的集合
例子:
X | Z |
---|---|
姓名 | 课程 |
张军 | 物理 |
王红 | 数学 |
张军 | 数学 |
t[X]=x=张军
Zx |
---|
课程 |
物理 |
数学 |
运算:
1、并
R 与 S 所有 的元组的合并,并删除重复的元组,R ∪ S = { t | t∈R ∨ t ∈S }
应用:记录的插入和添加可以通过并运算来实现
2、差
由∈ R 而不∈ S 的所有元组组成,R-S = { t | t ∈ R ∧ t不∈S }
应用:可以实现关系数据库中记录的删除
3、交
由既∈ R 又∈ S 的元组组成R ∩ S = { t | t ∈ R ∧ t ∈S } = R –( R -S )= S –( S -R)
4、广义笛卡儿积。应用:用于两个关系的连接操作
5、选择。
σSdept = ‘IS’ (Student)或者σ5 =‘IS’ (Student) #查询信息系全体学生
σSage < 20(Student) 或者σ4 < 20(Student) #查询年龄小于20岁的学生
6、投影。(会去重)
R 中选择出若干属性列组成新的关系
π A ( R ) = { t [ A ] | t R } A:是R中的属性列
7、连接。
等值连接、自然连接(在等值连接的条件下,把重复的属性列去掉)、非等值连接(先做笛卡儿积,在筛选)
8、除。
给定关系 R ( X,Y ) 和 S ( Y,Z ),其中 X,Y,Z 为属性组。
R ÷ S = { t r [ X ] | t r∈ R ∧πY ( S )被Y x包含 }
Y x : x 在 R 中的象集, x = t r[ X ]
解题步骤:
定义X,Y,Z–>计算X的象集Zx–>计算S在Y上的投影–>计算结果(若Zx包含S在Y上的投影,则该Zx对应的原象即为结果)
6、规范化的基本概念
为什么要使用关系规范化?
如果不规范化,关系模式会存在数据冗余大,插入异常,修改异常,删除异常的问题。
通过模式分解解决问题:模式分解必须遵守: 无损连接分解; 保持函数依赖分解
7、函数依赖的公理系统
1、函数依赖(FD)的严格形式化定义:
定义:设有关系模式R(A1,A2,…,An),X和Y均为 {A1,A2,…,An}的子集,r是R的任一具体关系,t1、t2是 r中的任意两个元组;如果有t1[X]=t2[X]可以推导出 t1[Y]=t2[Y],则称X函数决定Y,或Y函数依赖于X,记 为X→Y
2、如果X→Y,但Y不包含于X,则称X→Y是 非平凡函数依赖,反之称为平凡函数依赖
3、如果X→Y,则X称作决定因素。
4、如果X→Y,并且Y→X,则可记作X←→Y。
5、(学号,课程号)→成绩是完全函数依赖
而:(学号,所在系)→系主任是部分函数依赖
Armstrong公理
设有关系模式R(U,F),X、Y、Z均为U的子 集,推理规则如下:
①自反律:如果YX,则X→Y;
②增广律:如果X→Y,则XZ→YZ;
③传递律:如果X→Y、Y→Z,则X→Z
推论:
①合并规则:如果X→Y、X→Z,则X→YZ;
②分解规则:如果X→YZ,则X→Y、X→Z;
③伪传递规则:如果X→Y、YW→Z,则XW→Z
逻辑蕴含:
有时需要根据给定的一组函数依赖来判断另 外一些函数依赖是否成立,这就是函数依赖逻辑 蕴涵所要研究的内容。
定义:设有关系模式R(U,F),X、Y 在 U内, 如果从F中的函数依赖能够推导出X→Y,则称F逻辑 蕴涵X→Y,或称X→Y是F的逻辑蕴涵。
闭包
定义:在关系模式R(U,F)中,被F 所逻辑蕴涵的函数依赖的全体称作 F的闭包,记为 F +
属性集闭包XF+算法
设有关系模式R(U,F),U={A,B,C},F={A→B,B→C}
如果X={A},
result=A,因为A→B,所以result=AB
result=AB,因为B→C,即AB→C,所以,result=ABC
则: XF+={A,B,C}
计算最小函数依赖集
例:已知R(U,F),U={A,B,C,D,E,G},F={ AB→C,D→EG,C→A,BE→C,BC→D,CG→BD,ACD→B,CE→AG },将F化为最小函数依赖
解: (1)利用分解规则:将所有F的右边变成单个属性的函数依赖:
F={ AB→C,D→E, D→G,C →A,BE →C,BC →D,CG →B,CG→D,ACD →B, CE →A , CE →G }
(2)去掉F中多余的函数依赖:具体做法如下:
①设 AB→C为多余的函数依赖,则去掉F中的AB→C得:
F1={ D→E, D→G,C →A,BE →C,BC →D, CG →B, CG→D,ACD →B, CE →A , CE →G }
计算(AB) F1+ =AB,又因为C不在(AB) F1+内 ,所以AB→C 是 非冗余的函数依赖,不能去掉
② 同理,去掉多余的函数依赖
(3)去掉F3左边多余属性:
对于ACD →B,因为,CD →B,所以可以推导出 ACD →B,故A是多余的,去掉A得CD →B,故函数依赖 集的最小集为:Fmin={ AB→C, D→E, D→G,C →A,BE →C,BC→D, CG→D, CD →B,CE →G }
8、规范化理论
1、满足最低要求的关系∈第一范式,简称1NF(First Normal Form),在第一范式中进一步满足一些要求的关系∈第二范式,称2NF,依次类推,还有3NF、BCNF、4NF、5NF。
2、范式越高,规范化程度越好,关系模式就越好。
1NF
每个关系模式都应满足最低要求:所有分量都必须是不可分的最小数据项,并把其称为第一范式(1NF)关系。 第一范式的目标是确保每列的原子性
2NF
定义: 如果R(U,F) ∈ 1NF,并且R中 的每个非主属性都完全函数依赖于主码, 则R(U,F) ∈2NF。
①若1NF的关系主码只含一列,那么这个关系就是2NF ②若1NF的关系主码有多个列组成,并且存在非主属性 对主属性的部分函数依赖,则该关系就不是2NF关系
3NF
定义:如果 R ( U , F ) ∈ 2NF,并且所有非主属性都不传递依赖于主码,则R(U,F) ∈ 3NF。
注意:第三范式的目标:确保每列都和主键列直接相关, 而不是间接相关
9、模式分解
1NF–>2NF:
去掉部分函数依赖。
步骤:将主码的每一个子集作为主码构成一张表 -->对于将依赖于每个 子表主码的属性放置到此子表中,对于没有依赖子表主码的属性,将子表删除.
2NF–>3NF
去掉传递依赖
步骤:对于不是候选码的每个决定因子,从表中删去依赖它的所有属性。–>新建一个表,新表中包含原表中所有 依赖该决定因子的属性,并将决定因子作为新表的主码。
S(Sno,Sdept,Sloc)分解后的关系模式为:S(Sno, Sdept) 、XI(Sdept,Sloc)
四、数据库设计方法步骤
需求分析阶段->概念结构设计阶段->逻辑结构设计阶段->数据库物理设计阶段->数据库实施阶段->数据库运行与维护阶段
1、需求分析步骤
收集资料->分析整理->数据流图->数据字典->用户需求
数据流图
符号说明
数据流:用带名字的箭头表示,名字表示流经的数据,箭头表示流向。
加工:对数据进行操作和处理,用圆表示
文件:是数据暂时存储或永久保存的地方,用=表示
外部实体:
数据字典
数据字典包括数据项、数据结构、数据流、数据存储、处理过程五个部分。
2、概念结构设计
方法
自顶向下、自底向上、逐步扩张、混合策略
步骤
数据抽象->集成各局部E-R模型,形成全局E-R模型->消除E-R模型中的属性、命名和结构冲突
3、逻辑结构设计
将E-R模型转换为特定DBMS所支持的数据模型