赞
踩
7.3 关系代数
7.3.1 关系数据库的基本概念
1、属性和域
在现实世界中,要描述一个事物常常取若干特征来表示,这些特征称为属性(attribute)。
每个属性的取值范围所对应一个值的集合,称为改属性的域(domain)。
例如,学号的域是 6 位整型数;姓名的域是 10 为字符;性别的域为{男,女}等。
一般在关系数据模型中,对域还加了一个限制,所有的域都应是原子数据(atomic data)。
例如,整数、字符串是原子数据,而集合、记录、数组是非原子数据。
关系数据模型的这种限制称为 第一范式(first normal form,1NF)条件。但也有些关系数据模型突破了 1 NF限制,称为非 1 NF。
2、笛卡尔积与关系
【定义7.1 】设 D1,D2,D3,... ,Dn 为任意集合,定义 D1,D2,D3,... ,Dn 的笛卡尔积为
D1×D2×D3...×Dn={(d1,d2,d3,... dn)|di ∈ Di,i=1,2,3,...,n}
其中,每个元素(d1,d2,d3,... dn)叫做一个 n元祖(n-tuple 属性个数),元祖的每一个值 di叫做元祖的一个分量,若Di(i=1,2,3,... ,n)为有限集,其基数(Cardinal number 元祖的个数)为 mi(i=1,2,3,... ,n),则D1×D2×D3...×Dn的基数M为
笛卡尔积可以用二维表来表示。
例:若 D1 = {0,1},D2 = {a,b},D3={c,d},求D1×D2×D3.
【定义 7.2 】D1,D2,D3,... ,Dn的子集叫做在域D1,D2,D3,... Dn上的关系,记为R(D1,D2,D3,... Dn),称为关系R为n元关系。
定义 7.2 可以得出一个关系也可以用二维表来表示。关系中的属性个数称为“ 元数 ”,元组的个数称为“ 基数 ”。
该学生关系的元数为 4,基数为 6。
3、关系的相关名词
(1)目和度(Degree)。这里的R表示关系的名字,n 是关系的目或度。
(2)候选码(Candidate Key)。若关系中的某一属性组的值能唯一地标识一个元组,则称改属性或属性组为候选码。
(3)主码(Primary Key)。若一个关系有多个候选码,则选定其中一个为主码。
(4)主属性(Non-Key attribute)。包含在任何候选码中的诸属性称为主属性。不包含任何候选码中的属性称为非码属性。
(5)外码(Foreign key)。如果关系模式R中的属性或属性组非该关系的码,但它是其他关系的码,那么该属性性集对关系模式R而言是外码。
(6)全码(All -Key)。关系模型中的所有属性组是这个关系模式的候选码,称为全码。
4、关系的三种类型
(1)基本关系(通常又称为基本表或基表)。是实际存在的表,它是实际存储数据的逻辑表示。
(2)查询表。查询结果对应的表。
(3)视图表。是基本表或其他视图表导出的表。由于它本身不独立存储在数据库中,数据库中只存放它的定义,所以常称为虚表。
5、关系数据库模式
在数据库中要区分型和值。
关系数据库中的型也称为关系数据库模式,是关系数据库结构的描述。它包括若干域的定义以及在这些域上定义的若干关系模式。
实际上,关系的概念对应于程序设计语言中的变量的概念,而关系模式对应于程序设计语言中类型定义概念。
关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常称之为关系数据库。
【定义 7.3】关系的描述称为关系模式(Relation Schema)。可以形式化地表示为:
R(U,D,dom,F)
其中,R表示关系名;U是组成该关系的属性名集合;D是属性的域;dom是属性向域的映像集合;F为属性间数据的依赖关系集合。
通常将关系模式简记为:
R(U)或R(A1,A2,A3,...An)
其中,R为关系名,A1,A2,A3,... An为属性名或域名,属性向域的映像常常直接说明属性的类型、长度。通常在关系模式主属性上加下划线表示该属性为主码属性。
6、完整性约束
完整性规则提供了一种手段来保证当授权用户对数据库作修改时不会破坏数据的一致性。
因此,完整性规则防止的是对数据的以外破坏。关系模型的完整性规则是对关系的某种约束条件。
关系的完整性共分为:
实体完整性、参照完整性(也称引用完整性)和用户定义完整性。
(1)实体完整性(Entity Integrity)。规定基本关系R的主属性A不能为空值。
(2)参照完整性(Referential integrity)。现实世界中的实体之间往往存在某种联系,在关系模型中实体及实体间的联系是用关系来描述的,这样自然就存在着关系与关系的引用。
(3)用户定义完整性(User defined integrity)。
就是针对某一具体的关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求,由应用环境决定。
7、关系运算
关系操作的特点是操作对象和操作结果都是集合,而非关系数据模型的数据操作方式则为一次一个记录的方式。
关系数据语言分为三类:
关系代数语言、关系演算语言和具有关系代数和关系演算双重特点的语言(如SQL)。(Structured Query Language)。
关系代数语言、元组关系演算和域关系演算是抽象查询语言,它与具体的 DBMS 中实现的实际语言不一样,但是可以用它来评估实际系统中的查询语言能力的标准。
关系代数运算符有 4 类:
集合运算符,专门的关系运算符,算术比较符和逻辑运算符。
根据运算符的不同,关系代数运算可分为传统的集合运算和专门的关系运算。
传统的集合运算:是从关系的水平方向进行的,包括并、交、差及广义笛卡尔积。
专门的关系运算既可以从关系的水平方向进行运算,又可以从关系的垂直方向运算,包括选择、投影、连接以及除法,如下表所示。
表中,并、差、笛卡尔积、投影和选择是 5 种基本的运算,因为其他运算可以通过基本的运算导出。
7.3.2 五种基本的关系代数运算
五种基本的关系代数运算包括:并、差、笛卡尔积、投影和选择,其他运算可以通过基本的关系运算导出。
1、并 (Union)
关系 R 与 S 具有相同的关系模式,即 R 与 S的元数相同(结构相同)。关系 R 与 S并由属于 R或属于 S的元组构成的集合组成,基座 R ∪ S ,其形式定义如下:
2、差(Difference)
关系 R与S具有相同的关系模式,关系 R与S的差是由属于 R 但不属于 S的元组构成的集合,记作 R - S,其形式定义如下:
3、 广义笛卡尔积(Extended Cartesian Product)
两个元数分别为 n 目 和 m 目的关系 R 和 S 的广义笛卡尔积是一个(n+m)列的元组集合。
元组的前 n 列是关系 R的一个元组,后 m 列是关系 S 的一个元组,记作 R× S,其形式定义如下:
如果 R 和 S中有相同的属性名,可在属性名前加关系名作为限定,以示区别。
若 R有 K1个元组,S有K2个元组,则 R 和 S的广义笛卡尔积有 K1 × K2 个元组。
4、投影(Projection)
投影运算时从关系的垂直方向进行运算,在关系R中选择出若干属性列 A组成新的关系,记作 ,其形式定义如下:
5、选择(Selection)
选择运算时从关系的水平方向进行运算,是从关系 R中选择满足条件的诸元组,记作,其形式定义如下:
实例:
设有关系 R、S如下图所示,请求出 R U S,R-S,R×S,和
7.3.3 扩展的关系代数运算
扩展的关系代数运算从基本的关系运算中导出,主要包括选择、投影、连接、除法、广义笛卡尔积和外连接。
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)
连接分为 θ 连接、等值连接及自然连接三种。连接运算时从两个关系 R和S的笛卡尔积中选取满足条件的元组。因此,可以认为笛卡尔积是无条件连接,其他的连接操作认为是有条件连接。
下面分述如下。
(1) θ 连接。
从 R 与 S 的笛卡尔积中选取属性间满足一定条件的元组。记作:
① θ 连接也可以表示为:
其中,i=1,2,3,...,n,j=1,2,3,...,m,i θj的含义为从两个关系R 和 S中选取 R的第 i列 和 S的第 j列之间满足 θ 运算的元组进行连接。
② θ 连接可以由基本的关系运算笛卡尔积和选取运算符导出。因此,θ 连接可表示为:
例:设关系 R,S 如下图所示,求。
解:本例连接的条件为 R.A < S.B,意为将 R关系中属性 A的值小于 S关系中的 B的值的元组取出来作为结果集的元组。结果集为R × S后选出满足条件的元组,并且结果集的属性为 R.A,R.B,R.C,S.A,S.B,S.C。结果如:
(2)等值连接。当 θ 为 “=”时,称之为等值连接,记为 ,其形式如下:
(3)自然连接。
是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同属性组,并且在结果集中将重复属性列去掉。
例:
设有关系 R,S 如图所示,求。
解: 要求 R与S 关系的自然连接,自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中将重复属性列去掉。本例 R 与 S 关系中相同的属性组为 AC,因此,结果集中的属性列应为 ABCD。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。