关系数据结构及形式化定义

​​       关系数据库系统是支持关系模型的数据库系统。

​​       按照数据模型的三个要素,关系模型由关系数据结构、关系操作集合和关系完整性约束三个部分组成。

关系

​​       关系模型的数据结构非常简单,只包含单一的数据结构——关系。在用户看来,关系模型中数据的逻辑结构是一张扁平的二维表。

​​       在关系模型中,现实世界的实体及实体间的各种联系均用关系来表示。

​​       关系模型是建立在集合代数的基础上的,这里从集合论角度给出关系数据结构的形式化定义。

1、域(Domain)

​​       定义:是一组具有相同数据类型的值的集合。

       例如,自然数、整数、{男,女}等,都可以是域。

2、笛卡尔积(Cartesian product)

​​       定义:笛卡尔积是域上的一种集合运算。给定一组域D1,D2,...,Dn,允许其中某些域是相同的,D1,D2,...,Dn的笛卡尔积为 D1 * D2 * ... *Dn。

       笛卡尔积可以看作是关系的“域”。

       笛卡尔积可以表示为一张二维表。表中的每行对应一个元组,表中的每一列的值来自一个域。

3、关系(Relation)

​​       定义:D1 * D2 * ... *Dn的子集叫做在域D1,D2,...,Dn上的关系,表示为R(D1,D2,...,Dn),这里的R表示关系的名字,n是关系的目或度(degree)。

​​       元组(Tuple):关系中的每个元素(d1,d2,...,dn)叫做一个n元组或简称元组,通常用t表示。

​​       属性(Attribute):关系中不同列称为属性,每个属性有一个名字,n目关系必有n个属性。

​​       分量:元组中的一个属性值。

​​       候选码(Candidate Key):若关系中某一属性组的值能唯一地标识一个元组,而其子集不能,则称该属性组为候选码。

​​       全码(All-Key):简单的情况:候选码只包含一个属性;在最极端的情况下,关系模式的所有属性是这个关系模式的候选码,称位全码。

​​       主码(Primary Key):若一个关系有多个候选码,则选定其中一个为主码。

​​       主属性、非主属性:候选码的诸属性称位主属性。不包含在任何候选码中的属性称位非主属性或非码属性。

​​       关系可以有三种类型:基本关系(通常又称为基本表或基表)、查询表和视图表。其中,基本表是实际存在的表,它是实际存储数据的逻辑表示;查询表是查询结果对应的表;视图表是由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据。

基本关系的性质:

  1. 列是同质的(Homogeneous),即每一列中的分量是同一类型的数据,来自同一个域。
  2. 不同的列可出自同一个域。
  3. 列的顺序无所谓,列的次序可以任意交换。
  4. 任意两个元组的候选码不能相同。
  5. 行的顺序无所谓,行的次序可以任意交换。
  6. 分量必须取原子值,即每个分量都必须是不可分的数据项。

关系模式

       在数据库中要区分型和值。关系数据库中,关系模型是型,关系是值。关系模式是对关系的描述。

​​       定义:关系的描述称为关系模式(relation schema)。它可以形式化的表示为R(U,D,DOM,F),其中R为关系名,U为组成该关系的属性名集合,D为U中属性所来自的域,DOM为属性向域的映射集合,F为属性间数据的依赖关系集合。关系模式通常可以简记为R(U)或R(A1,A2,...,An),其中R为关系名,A1,A2,...,An为属性名。属性向域的映像常常直接说明为属性的类型,长度。

       关系是关系模式在某一时刻的状态或内容。关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的,因为关系操作在不断地更新着数据库中的数据。人们常常把关系模式和关系都笼统的称为关系,需要从上下文中加以区别。

关系数据库

       在一个给定的应用领域中,所有关系的集合构成一个关系数据库。

       关系数据库也有型和值之分。关系数据库的型也称为关系数据库模式,是对关系数据库的描述。关系数据库的值是关系模式在某一时刻对应的关系的集合,通常就称为关系数据库。

关系模型的存储结构

       在关系数据模型中实体及实体间的联系都用表来表示,但是表是关系数据的逻辑模型。在关系数据库的物理组织中,有的关系数据库管理系统中一个表对应一个操作系统文件,将物理数据组织交给操作系统完成;有的关系数据库管理系统从操作系统那里申请若干个大的文件,自己划分文件空间,组织表、索引等存储结构,并进行存储管理。

关系操作

基本的关系操作

       关系模型中常用的操作包括查询(query)操作和插入(insert)、删除(delete)、修改(update)操作两大部分。

       关系的查询表达能力很强,是关系操作中最重要的部分。查询操作又可以分为选择(select)、投影(project)、连接(join)、除(divide)、并(union)、差(except)、交(intersection)、笛卡尔积等。其中选择、投影、并、差、笛卡尔积是5中基本操作,其他操作可以用基本操作定义和导出,就像乘法可以用加法定义和导出一样。

       关系操作的特点是集合操作方式,操作的对象和结果都是集合。

关系数据语言的分类

       关系代数语言;

       关系演算语言;

       结构化查询语言(SQL)。

关系的完整性

       关系模型中有三类完整性约束:实体完整性(entity integrity)、参照完整性(referential integrity)和用户定义的完整性(user-defined integrity)。其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,应由关系系统自动支持。用户定义的完整性是应用领域需要遵循的约束条件,体现了具体领域中的于语义约束。

实体完整性

实体完整性规则:若属性(指一个或一组属性)A是基本关系R的主属性,则A不能取空值(null value)。

说明:

(1)实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集。例如学生关系对应于学生的集合。

(2)现实世界中的实体是可以区分的,即它们具有某种唯一性标识。例如每个学生都是独立的个体,是不一样的。

(3)相应地,关系模型中以主码作为唯一性标识。

(4)主码中的属性即主属性不能取空值。如果主属性取空值,就说明存在某个不可标识的实体,即存在无法区分的实体,这与第(2)点相矛盾,因此这个规则称为实体完整性。

参照完整性

       现实世界中的实体之间往往存在某种联系,在关系模型中实体及实体之间的联系都是用关系来描述的,这样就自然存在着关系与关系间的引用。

外码定义:设F是基本关系R的一个或一组属性,但不是关系R的码,Ks是基本关系S的主码。如果F与Ks相对应,则称F是R的外码(foreign key),并称基本关系R为参照关系(referencing relation),基本关系S为被参照关系(referenced relation)或目标关系(target relation)。

参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中的每个元组在F上的值必须:或者取空值(F的每个属性值均为空值);或者等于S中某个元组的主码值。

用户定义的完整性

       针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求。

       关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们, 而不需由应用程序承担这一功能。

       例如,某些属性不能取空值,某些属性必须在指定的范围内。

关系代数

       关系代数是一种抽象的查询语言,它用对关系的运算来表达查询。

       关系代数的运算对象是关系,运算结果也是关系。关系代数用的到运算符包括两类:集合运算符和专门的关系运算符。

传统的集合运算

       传统集合运算是二目运算,包括并、差、交、笛卡尔积4种运算。

专门的关系运算

       专门的关系运算包括选择、投影、连接、除运算等。



参考文献:数据库系统概论-第5版[王珊,萨师煊]