关系数据模型
一、关系数据模型和关系数据库
关系模型由关系模型的数据结构、关系模型的操作集合以及关系模型的完整性约束三部分组成,这三部分也是关系模型的三要素。
1.1数据结构
关系数据源于数学,是用二维表来组织数据,这个二维表在关系数据库中称为关系。在关系系统中,表是逻辑结构而不是物理结构。
1.2数据操作
关系数据模型给出了关系操作的能力。关系数据模型中的操作包括:
传统的关系运算:并(union)、交(intersection)、差(difference)、广义笛卡尔乘积(extended cartesian product)。
专门的关系运算:选择(select)、投影(project)、连接(join)、除(divide)。
有关的数据操作:查询(query)、插入(insert)、删除(delect)、更改(update)。
关系数据的操作对象是集合(或者表),而不是单个的数据行,也就是说,关系模型中操作的数据以及操作结果(查询操作的结果)都是完整的集合(或者表),这些集合可以只包含一行数据,也可以是不包含任何数据的空集合。因此集合处理能力是关系型数据库模型区别于其他类型数据库的重要特征。
关系操作是通过关系语言实现的,关系语言的特点是高度非过程化的。非过程化就是指:
- 用户不必关心数据的存取路径和存取过程,用户只需要提出数据请求,数据库管理系统就会自动完成用户请求的操作。
- 用户也没有必要编写程序代码来实现对数据的操作。
1.3数据的完整性约束
在数据库中数据的完整性是指保证数据正确性的特征。数据完整性是一种语义概念,它包括两个方面:
- 与现实世界中应用需求的数据的兼容性和正确性。
- 数据库内数据之间的相容性和正确性。
数据完整性由一组完整性规则定义,而关系模型的完整性规则是对关系的某种约束条件。在关系数据模型中一般将数据完整性分为三类,即实体完整性、参照完整性和用户定义的完整性。其中实体完整性和参照完整性(也称为引用完轻性)是关系模型必须满足的完整性约束,是系统级的约束。用户定义的完整性主要是限制属性的取值在有意义的范围内,比如限制性别的取值范围为 “男”和“女”。这个完整性约束也被称为域的完整性,它属于应用级的约束。数据库管理系统应该提供对这些数据完整性的支持。
二、关系模型的基本术语与形式化定义
在关系模型中,将现实世界中的实体、实体与实体之间的联系关系源于数学,它有自己严格的定义和一些固定术语。
2.1基本术语
- 关系(relation):通俗的说,关系就是一个二维表,二维表的名字就是关系的名字。
- 属性(attribute):二维表的每个列称为一个属性,每个属性(或叫字段)有一个名字,称为属性名。二维表中对应某一列的值称为属性值,二维表中列的个数称为关系的元数。二维表有n个列,就称为n元关系。
- 值域(domain):二维表中属性的取值范围。
- 元组(tuple):二维表中的一行数据。
- 分量(component):元组中的每一个属性值。n元关系的每个元组有n个分量。
- 关系模式(relation schema):二维表的结构。关系模式就是二维表的表框架或者表头结构。
设有关系名为R,属性分别为A1,A2,· · ·,An,则关系模式可以表示为: R(A1,A2,· · ·,An,)
对每个Ai(i=1,· · ·,n)还包括该属性到值域的映像,即属性的取值范围。
如果将关系模式理解为数据类型,则关系就是该数据类型的一个具体值。 - 关系数据库(relation datebase):对应于一个关系模型的的所有集合。
- 候选键(candidate key):一个属性和属性集的值能够唯一标识一个关系的元组而又不多包含多余的属性。候选键又称候选关键字或候选码。在一个关系上可以有多个候选键。
- 主键(primary key):用于唯一地确定一个元组,可以由一个或者多个属性组成,每个关系只有一个主键,并且不能为空。
- 主属性(primary attribute):包含在任一候选键的属性。非主属性(noprimary attribute):不包含在任一候选键的属性。
2.1形式化定义
- 关系的形式化定义(从集合论的观点可以将关系定义为:关系是一个有K个属性的元组的集合)。
- 对关系的限定
关系可以看成是二维表,但并不是所有的二位表都是关系。关系数据对关系有一定的限定,归纳如下:
- 关系中的每个分量都必须是不可再分的最小的分量。每个属性都不能再被分解为更小的属性,这是关系数据库对关系的最基本限定。
- 表中列的数据类型是固定的,即列中的每个分量都是同类型的数据,来自相同的值域。
- 不同列的数据可以取自相同的值域,每个列称为一个属性每个属性都有不同的属性名。
- 关系表中列的顺序不重要,即列的次序也可以人以交换,不影响其表达的语义。
- 行的顺序也不重要,交换行数据的顺序不影响关系的内容。
- 同一个关系中的元组不能重复,即在一个关系中的任意两个元组的值不能完全相同。
三、关系代数
3.1传统集合运算
传统的集合运算是二目运算,设关系R和S均是n元关系,且相应的属性值取值同一个值域,则可以定义三种运算:并运算(U)、交运算(Ո)和差运算(-),但广义笛卡尔积并不要求参与运算的两个关系的对应属性取自相同的域。
- 并运算
设关系R与关系S均是n目关系,关系R与关系S的并记为:
R U S={t I t∈R^t∈S}
其结果仍是n目关系,由属于R或属于S的元组组成。
- 交运算
设关系R与关系S均是n目关系,关系R与关系S的交记为:
R Ո S={t I t∈R^t∈S}
其结果仍是n目关系,由属于R或属于S的元组组成。
- 差运算
设关系R与关系S均是n目关系,关系R与关系S的差记为:
R - S={t I t∈R^t∈S}
其结果仍是n目关系,由属于R或属于S的元组组成。
- 广义笛卡尔积
设R是n目关系,S是m目关系,R和S的广义笛卡儿积定义为:
RxS是一个(m+n)目关系,前n列是关系R的属性,后n列是关系S的属性。每个元组的前n个属性是关系R的一个元组,后m个属性是关系S的一个元组。若关系R有p个元组,关系S有q个元组,关系RxS有pxq个元组,且每个元组的属性为(m+n)。两队游泳运动对均有3名队员组成。现做循环比赛,赛事表可看成是两对名单的广义笛卡儿积。
3.2专门的关系运算
专门的关系运算包括:选择、投影、连接、除等操作,其中选择和投影为一元操作,连接和除为二元操作。
- 选择(selection)运算是从指定关系中选出满足给定条件(用逻辑表达式表达的)的元组而组成一个新的关系。选择运算的表示为:
-
- 投影(projection)
- 连接:
- θ连接
- 等值连接(θ连接的特例)
- 自然连接
- 外部连接(简称外连接)
- 半连接