关系数据结构及形式化定义
关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。
关系
1、域:域是一组具有相同数据类型的值的集合。
例如,自然数、整数、实数、长度小于25字节的字符串集合、(0,1)、(男,女)、大于等于0且小于等于100的正整数等,都可以是域。
2、笛卡儿积:笛卡儿积是域上的一种集合运算。
给定一组域D1,D2,…,Dn,允许其中某些域是相同的,D1,D2,…,Dn的笛卡儿积为
D1XD2x…xDn={(d1,d2,…,dn) | di E(属于符号)Di , i=1,2,…,n}
其中,每一个元素(d1,d2,…,dn)叫作一个n元组,或简称元组。元素中的每一个值di叫做一个分量。
一个域允许的不同取值个数称为这个域的基数。
若D1(i=1,2,…,n)为有限集,其基数为m;(i=1,2,…,n),则D1XD2X…xDn
的基数M为 M等于mi 的和 ,其中i到n。
3、关系
D1XD2X…XDn的子集叫做在域D1,D2,…Dn上的关系,表示为R(D1, D2, …, Dn)
这里R表示关系的名字,n是关系的目或度(degree)。
关系中的每个元素是关系中的元组,通常用t表示。
当n=1时,称该关系为单元关系(unary relation),或一元关系。
当n=2时,称该关系为二元关系(binary relation)。
关系是笛卡儿积的有限子集,所以关系也是一张二维表,表的每行对应一个元组,表的每列对应一个域。由于域可以相同,为了加以区分,必须对每列起一个名字,称为属性(attribute)。n目关系必有n个属性。
若关系中的某一属性组的值能唯一地标识一个元组,而其子集不能,则称该属性组为候选码。
若一个关系有多个候选码,则选定其中一个为主码。
候选码的诸属性称为主属性。不包含在任何候选码中的属性称为非主属性或非码属性。
在最简单的情况下,候选码只包含一个属性。在最极端的情况下,关系模式的所有属性是这个关系模式的候选码,称为全码。
一般来说,D1,D2,…,Dn的笛卡儿积是没有实际语义的,只有它的某个真子集才有实际含义。
**关系可以有三种类型:基本关系(通常又称为基本表或基表)、查询表和视图表。**其中,基本表是实际存在的表,它是实际存储数据的逻辑表示;查询表是查询结果对应的表;视图表是由基本表或者其他视图表导出来的表,是虚表,不对应实际存储的数据。
按照定义,关系可以是一个无限集合。
基本关系具有以下性质:
(1)、列是同质的,即每一列中的分量是同一类型的数据,来自同一个域。
(2)、不同的列可出自同一个域,称其中的每一列为一个属性,不同的属性要给予不同的属性名。例如,在上面的例子可以只给出两个域
人(PERSON)=(张清玫,刘逸,李勇,刘晨,王敏}
专业(SPECIALITY)=(计算机专业,信息专业)
SAP关系的导师属性和研究生属性都从PERSON域中取值。为了避免混滑,必须给这两个属性取不同的属性名,而不能直接使用域名。例如,定义导师属性名为SUPERVISOR-PERSON(或SUPERVISOR),研究生属性名为POSTGRADUATE-PERSON(或POSTGRADUATE)。
(3)、列的顺序无所谓,即列的次序可以任意交换。由于列顺序是无关紧要的,因此在许多实际关系数据库产品中增加新属性时,永远是插至最后一列。
(4)、任意两个元组的候选码不能取相同的值。
(5)、行的顺序无所谓,即行的次序可以任意交换。
(6)、分量必须取原子值,即每一个分量都必须是不可分的数据项。
关系模型要求关系必须是规范化的,即要求关系必须满足一定的规范条件。这些规范条件中最基本的一条就是,关系的每一个分量必须是一个不可分的数据项。规范化的关系简称为范式(Normal Form,NF)。
例如,表2.3虽然很好地表达了导师与研究生之间的一对多关系,但由于属性POSTGRADUATE中分量取了两个值,不符合规范化的要求,因此这样的关系在数据库中是不允许的。通俗地讲,关系表中不允许还有表,简言之不允许“表中有表”。直观地描述。
关系的描述称为关系模式。它可以形式化地表示为R(U,D,DOM,F) 其中R为关系名,U为组成该关系的属性名集合,D为U中属性所来自的域,DOM为属性向域的映像集合,F为属性间数据的依赖关系集合。
属性间的数据依赖将在第6章讨论,本章中关系模式仅涉及关系名、各属性名、域名、属性向域的映像4部分,即R(U,D,DOM)。
关系模式通常可以简记为
R(U)
或
R(A1,A2,…,An)
其中R为关系名,A1,A2,…,An为属性名。而域名及属性向域的映像常常直接说明为属性的类型、长度。
关系是关系模式在某一时刻的状态或内容。关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的,因为关系操作在不断地更新着数据库中的数据。例如,学生关系模式在不同的学年,学生关系是不同的。在实际工作中,人们常常把关系模式和关系都笼统地称为关系,这不难从上下文中加以区别,希望读者注意。
关系数据库
在关系模型中,实体以及实体间的联系都是用关系来表示的。例如导师实体、研究生实体、导师与研究生之间的一对多联系都可以分别用一个关系来表示。在一个给定的应用领域中,所有关系的集合构成一个关系数据库。
关系数据库也有型和值之分。关系数据库的型也称为关系数据库模式,是对关系数据库的描述。关系数据库模式包括若干域的定义,以及在这些域上定义的若干关系模式。关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常就称为关系数据库。
关系模型的存储结构
在关系数据模型中实体及实体间的联系都用表来表示,但表是关系数据的逻辑模型。在关系数据库的物理组织中,有的关系数据库管理系统中一个表对应一个操作系统文件,将物理数据组织交给操作系统完成;有的关系数据库管理系统从操作系统那里申请若干个大的文件,自己划分文件空间,组织表、索引等存储结构,并进行存储管理。