第二章 关系数据模型
1 数据模型
-
- 定义
数据模型是一个描述数据、数据联系、数据语义、以及数据一致性约束的工具集合,例如关系模型、实体-联系模型、基于对象的数据模型
-
- 基本要素
数据结构:是对系统静态特征的描述
数据操作:对数据库中各种对象的实例允许执行的操作的就和,包括操作及有关的操作
规则。两大类操作包括:检索、更新(插入、删除、修改),数据模型必须定义操作的确切含义、操作符号、操作规则(如优先级)及实现操作的语言,是对系统动态特征的描述
数据的约束条件:是一组完整性规则的集合,反映和规定本数据模型必须遵守的基本的
通用的完整性约束条件,数据模型还应提供定义完整性约束条件的机制,以反映具体应用所涉及的数据必须遵守的特定的语义约束条件
- 关系数据模型
- 关系模型:
关系:用于表示现实世界的实体以及实体间的各种联系,从用户的角度,关系模型中的
数据的逻辑结构是一张二维表,建立在集合代数的基础上
域:属性的取值范围。同一属性只能在相同域中取值
元组:表中的每一行,表示一个实体,关系是由元组集合
属性:表中的每一列,每个属性都有一个属性名,属性值是各元组属性的取值
分量:元组中的一个属性值
键:能唯一区分不同元组的属性或属性组合,也称为关键字、码,关键字的属性值不能
取“空值”
候选键:凡能够唯一区分不同元组的属性或属性组合。主属性:包括在候选键中的属性
非主属性:不包括在候选键中的属性
主键:当一个关系中有多个候选健的时候,则从中选定一个作为关系的主键,每个关系
中有且只有一个主键。
外键:某个属性或属性组合并非该关系的键,但却是另一个关系的主键,称此属性或属
性组合为本关系的外键。
-
- 关系模式
是对关系的描述
关系模式通常可以简记为R (U) 或 R (A1,A2,…,An)
-
- 关系数据库
在一个给定的应用领域中,所有实体及实体之间联系的关系的集合构成一个关系数据库。
-
- 数据约束
数据模型中固有的约束,分为可以和不可以在数据模型的模式中直接表述的约束
- 关系
- 域、笛卡尔积和关系
域:是一组具有相同数据类型的值的集合。
笛卡尔积:给定一组域D1,D2,…,Dn,允许其中某些域是相同的。
D1,D2,…,Dn的笛卡尔积为:
D1×D2×…×Dn = {(d1,d2,…,dn)|diÎDi,i=1,2,…,n}
其中每一个元素( d1,d2,…,dn )叫作一个n 元组,元组中每一个值 di 叫做一个分量。
基数:若Di(i=1,2,…,n)为有限集,其基数为mi(i=1,2,…,n),则D1×D2×…×Dn的基数M为:
笛卡儿积的表示方法:笛卡尔积可表示为一张二维表,表中的每行对应一个元组,表中的每列对应一个域
-
- 关系完整性
三类完整性约束:
实体完整性和参照完整性:关系模型必须遵守的两个约束条件,称为关系的两个不变性,
应该由关系系统自动支持
用户定义的完整性:应用领域需要遵循的约束条件,体现了具体领域中的语义约束
空:代表当前不知道或是对这个元组不可用的一个属性值。空是处理不完整或异常数据
的一种方法。空并不等于零值或空格所组成的字符串 。
实体完整性:基本关系的所有主关键字对应的主属性都不能取空值,实体完整性是针对
表中行的完整性,要求表中所有行都有唯一标识符
关系间的引用:在关系模型中实体及实体间的联系都是用关系来描述的,因此可能存在
着关系与关系间的引用。
外码(外键):
设F是基本关系R的一个或一组属性,但不是关系R的码。如果F与基本关系S的主
码Ks相对应,则称F是R的外码
基本关系R称为参照关系(Referencing Relation)
基本关系S称为被参照关系(Referenced Relation)或目标关系(Target Relation)
关系R和S不一定是不同的关系(导师,学生,辅助导师)
目标关系S的主码Ks 和参照关系的外码F必须定义在同一个(或一组)域上
外码并不一定要与相应的主码同名
当外码与相应的主码属于不同关系时,往往取相同的名字,以便于识别。
若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:
或者取空值( F的每个属性值均为空值)
或者等于S中某个元组的主码值
-
- 关系代数
关系代数是一种抽象的查询语言,它用对关系的运算来表达查询
-
- 关系代数
- 并运算,差运算,交运算
- 笛卡尔积
- 关系代数
两个分别为n目和m目的关系R和S的笛卡尔积是一个(nm)列的元组的集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有k1个元组,S有k2个元组,则关系R和关系S的笛卡尔积有k1k2个元组。记为:
R´S的度为R与S的度之和, R´S的元组个数为R和S的元组个数的乘积。
-
-
- 选择运算
-
从关系中找出满足给定条件的所有元组,从行的角度进行的运算,即水平方向抽取
元组。经过选择运算得到的结果可以形成新的关系,其关系模式不变,但其中元组的数目小于或等于原来的关系中的元组的个数,它是原关系的一个子集。
sF(R)={t | t Î R , F(t) = ‘真’}
-
-
- 投影运算
-
从关系中挑选若干属性组成新的关系 。
PA(R) = { t[A] | tÎR } , AÍR
从列的角度进行的运算,即垂直方向抽取元组。
投影的结果中要去掉相同的行,即不含重复元组
-
-
- 连接运算
-
从两个关系的笛卡尔积中选取属性间满足一定条件的元组
-
-
- 等值连接
-
-
-
- 自然连接
-
一种特殊的等值连接,θ为“=”的连接运算称为等值连接
计算笛卡尔积R×S,选择在R和S共有的所有属性上取值相同的元组,去掉重复属性,如果两个关系没有公共属性,自然连接就是笛卡尔积
-
-
- 左连接
-
R左连接S:R的所有元组和连接字段相等处的S的元组,没有属性的列补空值
-
-
- 右连接
-
R右连接S:S的所有元组和连接字段相等处的R的元组,没有属性的列补空值。
-
-
- 除法运算
-
给定一个关系R(X,Z),X和Z为属性组。当t[X]=x时,x在R中的象集(Images Set)为:Zx={t[Z]|tR,t[X]=x}
表示R中属性组X上值为x的诸元组在Z上分量的集合。
其中,t[Z]和t[X]分别表示关系R中元组t在属性组Z和X上的分量的集合
X取a1时的象集为Zx={(b1),(b2)}
X取a2时的象集为Zx={(b1)}
X取a3时的象集为Zx={(d1)}
给定关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:
R元组在X上分量值x的象集Yx包含S在Y上投影的集合。
R÷S = {tr [X] | tr Î R ∧ πY (S) Í Yx }
Yx:x在R中的象集,x = tr[X]
找出R÷S的结果属性(只属于R不属于S的属性),为A
关系R中,A可以取四个值{a1,a2,a3,a4}
a1的象集为 {(b1,c2),(b2,c3),(b2,c1)}
a2的象集为 {(b3,c7),(b2,c3)}
a3的象集为 {(b4,c6)}
a4的象集为 {(b6,c6)}
S在(B,C)上的投影为: {(b1,c2),(b2,c1),(b2,c3) }
只有a1的象集包含了S在(B,C)属性组上的投影
∴ 所以 R÷S = {a1}