本章内容提要关系数据库系统是本书的重点 。 在数据库发展的历史上,最重要的成就是关系模型 。
关系数据库系统与非关系数据库系统的区别是:关系系统只有,表,这一种数据结构;而非关系数据库系统还有其他数据结构,对这些数据结构有其他的操作 。
本章讲解关系数据库的重要概念,包括关系模型的数据结构、关系的完整性以及关系操作。
介绍用代数方式来表达的关系语言即关系代数。
第二章 关系数据库
.本章重点:
关系模型及其基本概念;
关系操作及关系的完整性;
关系代数及关系代数表达式 。
本章难点:
关系数据库系统与非关系数据库系统的区别;
关系的内涵与外延;
关系代数中的运算 ( 除 )
第二章 关系数据库关系数据库系统 是支持关系模型的数据库系统。
关系模型组成,
关系数据结构、
关系操作集合、
关系完整性约束。
第二章 关系数据库
2.1 关系模型概述一、单一的数据结构 ——关系二、关系操作
1,常用的关系操作包括:
查询操作,选择、投影、连接、除交、并、差更新操作,增加、删除、修改
2,关系操作的特点集合操作方式。即操作的对象和结果都是集合。
3,关系数据语言关系代数语言 如 ISBL
关系演算语言 如 APLHA QBE
具有关系代数和关系演算双重特点的语言 SQL
第二章 关系数据库
2.1 关系模型概述三、关系的三类完整性实体完整性,
参照完整性,
用户自定义完整性第二章 关系数据库
2.1 关系模型概述通用专用
2.2.1 关系
1,域( Domain)
定义 2.1 域( Domain)是一组具有相同数据类型的值的集合。
2,笛卡儿积( Cartesian Product)
定义 2.2 给定一组域 D1,D2,…,Dn,这些域中可以有相同的。 D1,
D2,…,Dn的 笛卡儿积 ( Cartesian Product)为:
D1× D2× …× Dn={(d1,d2,…,dn)|d i ∈ Di,I=1,2,…,n,}其中每一个元素叫做一个 n元组,或简称为 元组 。元素中每一个值 d i叫做一个 分量 。
若 Di ( i= 1,2,…,n)为有限集,其基数为 mi ( i=1,2,…,n),则 D1× D2× …× Dn
的基数 M为 M = m1× m2× …× mn
第二章 关系数据库
2.2 关系数据结构及形式化定义第二章 关系数据库
2.2 关系数据结构及形式化定义例 1,设 D1={1,2,3} D2 ={A,B}
D1× D2={( 1,A),( 1,B),( 2,A),( 2,B),
( 3,A),( 3,B) }
基数为 3× 2 =6
写成二维表的形式为:
D1 × D2 = D1 D2
1 A
1 B
2 A
2 B
3 A
3 B
1
2
3
A
B
2.2.1 关系
3,关系( Relation)
定义 2.3 D1× D2× …× Dn的子集叫做在域 D1,D2,…,Dn上的关系,用
R(D1,D2,… Dn) 表示。这里 R表示关系的名字。 n是关系的目或度。
关系中的每个元素是关系中的元组,通常用 t 表示当 n=1时,称为单元关系。
当 n=2时,称为二元关系。
关系是一个二维表,表的每行对应一个 元组,表的每列对应一个域。由于域可以相同,为了加以区分,对每列起一个名字,
称为 属性 。 n目关系必有 n个属性。
第二章 关系数据库
2.2 关系数据结构及形式化定义
若关系中的某一属性组的值能唯一地标识一个元组,则称该属为 候选码 ( Candidate key )。
若一个关系有多个 候选码,则选定其中一个为 主 码 ( Primary key )。
主码的诸属性称为 主属性 ( Prime attribute)。不包含在任何 候选码 中的属性称为 非主属性 ( Non-key attribute)
在数据库中我们要求关系的每一个分量必须是不可分的数据项。
并把这样的关系称为 规范化的关系,简称为范式 。
关系可以有三种类型:
基本关系(又称为基本表或基表。它是实际存在的表)
查询表(是查询结果对应的表)
视图表(是由基本表和其它视图表导出的表,是虚表,
不对应实际存储的数据)
第二章 关系数据库
2.2 关系数据结构及形式化定义对关系的限定和扩充:
( 1)无限关系在数据库系统中是无意义的。限定关系数据模型中的关系必须是有限集合。
( 2)通过为关系的每个列附加一个属性名的方法取消元组的有序性。即( d1,d2,…di,dj,…dn)= ( d1,d2,…dj,di,…dn)
第二章 关系数据库
2.2 关系数据结构及形式化定义基本关系有以下性质:
1,列是同质的,即每一列中的分量是同一类型的数据,
来自同一域。
2,不同的列可出自同一域,每一列称为属性,要给予不同的属性名。
3,列的顺序无所谓,即列的次序可以任意交换。
4,任意两个元组不能全同。
5,行的顺序无所谓,即行的次序可以任意交换。
6,分量必须取原子值,每一分量必须是不可分的数据项。
第二章 关系数据库
2.2 关系数据结构及形式化定义第二章 关系数据库
2.2 关系数据结构及形式化定义
2.2.2 关系模式
关系数据库中,关系模式是型,关系是值。
关系是元组的集合。因此关系模式必须指出这个元组集合的结构,
即它由哪些属性构成,这些属性来自哪些域,以及属性与域之间的映象关系。
定义 2.4 关系的描述称为关系模式 ( Relation Schema) 。它可以形式化地表示为:
R( U,D,dom,F)
其中,R为关系名;
U为组成该关系的属性名集合;
D为属性组 U中属性所来自的域;
dom为属性向域的映象集合;
F为属性间数据的依赖关系集合。
第二章 关系数据库
2.2 关系数据结构及形式化定义
关系是关系模式在某一时刻的状态或内容。
关系模式是静态的、稳定的。
关系是动态的、随时间不断变化的。
在实际中,常常把关系模式和关系统称为关系,可以从上下文中加以区别。
第二章 关系数据库
2.2 关系数据结构及形式化定义
2.2.3 关系数据库关系数据库,在一个给定的应用领域中,所有实体及实体之间联系的关系的集合构成一个关系数据库。
关系数据库有型和值之分 。
关系数据库的型,也称为关系数据库模式,包括若干域的定义以及在这些域上定义的若干关系模式。
关系数据库的值,是这些关系模式在某一时刻对应的关系的集合,通常称为关系数据库。
第二章 关系数据库
2.3 关系的完整性
关系模型的完整性规则是对关系的某种约束条件。
关系模型有三类完整性约束:实体完整性、
参照完整性、
用户定义的完整性。
其中 实体完整性和参照完整性 是关系模型必须满足的完整性约束条件,被称作是关系的两个 不变性 。
第二章 关系数据库
2.3 关系的完整性一、实体完整性( Entity Integrity)
规则 2.1 实体完整性规则设属性 A是 基本关系 R的主属性,则属性 A不能取空值。
对 实体完整性规则的说明:
1,实体完整性规则是针对基本关系而言的。一个基本关系通常对应现实世界的一个实体集。
2,现实世界的实体是可区分的,即他们具有某种唯一性标识。
3,关系中由主码作为唯一性标识。
4,主属性不能取空值。 空值是,不知道,或,无意义,的值。
5,例 2:学生( 学号,姓名,出生日期,班级,所属系,专业号)
6,学生选课( 学号,课程号,成绩)
第二章 关系数据库
2.3 关系的完整性二、参照完整性( Referential Integrity )
定义 2.5 设 F是基本关系 R的一个或一组属性,但不是关系 R的码,
如果 F与基本关系 S的主码 KS相对应,则称 F是基本关系 R的 外码
( Foreign Key ),并称基本关系 R为 参照关系,基本关系 S为 被参照关系 或目标关系。关系 R和 S不一定是不同的关系。
目标关系 S的主码 KS和参照关系的外码 F必须定义在同一个(或一组)域上。
参照完整性规则是定义外码与主码之间的引用规则。
规则 2.2 参照完整性规则若属性(或属性组) F是基本关系 R的外码,它与基本关系 S的主码 KS相对应(基本关系 R和 S不一定是不同的关系),则对于 R中每一个元组在 F上的值必须为:
( 1)或者取空值
( 2)或者等于 S中某个元组的主码值。
第二章 关系数据库
2.3 关系的完整性例 3,学生 R( 学号,姓名,出生日期,班级,所属系,专业号)
专业 S( 专业号,专业名) 被参照关系或目标关系例 4,学生( 学号,姓名,出生日期,班级,所属系,专业号)
课程( 课程号,课程名,学分)
选修( 学号,课程号,成绩)
例 5,学生 2(学号,姓名,出生日期,班级,所属系,班长)
第二章 关系数据库
2.3 关系的完整性三、用户定义的完整性 (User-defined Integrity )
用户定义的完整性是针对某一具体关系数据库的约束条件。它反映某一具体应用所涉及的数据必须满足的语义要求。
第二章 关系数据库
2.4 关系代数
关系代数是一种抽象的查询语言,是关系数据操纵的一种传统表达方式。
关系代数是用对 关系的运算 来表达查询的。
运算的三要素:运算对象,运算符、运算结果
关系代数的运算对象:关系
关系代数的运算结果:关系
关系代数的运算符:集合运算符专门的关系运算符算术比较符逻辑运算符
关系代数运算按运算符分类:传统的集合运算专门的关系 运算第二章 关系数据库
2.4 关系代数集合运算符
∪ - ∩
并 差 交专门的关系运算符 σ ∏ ∞ ÷ ×
选择 投影 连接 除 广义笛卡耳积算术比较符 > ≥ < ≤ = ≠
逻辑运算符? ∧ ∨
非 与 或第二章 关系数据库
2.4 关系代数
2.4.1传统的集合运算定义 2.6 关系相容 设关系 R和关系 S具有相同的目 n,且相应的属性取自同一个域,则称关系 R和关系 S是关系相容的。
设关系 R和关系 S是关系相容的,则可以定义以下基本操作:
1,并 ( Union )
关系 R和关系 S的并记为,R∪S={t| t∈R ∨ t∈S}
其结果仍为 n目关系。由属于 R或属于 S的元组组成。
2,差 ( Difference )
关系 R和关系 S的差记为,R-S={t| t∈R ∧ t?S}
其结果仍为 n目关系。由属于 R而不属于 S的元组组成。
3,交 (Intersection )
关系 R和关系 S的交记为,R∩S={t| t∈R ∧ t∈S}
其结果仍为 n目关系。由既属于 R又属于 S的元组组成。
关系的交可由关系的差表示,即 R∩S = R - ( R-S)
第二章 关系数据库
2.4 关系代数
2.4.1传统的集合运算
4,广义笛卡尔积两个分别为 n目和 m目的关系 R和关系 S的广义笛卡尔积是一个元组( n+m)列的元组的集合。元组的前 n列是 R的一个元组,后 m列是关系是的一个元组。如 R有
k1个元组,S有 k2个元组,则关系 R和关系 S的广义笛卡尔积有 k1× k2个元组。
记作:
R × S = {trts| tr∈R ∧ t s∈S}
第二章 关系数据库
2.4 关系代数
2.4.1传统的集合运算传统的集合运算是二目运算,包括并、交、差、广义笛卡尔集运算。它将 关系看成 元组的集合,其运算是从关系的,水平,
方向,即 行 的角度来进行的。
R S R S R S
R× S
R S
R∩SR - S
R∪ S
第二章 关系数据库
2.4 关系代数
2.4.2 专门的关系运算专门的关系运算包括选择、投影、连接和除等。
几个记号。
1.设关系模式为 R( A1,A2,… AN),它的一个关系设为 R。 t∈R 表示 t是 R的一个元组,t[Ai]则表示元组 t中相应于属性 Ai的一个 分量 。
2.若 A={Ai1,Ai2,…,Aik},其中 Ai1,Ai2,…,Aik是 A1,A2,… AN中的一部分,则 A称为属性列或域列。则 t[A]=(t[Ai1],t[Ai2],…,
t[Aik])表示元组 t在属性列 A上诸分量的集合。则表示
{A1,A2,… AN}中去掉 {Ai1,Ai2,…,Aik}后剩下的属性组。
3.R为 n目的关系,S为 m目关系。 tr∈R,ts∈S,tr ts
称为元组的连串。它是一个 n+m列的元组,前 n个分量为 R中的一个 n元组,后 m个分量为 S中的一个 m元组。
第二章 关系数据库
2.4 关系代数
2.4.2 专门的关系运算几个记号。
4.给定一个关系 R(X,Z),X和 Z为属性组,定义,当 t[X]=x时,x在 R
中的象集为,Zx={t[Z]| t ∈R,t[X] = x},表示 R中属性组 X
上的值为 x的诸元组在 Z上分量的集合。
例 6,设有关系 R( 学号,姓名,性别)
学号 姓名 性别
0001 张萍 女
0002 王飞 男
0003 李强 男记,X为学号
Z为姓名,性别当 t[X] =x =‘0001’时
Zx =t[Z]={‘张萍 ’,‘女 ’ }
第二章 关系数据库
2.4 关系代数
2.4.2 专门的关系运算
1.选择( Selection)
选择又称为限制。它是在关系 R中选择满足给定条件的诸元组,
记作,σ F( R) ={ t | t ∈R ∧ F(t)= ‘真 ’ }
其中 F表示选择条件,它是一个逻辑表达式,取逻辑值,真,或
,假,。
F由逻辑运算符?,∧,∨ 连接各算术表达式组成。
算术表达式的基本形式为,X1θ Y1。其中 θ 表示比较运算符,
X1,Y1等是属性名,或为常量,或为简单函数。
属性名也可以用它的序号来代替。
第二章 关系数据库
2.4 关系代数
2.4.2 专门的关系运算
选择运算是从关系 R中选取使逻辑表达式 F为真的元组,这是从行 的角度进行的运算 。
σ
第二章 关系数据库
2.4 关系代数
2.4.2 专门的关系运算
2.投影 ( Projection)
关系 R上的投影是从 R中选择出若干属性列组成新的关系。记作:
Π A( R) ={t[A] | t ∈R }
其中 A为 R中的属性列。
投影操作是从 列 的角度进行的运算。
第二章 关系数据库
2.4 关系代数
2.4.2 专门的关系运算
投影操作是从 列 的角度进行的运算。它不仅涉及到 列,还涉及到 行。
Π
第二章 关系数据库
2.4 关系代数
2.4.2 专门的关系运算
3,连接 ( Join)
连接也称为 θ 连接。它是从两个关系的笛卡尔积中选取属性间满足一定条件的元组。记作:
R∞S = {tr ts |tr ∈R ∧ ts ∈S ∧ tr[A] θ ts[B]}A
θ B
其中,A和 B分别是 R和 S上度数相等且可比的属性组。
等值连接
R∞S = {tr ts |tr ∈R ∧ ts ∈S ∧ tr[A] = ts[B]}A
=B
自然连接
R∞S = {tr ts |tr ∈R ∧ ts ∈S ∧ tr[B] = ts[B]}
第二章 关系数据库
2.4 关系代数
R
S

θ
θ连接第二章 关系数据库
2.4 关系代数
R
S

自然连接相同属性第二章 关系数据库
2.4 关系代数
2.4.2 专门的关系运算
4.除 ( Division)
给定关系 R(X,Y)和 S( Y,Z),其中 X,Y,Z为属性列。 R中的
Y与 S中的 Y可以有不同的属性名,但必须出自相同的域集。 R与 S
的除运算得到一个新的关系 P( X),P是 R中满足下列条件的元组在 X属性列上的投影:元组在 X上分量值 x 的象集 Yx包含 S在 Y上投影的集合。
除法结果是 R中满足下列条件的元组在 X属性列上的投影:记作:
R÷ S = {tr[X] | tr ∈R ∧ Π Y( S)? Yx}
其中 Yx为 x在 R中的象集,x = tr[X]
第二章 关系数据库
2.4 关系代数
在以上介绍的八种运算中基本的运算是五种:
并、差、笛卡尔积、投影、选择
其他的运算均可用这五种基本运算来表达。引进他们并不增加语言的能力,但可以简化表达。
第二章 关系数据库
小结:
关系数据库系统与非关系数据库系统的区别是,关系系统只有,表,这一种数据结构;而非关系数据库系统还有其他数据结构,对这些数据结构有其他的操作 。
关系数据库的重要概念 —关系三要素,关系模型的数据结构,关系的完整性以及关系操作 。
用代数方式或逻辑方式来表达的关系语言即关系代数,
元组关系演算和域关系演算 。 其中,详细介绍了关系代数 。