(一)关系数据库的基本概念
1. 属性和域
在现实世界中,要描述一个事物常常取若干特征来表示,这些特征称为属性(Attribute)。例如,用学号、姓名、性别等属性来描述学生。
每个属性的取值范围对应一个值的集合,称为该属性的域(Domain)。例如,学号的域是六位整型数,姓名的域是十位字符等。
在关系数据模型中,通常对域加了一个限制,所有的域都应是原子数据(Atomic Data
)。例如,整数、字符串是原子数据,而集合、记录等是非原子数据。
2. 笛卡尔积与关系
笛卡尔积:
笛卡尔乘积是指在数学中,两个集合X
和Y
的笛卡尔积(Cartesian product
),又称直积,表示为X
×
Y
,第一个对象是X
的成员而第二个对象是Y
的所有可能有序对的其中一个成员。
假设集合A={a, b},集合B={0, 1, 2},
则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。
类似的例子有,如果A
表示某学校学生的集合,B
表示该学校所有课程的集合,则A
与B
的笛卡尔积表示所有可能的选课情况。A
表示所有声母的集合,B
表示所有韵母的集合,那么A
和B
的笛卡尔积就为所有可能的汉字全拼。
设A
,B
为集合,用A
中元素为第一元素,B
中元素为第二元素构成有序对,所有这样的有序对组成的集合叫做A
与B
的笛卡尔积,记作AxB
.
笛卡尔积的符号化为:
A×B={(x,y)|x∈A∧y∈B}
例如,A={a,b}, B={0,1,2},
则
A×B={(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}
B×A={(0, a), (0, b), (1, a), (1, b), (2, a), (2, b)}
关系:
笛卡尔积的子集称为在域上的关系。
例如,
D₁XD₂X···XDiX···XDn的子集称为在域D₁,D₂,···,Di,···,Dn上的关系,
记为R(D₁,D₂,···,Di,···,Dn),称关系R为n元关系。
3. 关系的相关名词
- 目或度
R
表示关系的名字,n
表示关系的目或度。 - 候选码
若关系中的某一属性或属性组的值能唯一地标识一个元组,则称该属性或属性组为候选码。 - 主码
若一个关系有多个候选码,则选定其中一个为主码。 - 主属性
包含在任何候选码中的诸属性称为主属性。
不包含在任何候选码中的属性称为非码属性。 - 外码
如果关系模式R
中的属性或属性组非该关系的码,但它是其他关系的码,那么该属性集对关系模式R
而言是外码。 - 全码
关系模型的所有属性组是这个关系模式的候选码,称为全码。
4. 关系的3种类型
- 基本关系
又称为基本表或基表,它是实际存在的表,是实际存储数据的逻辑表示。 - 查询表
是查询结果对应的表。 - 视图表
是由基本表或其他视图表导出的表。由于它本身不独立存储在数据库中,数据库中只存放它的定义,所以常称为虚表。
5. 关系数据库模式
在数据库中要区分型和值。关系数据库中的型也称为关系数据库模式,是关系数据库结构的描述。它包括若干域的定义以及在这些域上定义的若干关系模式。实际上,关系的概念对应于程序设计语言中变量的概念,而关系模式对应于程序设计语言中类型定义的概念。
关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常称之为关系数据库。
关系的描述称之为关系模式,可以形式化地表示为:R(U,D,dom,F)
。
其中,R
表示关系名;U
是组成该关系的属性名集合;D
是属性的域;dom
是属性向域的映像集合;F
为属性间数据的依赖关系集合。
通常将关系模式简记为:
R(U)或R(A₁,A₂,A₃,···,An)
其中,R
为关系名,A₁,A₂,A₃,···,An
为属性名或域名,属性向域的映像常常直接说明属性的类型、长度。
通常在关系模式主属性上加下划线表示该属性为主码属性。
6. 完整性约束
完整性规则防止的是对数据的意外破坏。
关系的完整性分为:
- 实体完整性
规定基本关系R
的主属性A
不能取空值。 - 参照完整性
现实世界中的实体之间往往存在某种联系,在关系模型中实体及实体集间的联系是用关系来描述的,这样自然就存在关系与关系间的引用。 - 用户定义完整性
用户定义完整性就是针对某一具体的关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求,由应用的环境决定。
7. 关系运算
关系操作的特点的操作对象和操作结果都是集合,而非关系数据模型的数据操作方式则为一次一个记录的方式。
关系数据语言分为三类:
- 关系代数语言
- 关系演算语言
- 具有关系代数和关系演算双重特点的语言
(二)5种基本的关系代数运算
1. 并(Union)
关系R
与S
具有相同的关系模式,即R
与S
的元素相同(结构相同)。关系R
与S
的并是由属于R
或属于S
的元组构成的集合,记作R∪S
,其形式定义如下:
R∪S={t|t∈R∨t∈S}
式中t
为元组变量。
2. 差(Difference)
关系R
与S
具有相同的关系模式,关系R
与S
的差是由属于R
但不属于S
的元组构成的集合,记作R-S
,其形式定义如下:
R-S={t|t∈R∧t∉S}
3. 广义笛卡尔积(Extended Cartesian Product)
两个元数分别为n
目和m
目的关系R
和S
的广义笛卡尔积是一个(n+m
)列的元组的集合。元组的前n
列是关系R
的一个元组,后m
列是关系S
的一个元组,记作RXS
,其形式定义如下:
RXS={t|t=<t^n,t^m>∧t^n∈R∧t^m∈S}
4. 投影(Projection)
投影运算是从关系的垂直方向进行运算,在关系R
中选出若干属性列A
组成新的关系,记作πΑ(R)
,其形式定义如下:
πΑ(R)={t[A]|t∈R}
5. 选择(Selection)
选择运算是从关系的水平方向进行运算,是从关系R
中选择满足给定条件的诸元组,记作σF(R)
,其形式定义如下:
σF(R)={t|t∈R∧F(t)=true}
其中,F
中的运算对象是属性名(或列的序号)或常数,运算符、算术比较符(<、<=、>、>=、≠
)和逻辑运算符(∧、∨、¬
)。
(三)扩展的关系代数运算
1. 交(Intersection)
关系R
与S
具有相同的关系模式,关系R
与S
的交是由属于R
同时又属于S
的元组构成的集合,记作R∩S
,其形式如下:
R∩S={t|t∈R∧t∈S}
显然,R∩S=R-(R-S)
,或R∩S=S-(S-R)
。
2. 连接(Join)
连接分为以下三种:
θ连接
- 等值连接
- 自然连接
3. 除(Division)
除运算是同时从关系的水平方向和垂直方向进行运算。
给定关系R(X,Y)
和S(Y,Z)
,X,Y,Z
为属性组。R÷S
应当满足元组在X
上的分量值x
的象集Yx
包含关系S
在属性组Y
上投影的集合。其形式如下:
R÷S={t^n[X]|t^n∈R∧πy(S)⊆Yx}
其中,Yx
为x
在R
中的象集,x=t^n[X]
,且R÷S
的结果集的属性组为X
。
4. 广义投影(Generalized Projection)
广义投影运算允许在投影列表中使用算术运算,实现了对投影运算的扩充。
5. 外连接(Outer Join)
外连接运算是连接运算的扩展,可以处理由于连接运算而缺失的信息。
外连接运算有以下三种:
- 左外连接
取出左侧关系中所有与右侧关系中任一元组都不匹配的元组,用空值充填所有来自右侧关系的属性,构成新的元组,将其加入自然连接的结果中。 - 右外连接
取出右侧关系中所有与左侧关系中任一元组都不匹配的元组,用空值填充所有来自左侧关系的属性,构成新的元组,将其加入自然连接的结果中。 - 全外连接
完成左外连接和右外连接的操作。即填充左侧关系中所有与右侧关系中任一元组都不匹配的元组,并填充右侧关系中所有与左侧关系中任一元组都不匹配的元组,将产生的新元组加入自然连接的结果中。
网友评论