关系数据库基础

1 关系数据库概述

相关名词

1

关系

在关系数据库中,实体以及实体间的联系都是用关系来表示的。类似于程序设计语言中变量的概念。

2

关系模式

是对关系的描述。类似于程序设计语言中类型定义的概念。

3

关系模型

是由若干个关系模式组成的集合。

4

属性

用来描述某一个事物的特征。

5

每个属性的取值范围所对应一个值的集合。

6

候选码

若关系中的某一属性或属性组的值能唯一标识一个元组,则称该属性或属性组为候选码。

7

主码

又称为主键,若一个关系有多个候选码,则选定其中一个为主码。

8

主属性

包含在任何候选码中的各个属性称为主属性。

9

非主属性

不包含在任何候选码中的属性称为非主属性。

10

外码

如果关系模式R中的属性或属性组非该关系的码,但它是其他关系的码,那么该属性集对关系模式R而言是外码

11

全码

关系模型的所有属性组是这个关系模式的候选码,称为全码。

12

元组/记录

13

字段

数据项

14

元数

属性的个数(列数)

15

基数

记录的个数(行数)

16

n元关系

元数为几,就是几元关系。

例:关系模式:

Student(Sno,Sname,SD,Sex)

 

关系数据库模式

关系模式可以表示为:

 R(U,D,dom,F)

  • R   -表示关系名,
  • U   -是组成该关系的属性名集合;
  • D   -是属性的域;
  • Dom-是属性向域的映像集合;
  • F     -为属性间数据的依赖关系集合。

 

 通常将关系模式简记为:

 R(U)或 R(A1,A2,A3,…,An)

 其中,R为关系名,A1,A2,A3,…,An为属性名或域名。

 例:

学生关系S有学号Sno、学生姓名Sname、系名SD、年龄SA属性;

课程关系C有课程号Cno、课程名Cname、先修课程号PCno属性;

学生选课关系SC有学号Sno、课程号Cno、成绩Grade属性。

定义关系模式及主码如下(未考虑F,即属性间的依赖关系)。

(1)学生关系模式S(Sno,Sname,SD,SA)

(2)课程关系模式C(Cno,Cname,PCno),Dom(PCno)=Cno

(3)学生选课关系模式SC(Sno,Cno,Grade)

关系的三种类型

(1)基本关系(基本表或基表):它是实际存在的表,是实际存储数据的逻辑表示。

(2)查询表。查询结果对应的表。

(3)视图表。它是一种虚拟表,是由基本表或其他视图表导出的表。

它本身是不独立存储在数据库的,数据库只存放它的定义。

关系的完整性约束

  • 关系的完整性约束:是对关系的某种约束条件,用来保证用户对数据库作出修改

时不会破坏数据的一致性,防止对数据的意外破坏。

(1)实体完整性:是指基本关系R的主属性不能取空值。

(2)参照完整性:

  • S(学号,姓名,所属院系,年龄)
  • D(院系编号,学院名称,学院地址,系主任)

(3)用户定义完整性:是针对某一具体的关系数据库的约束条件,反映某一具体

应用所涉及到的数据必须满足的语义要求。

2 关系运算

基本关系代数运算

运算名 描述 表示
并(Union) 关系R与S具有相同的关系模式,即R与S的元数相同(结构相同),关系R与S“并”
由属于R或属于S的元组构成的集合组成,记作R∪S

关系R与S具有相同的关系模式,关系R与S的差是由属于R但不属于S的元组构成
的集合,记作R-S

广义笛卡儿积 两个元数分别为n目和m目的关系R和S的广义笛卡儿积是一个(n+m)列的元组的集合。
元组的前n列是关系R的一个元组,后m列是关系S的一个元组,记作。
R×S
投影 投影是从关系的垂直方向进行运算,在关系R中选择出若干属性列A组成新的关系
广义投影 广义投影运算允许在投影列表中使用算术运算,实现了对投影运算的扩充。若有关系R,条件
F1,F2,…,Fn中的每一个都是涉及R中常量和属性的算术表达式,那么广义投影运算的形式定义为
选择 选择运算是从关系的水平方向进行运算,是从关系R中选择满足给定条件的诸元组,

扩展的关系运算

运算名 描述 表示
 关系R与S具有相同的关系模式,关系R与S的交由属于R同时又属于S的元组构成,
关系R与S的交记作R⋂S

θ连接 可以由基本的关系运算笛卡儿积和选取运算导出。

其中,θ为比较运算符,如>、<、=、≠,X和Y分别为R和S上可以进行比较的属性组

等值连接 当θ为“=”时,称为等值连接
自然连接 是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果集
中将重复属性列去掉。如果没有重复属性,那么自然连接就转化为笛卡儿积
广义投影运算允许在投影列表中使用算术运算,实现了对投影运算的扩充。若有关系R,条件
F1,F2,…,Fn中的每一个都是涉及R中常量和属性的算术表达式,那么广义投影运算的形式定义为
R÷S
外连接

外连接运算是连接运算的扩展,可以处理缺失的信息

外连接⟕(左侧为准,右侧填充) 取出左侧关系中所有与右侧关系中任一元组都不匹配的元组,用空值NULL填充所有来自右侧关系
的属性,构成新的元组,将其加入自然连接的结果中。

外连接⟖(右侧为准,左侧填充)
取出右侧关系中所有与左侧关系中任一元组都不匹配的元组,用空值NULL填充所有来自左侧关系的
属性,构成新的元组,将其加入自然连接的结果中。

全外连接⟗

对R或S中所有不匹配的元组,均用空元组分别匹配,R/S的信息在全外连接的结果中都得到保留。

3 元组演算、域演算与查询优化

元组演算

元组关系演算是非过程化查询语言,简称元组演算。它只描述所需信息,而不给出获得该信息的

具体过程:

 在元组演算中,其元组演算表达式中的变量是以元组为单位的,其一般形式为:

 {t|P(t)}

 其中,t是元组变量,P(t)是元组演算公式,公式是由原子公式组成。

1、原子公式:

(1)R(t)

 R是关系名,t是元组变量,R(t)表示:t是关系R中的一个元组。

(2)t[ i ] θ C 或 C θ t [ i ]

 t[i]表示元组变量t的第i个分量,C是常量,θ为算术比较运算符。

(3)t[ i ]θ u[ j ]

 t和u是两个元组变量。t[ i ]θ u[ j ]表示元组变量t的第i个分量与元组变量u的第j个分量之间满足θ运算。

2、公式的定义

若一个公式的一个元组变量前有全称量词⩝或存在量词∃符号,则称该变量为约束变量,否则称之

为自由变量。公式可递归定义如下:

(1)原子公式是公式。

(2)如果φ1和φ2是公式,那么,¬φ1,φ1∨φ2,φ1∧φ2,φ1⇒φ2也都是公式。分别表示如下命题: ¬φ1表示“φ1不为真”,φ1∨φ2表示“φ1或φ2为真”,φ1∧φ2表示“φ1和φ2都为真”;φ1⇒φ2表示“若φ1为真则φ2为真”。

(3)如果是φ1公式,那么,∃t(φ1)是公式。∃t(φ1)表示这样一个命题: “如果有一个t使φ1为真,则∃t(φ1)为真,否则∃t(φ1)为假”。

(4)如果是φ1公式,那么,⩝t(φ1)是公式。⩝t(φ1)表示这样一个命题: “如果对所有的t使φ1为真,则⩝t(φ1)为真,否则⩝t(φ1)为假”。

公式中运算符的优先顺序为

θ > ⩝和∃ > ¬ > ∧和∨ > ⇒,加括号时,括号中的运算符优先

域演算

域关系演算简称域演算。在域演算中,表达式中的变量是表示域的变量,可将关系的属性名视为

域变量,域演算表达式的一般形式为:

 {t1,…,tk|P(t1,…,tk)}

 其中,t1,…,tk是域变量,P(t1,…,tk)是域演算公式。

1、原子公式:

(1)R(t1,…,ti,…,tk)

 R是k元关系,ti是元组变量t的第i个分量,R(t1,…,ti,…,tk)表示这样一个命题:

 以t1,…,ti,…,tk为分量的元组在关系R。

(2)tiθC 或 Cθti

 ti表示元组变量t的第i个分量,C是常量,θ为算术比较运算符。

(3)tiθuj

 ti和uj是两个域变量。tiθ uj表示元组变量t的第i个分量与元组变量u的第j个分量之间满足θ运算。

2、公式的定义

若一个公式的一个元组变量前有全称量词⩝或存在量词∃符号,则称该变量为约束变量,否 则称之为自由变量。公式可递归定义如下:

(1)原子公式是公式。

(2)如果φ1 和φ2 是公式,那么,¬φ1 ,φ1∨φ2 ,φ1∧φ2 ,φ1⇒φ2 也都是公式。

(3)如果是φ1 公式,那么,∃ti (φ1 )是公式。∃ti (φ1 )表示这样一个命题: “如果有一个ti使φ1 为真,则∃ti (φ1 )为真,否则∃ti (φ1 )为假”。

(4)如果φ1 (t1 ,…,ti ,…,tk )是公式,那么,⩝ti (φ1 )是公式。⩝t(φ1 )表示这样一个命题: “如果对所有的ti使φ1 (t1 ,…,ti ,…,tk )为真,则⩝ti (φ1 )为真,否则⩝ti (φ1 )为假”。

公式中运算符的优先顺序为: θ > ⩝和∃ > ¬ > ∧和∨ > ⇒,加括号时,括号中的运算符优先。

查询优化

查询优化是指为查询选择最有效的查询计划的过程。一个查询可能会有多种实现方法,关键是如何找出一个与之等价的且操作时间又少的表达式,以节省时间、空间,提高查询效率。 • 在关系代数运算中,笛卡儿积、连接运算是最耗费时间和空间的。

优化的准则:

(1)提早执行选取运算。对于有选择运算的表达式,应优化成尽可能先执行选择运算的等价表达式,

以得到较小的中间结果,减少运算量和从外存读块的次数。

(2)合并乘积与其后的选择运算为连接运算。

(3)将投影运算与其后的其他运算同时进行,以避免重复扫描关系。

(4)将投影运算和其前后的二目运算结合起来,使得没有必要为去掉某些字段再扫描一遍关系。

(5)在执行连接前对关系适当地预处理,就能快速地找到要连接的元组。方法有两种:索引连接法、

排序合并连接法。

(6)存储公共子表达式。对于有公共子表达式的结果应存于外存(中间结果),这样,当从外存读

出它的时间比计算的时间少时,就可节约操作时间。

 

4 关系数据库设计基础

基础知识

1、函数依赖

• 定义:设R(U)是属性集U上的关系模式,X、Y是U的子集。若对R(U)的任何一个可

能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,

则称X函数决定Y或Y函数依赖于X,记作:X→Y

• 如果X→Y,那么对于任意两个相同的X,所对应的Y是一定相同的。

• 如果X→Y,但Y⊈X,则称X→Y是非平凡的函数依赖。一般情况下总是讨论非平凡的

函数依赖。

• 如果X→Y,但Y⊆X,则称X→Y是平凡的函数依赖。

• 函数依赖的定义要求关系模式R的任何可能的r都满足上述条件。因此不能仅考察

关系模式R在某一时刻的关系r,就断定某函数依赖成立。

• 函数依赖是语义范畴的概念,我们只能根据语义来确定函数依赖。

 

2、完全函数依赖与部分函数依赖

• 定义:在R(U)中,如果X→Y,并且对于X的任何一个真子集X',都有X'不能决定Y,

则称Y对X完全函数依赖,记作:X→Y。如果X→Y,但Y不完全函数依赖于X,则称Y

对X部分函数依赖,记作:X→Y。部分函数依赖也称局部函数依赖。

例:选课关系SC1(学号,课程号,成绩),F={(学号,课程号)→ 成绩}。

(学号,课程号)→ 成绩,学号⇸成绩,课程号⇸成绩。

选课关系SC2(学号,课程号,学生姓名,课程名称,成绩),F={(学号,课程号)

→ 成绩,(学号,课程号)→ 课程名称,(学号,课程号)→ 学生姓名,学号→学生

姓名,课程号 → 课程名称}。

 

3、传递函数依赖

• 定义:在R(U,F)中,如果X→Y,Y→Z,Y⊈X,Y⇸X,则称Z对X传递依赖。 例:供应商(Sno,Sname,Status,City,Pno,Qty),及函数依赖集如下,判断该关系是否存在传递函数依赖和部分函数依赖。

F={Sno→Sname, Sno→Status, Status→City,(Sno,Pno)→Qty}

 

1、候选码和主码:

设K为R(U,F)中的属性的组合,若K→U,且对于K的任何一个真子集K',都有K'不

能决定U,则K为R的候选码,若有多个候选码,则选一个作为主码。 • 候选码通常也可以称为候选关键字,主码通常也可以称为主关键字或主键。 • 包含在任何一个候选码中的属性叫做主属性,否则叫做非主属性。 例:选课关系SC1(Sno,Cno,Sname,Cname,G)

选课关系SC2(Sno,Cno,Sname,Cname)

2、外码:

若R(U)中的属性或属性组X非R的码,但X是另一个关系的码,则称X是R的 外码(Foreign Key)或称外键。 例:学生(学号,姓名,班主任,所属学院) 教师(职工号,姓名) 学院(编号,名称)

 

多值依赖

• 定义:

若关系模式R(U)中,X,Y,Z是U的子集,并且Z=U-X-Y。当且仅当对R(U)的

任何一个关系r,给定一对(x,z)值,有一组Y的值,这组值仅仅决定于x值而与z值

无关,则称“Y多值依赖于X”或“X多值决定Y”成立。记为:

X→→Y

例:参考书目(课程,教师,参考书)

课程→→参考书

如果Z=∅,为平凡的多值依赖;

如果Z≠∅,则为非平凡的多值依赖。

• 多值依赖具有如下6条性质:

1、多值依赖具有对称性。即若X→→Y,则X→→Z,其中Z=U-X-Y。

2、多值依赖的传递性。即若X→→Y,Y→→Z,则X→→Z-Y。

3、函数依赖可以看成是多值依赖的特殊情况。

4、若X→→Y,X→→Z,则X→→YZ。

5、若X→→Y,X→→Z,则X→→Y ⋂ Z。

6、若X→→Y,X→→Z,则X→→Z-Y

5 规范化

1NF⊃2NF⊃3NF⊃BCNF⊃4NF⊃5NF
通过分解,可以将一个低一级范式的关系模式转换成若干个高一级范式
的关系模式,这种过程叫做规范化。

1NF(第一范式)

• 定义:

若关系模式R的每一个分量是不可再分的数据项,则关系模式R属于第一范式。记为R∈1NF。

• 存在的问题:

(1)数据冗余。
(2)更新异常(修改操作后数据不一致)。
(3)插入异常。
(4)删除异常。

2NF(第二范式)

定义:若关系模式R∈1NF,且每一个非主属性完全依赖于码,则关系模式R∈2NF。

• 换句话说:当1NF消除了非主属性对码的部分函数依赖,则称为2NF

3NF(第三范式)

• 定义:若关系模式R(U,F)中不存在这样的码X,属性组Y及非主属性Z(Z⊈Y)使得
X→Y,(Y⇸X) Y→Z成立,则关系模式R∈3NF。
• 即:当2NF消除了非主属性对码的传递函数依赖,则称为3NF。

BCNF(巴克斯范式)

定义:关系模式R∈1NF,若X→Y且Y⊈X时,X必含有码,则关系模式R∈BCNF。 • 也就是说,当3NF消除了主属性对码的部分函数依赖和传递函数依赖,则称为BCNF。

结论:一个满足BCNF的关系模式,应有如下性质:
(1)所有非主属性对每一个码都是完全函数依赖;
(2)所有主属性对每一个不包含它的码,也是完全函数依赖;
(3)没有任何属性完全函数依赖于非码的任何一组属性。

4NF(第四范式)

• 定义:关系模式R∈1NF,若对于R的每个非平凡多值依赖X→→Y且Y⊈X时,X必含有
码,则关系模式R(U,F)∈4NF。
• 4NF是限制关系模式的属性间不允许有非平凡且非函数依赖的多值依赖。
• 注意:如果只考虑函数依赖,关系模式最高的规范化程度是BCNF,如果考虑多值
依赖,关系模式最高的规范化程度是4NF。

 

posted @ 2022-04-17 22:49  Fancy[love]  阅读(547)  评论(0编辑  收藏  举报