2.1 关系数据结构及形式化定义
关系数据库系统是支持关系模型的数据库系统。第一章初步介绍了关系模型及其基本术语。本章将深入地介绍关系模型。
2.1.1 关系
01 域(domain)
定义2.1 域是一组具有相同数据类型的值的集合。
02 笛卡儿积(cartesian product)
笛卡儿积是域上的一种集合运算。
定义2.2 给定一组域D1,D2,···,Dn,允许其中某些域是相同的,D1,D2,···,Dn的笛卡儿积为D1×D2×···×Dn={(d1,d2,···,dn)|di∈Di,i=1,2,···,n}
其中,每一个元素(d1,d2,···,dn)叫作一个n元组(n-tuple),或简称元组(tuple)。元素中的每一个值di叫作一个分量(component)。
一个域允许的不同取值个数称为这个域的基数(cardinal number)。
若Di(i=1,2,···,n)为有限集,其基数为mi(i=1,2,···,n),则D1×D2×···×Dn的基数M为
03 关系(relation)
定义2.3 D1×D2×···×Dn的子集叫作在域D1,D2,···,Dn上的关系,表示为R(D1,D2,···,Dn),这里R表示关系的名字,n是关系的目或度(degree)。
当n=1时,称该关系为单元关系(unary relation),或一元关系。
当n=2时,称该关系为二元关系(binary relation)。
关系是笛卡儿积的有限子集,所以关系也是一张二维表,表的每行对应一个元组,表的每列对应一个域。由于域可以相同,为了加以区分,必须对每列起一个名字,称为 属性(attribute)。 n目关系必有n个属性。
若关系中的某一属性组的值能唯一地标识一个元组,而其子集不能,则称该属性组为候选码(candidate key)。
若一个关系有多个候选码,则选定其中一个为主码(primary key)。
候选码的诸属性称为主属性(prime attribute)。不包含在任何候选码中的属性称为非主属性(non-prime attribute)或非码属性(non-key attribute)。
在最简单的情况下,候选码只包含一个属性。在最极端的情况下,关系模式的所有属性是这个关系模式的候选码,称为全码(all-key)。
图1 关系的类型
基本关系具有以下6条性质:
(1)列是同质的(homogeneous),即每一列中的分量是同一类型的数据,来自同一个域。
(2)不同的列可出自同一个域,不同的属性要给予不同的属性名。
(3)列的顺序无所谓,即列的次序可以任意交换。
(4)任意两个元组的候选码不能取相同的值。
(5)行的顺序无所谓,即行的次序可以任意交换。
(6)分量必须取原子值,即每一个分量都必须是不可分的数据项。
关系模型要求关系必须是规范化(normalization)的,即要求关系必须满足一定的规范条件。这些规范条件中最基本的一条就是,关系的每一个分量必须是一个不可分的数据项。规范化的关系简称为范式(Normal Form,NF)。
2.1.2 关系模式
关系数据库中,关系模式是型,关系是值。关系模式是对关系的描述。
定义2.4 关系的描述称为关系模式(relation schema)。它可以形式化地表示为R(U,D,DOM,F)。其中R为关系名,U为组成该关系的属性名集合,D为U中属性所来自的域,DOM为属性向域的映像集合,F为属性间数据的依赖关系集合。
关系是关系模式在某一时刻的状态或内容。关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的,因为关系操作在不断地更新着数据库中的数据。
2.1.3 关系数据库
关系数据库也有型和值之分。关系数据库的型也称为关系数据库模式,是对关系数据库的描述。关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常就称为关系数据库。
2.1.4 关系模型的存储结构
在关系数据模型中实体及实体间的联系都用表来表示,但表是关系数据的逻辑模型。在关系数据库的物理组织中,有的关系数据库管理系统中一个表对应一个操作系统文件,将物理数据组织交给操作系统完成;有的关系数据库管理系统从操作系统那里申请若干大的文件,自己划分文件空间,组织表、索引等存储结构,并进行存储管理。