Alex_McAvoy

想要成为渔夫的猎手

关系数据结构

【关系数据结构的形式化定义】

关系模型的数据结构十分简单,在用户角度来看关系模型中数据的逻辑结构只是一张二维表,虽然简单,但却能表示现实世界中实体以及实体间的各种联系,在 数据库关系模型 中,已经介绍了关系模型与其基本概念,但关系模型实质上是建立在集合代数基础上的,这里从集合论角度,给出关系数据结构的形式化定义

域(Domain)是一组具有相同数据类型的值的集合,例如整数、实数、某个取值范围内的数等等,都是一个域

一个域允许的不同取值个数称为这个域的基数,对于一个域 $D$,其基数记为 $m$

例如,某个域 D = {1, 2, 4, 8},其基数 m = 4

笛卡尔积

笛卡尔积(Cartesian Product)是域上的一种集合运算,是所有域的所有取值的不可重复的组合

其数学定义如下:

给定一组域 $D_1,D_2,…,D_n$,并允许这些域中某些域是相同的,则这些域的笛卡尔积为

其中,笛卡尔积的每一个元素 $(d_1,d_2,…,d_n)$ 称为一个 n 元组(n-tuple),元组 $(d_1,d_2,…,d_n)$ 中的每一个值 $d_i$ 称为一个分量

若 $D_i$ 为有限集,其基数为 $m_i$,则笛卡尔积的基数

举例来说,假如给出三个域:教师集合 THACHER={a,b}​,学生集合STUDENTS={1,2,3},专业集合 MAJORS={P,Q}

THACHER, STUDENTS, MAJORS笛卡尔积

其中,笛卡尔积 THACHER x STUDENTS x MAJORS 中的每一个元素 (a, 1, P)(a, 2, P) 等,都是一个元组;组中的每一个值 a3Q 等,都是一个分量,该笛卡尔积的基数M = 2*3*2 = 12

笛卡尔积可表示为一个二维表,表中的每行对应一个元组,表中的每列对应一个,上例的笛卡尔积就可表示为下表

THACHER STUDENTS MAJORS
a 1 P
a 1 Q
a 2 P
a 2 Q
a 3 P
a 3 Q
b 1 P
b 1 Q
b 2 P
b 2 Q
b 3 P
b 3 Q

关系

笛卡尔积是没有实际意义的,其某个子集才有实际含义,一个子集称为一个关系(Relation),由于关系是笛卡尔积的子集,因此关系也是一张二维表,表中的每行对应一个元组,每列对应一个域,由于域可以相同,为进行区分,对每列起一个名字,称为属性(Attribute)

对于笛卡尔积 $D_1 \times D_2 \times … \times D_n$ ,其子集 $R(D_1,D_2,…,D_n)$ 为该笛卡尔积的关系,其中 $R$ 为关系名,$n$ 为关系的度(Degree),关系中每个元素是关系中的元组(Tuple),常用 $t$ 来表示

当关系的度 $n=1$ 时,称该关系为一元关系,当 $n=2$ 时,称该关系为二元关系

根据定义,关系可以是一个无限集合,而且由于组成笛卡尔积的域不满足交换律($(d_1,d_2) \neq (d_2,d_1)$),因此当关系作为关系模型的数据结构时,需要给予如下的限定与扩充:

  • 无限关系在数据库系统中无意义,限定关系模型中的关系必须是有限集合
  • 通过位关系的每个列附加一个属性名将关系属性的有序性取消

同时,在引入关系后,有如下定义:

  • 码(Key):又称为键,用于确定关系表中某一元组的
  • 候选码(Candidate key):对于关系中的某一属性组,其值能够唯一标识一个元组,而其子集不能
  • 主码(Primary key):对于候选码,选定其中一个用于唯一标识一个元组(候选码唯一时该候选码即为主码)
  • 主属性(Primary attribute):候选码的各属性
  • 非主属性(no-prime attribute):不包含在任何候选码中的属性
  • 全码(All-key)最极端的情况下,关系模式的所有属性组是这个关系的候选码(最简单的情况下,候选码仅包含一个属性)

以上述的三个域教师集合 THACHER={a,b},学生集合STUDENTS={1,2,3},专业集合 MAJORS={P,Q} 产生的笛卡尔积为例

许多元组是没有实际意义的,因为在许多学校的研究生培训制度中,一个教师仅教授一门课,且一个学生只能跟着一个导师学习某个专业,故而其中的某一个子集才是有实际意义的,才能表示清楚某些导师与学生的关系

如下表所示,将该关系取名为 TSM,表示 老师a 带领 学生1学生2 学习 专业P老师b 带领 学生3 学习 专业Q

THACHER STUDENTS MAJORS
a 1 P
a 2 P
b 3 Q

如上所示,该关系可以表示为 TSM(T, S, C)关系名 R = TSC,关系的 n = 3属性即为三个域的域名,假设学生姓名不会重复,那么 STUDENTS 属性的每一个值都唯一标识了一个元组,可作为 TSC 关系的候选码,同时也为主码,此外,STUDENTS 属性为主属性THACHER 属性和 MAJORS非主属性

【关系类型】

关系有三种类型:

  • 基本关系(基本表):实际存在的表,其是实际存储数据的逻辑表示
  • 查询表:查询结果对应的表,其是根据要求对基本关系进行查询得到的结果
  • 视图表:由基本表或其他视图导出的表,是一种虚拟的表,不对应实际存储的数据

可以发现,在三类关系中,基本关系是最基本也是最核心的关系,其具有以下性质:

  • 列是同质的(Homogeneous):每列中的分量是同一类型的数据,来自同一域
  • 不同的列可出自同一域,其中每一列称为一个属性,不同的属性要给予不同的属性名
  • 列的次序可任意交换(在实际应用中,增加新属性时往往插入到最后一列)
  • 任意两元组的候选码不能相同,以保证可以唯一标识元组
  • 行的次序可任意交换
  • 分量必须取原子值:每一分量是不可再分的数据项

关系模型 中,已经介绍了关系模型要求规范化,规范条件最基本的一条就是关系的每一分量必须取原子值,规范化的关系称为范式(Normal Form,NF),详见:范式

【关系模式】

在任何一个数据库中,都要区分型和值,对于关系数据库来说,就是关系模式,是对关系数据库的描述,其包括若干域的定义、这些域之上定义的若干关系模式;就是关系模式在某一时刻对应的关系的集合,简称为**关系数据库

关系模式(Relation schema)包含元组集合的结构(属性构成、属性来自的域、属性与域之间的映象关系)、元组语义及完整性约束条件、属性间的数据依赖关系集合,其可表示为:$R(U,D,DOM,F)$

其中,$R$ 是关系名,$U$ 是组成该关系的属性名集合,$D$ 是 $U$ 中属性来自的,$DOM$ 是属性到域的映射集合(常常直接说明为属性的类型、长度),$F$ 是属性间数据的依赖关系集合

关系模型通常简记为:$R(U)$ 或 $R(A_1,A_2,…,A_n)$,其中 $A_i$ 为第 $i$ 个属性的属性名

感谢您对我的支持,让我继续努力分享有用的技术与知识点!