@[toc]
前面说过,数据模型由以下三部分构成
- 数据结构
- 数据操作
- 数据的完整性约束条件
而如今最为重要的数据模型便是关系模型。本书所学的关系数据库就是支持关系模型的数据库系统,因此本章重点研究的也是以下三个部分
- 关系数据结构(本节介绍)
- 关系操作集合(第二节介绍)
- 关系完整性约束条件(第三节介绍)
然后第四节和第五节分别介绍关系代数和关系演算
一:关系
前面说过,关系模型建立在严格的数学概念之上,只包含单一的数据结构——关系,在用户看来关系就是一张二维表
(1)域
域:是一组具有相同数据类型的值的集合
- 如自然数、整数、实数
(2)笛卡尔积
笛卡尔积:是一种域上面的集合运算,得到每个域中元素的所有可能的组合,它可以表示为一张二维表,在笛卡尔积中有
- 元组:每一行是一个元组,比如 (张清玫,计算机专业,李勇)、(张清玫,计算机专业,刘晨)等都是元组 ;
- 分量:每一行中每一个元素都是一个分量,比如张清玫、计算机专业、李勇、刘晨等都是分量
比如下面的、和个域
如果让他们做笛卡尔积,也就是排列组合,那么就会形成下面一张二维表
由此可知,该笛卡尔积的基数为2×2×3=12,也即有12个元组
上面的笛卡尔积中很多元组是没有意义的(例如在实际情形中一个导师一般专注于一个研究方向)。所以该笛卡尔积的一个子集才是有意义的,才可以表示导师和研究生的关系,例如
- 表SAP
(3)关系
A:基本概述
关系:笛卡尔积(×,...,)的子集叫做在域、,...,的关系,表示为R(、,...,),其中
- R:关系名
- n:关系的目或度(n=1时称为单元关系,n=2时称为二元关系)
关系既然是笛卡尔积的子集(有限子集),所以关系也是一张二维表
- 表的每一行对应一个元组,表的每一列对应一个域
- 由于域可以相同,为了区分,必须对每列起一个名字,称为属性(比如上面的表中研究生和导师都是人,为了区分,所以才取了不同的名字)
B:码相关概念
以下面关系为例
候选码:若关系中的某一属性组(注意是组不是某单个属性,当然有时属性组也可能只有一个属性)能唯一地标识一个元组,而其子集不能,则该属性组称之为候选码
- 上面关系中,学号是无法区分的,因为学号虽然不重复,但一个学生可能会对应多个课程,这就导致学号无法唯一标识一个元组。因此这里(学号,课程名)可以作为一个候选码
- 需要注意的是候选码不一定只有一个,可能有多个,只要满足条件即可,但在本例中确实只有一个
超码:能够唯一标识一条记录的属性或属性集,超码是候选码的扩充,候选码是最小的超码
- 上面关系中,(学号、课程名)是候选码,那么它的超集,例如(学号、课程名、姓名)、(学号、课程名、性别)就是超码
主码:某个能够唯一标识一条记录的最小属性集(候选码中的“人选之子”)
- 候选码可能有多个,但是数据库设计者在设计时会根据实际需求选择一个候选码作为主码
外码:是本关系的属性且不是码,而是另一个关系的主码(后续会详细介绍)
全码:这是一种特殊情况:关系的所有属性组是这个关系模式的候选码
主属性和非属性:包含在候选码中的属性(注意是集合,不是某个候选码)称为主属性;不包含在候选码中的属性称为非主属性
- 上面关系中,姓名、性别和期末分数都是非主属性
C:关系的三种类型
关系可以有三种类型
- 基本关系(又称为基本表):实际存在的表,是实际存储数据的逻辑表示
- 查询表:查询结果对应的表
- 视图表:由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据
其中基本关系满足以下性质(作了解即可)
二:关系模式
在(数据库系统概论|王珊)第一章绪论-第三节:数据库系统的结构中讲过型和值的概念
- 型(type):对某一类数据的结构和属性的说明
- 值(value):是型的一个具体赋值
在关系数据库中,关系模式就是型,关系就是值,关系模式是对关系的描述,具体来说要描述以下方面
- 元组集合的结构(由哪些属性构成、这些属性来自哪些域、属性与域之间的映像关系)
- 元组语义以及完整性约束
- 属性之间的数据依赖关系
关系模式:关系模式就是对关系的描述,可以表示为
- :关系名
- :组成该关系的属性名集合
- :中属性所来自的域
- :属性向域的映像集合
- :属性间数据的依赖关系集合(此部分属于第六章:关系数据理论的内容)
关系模式通常可以简记为(重点用)
或
- :关系名
- :属性名
- “域名”及“属性向域的映像”常常直接说明为属性的类型和长度
三:关系数据库
(1)基本概念
关系数据库:在一个给定的应用领域中,所有关系的集合构成的一个关系数据库
(2)关系数据库的型与值
关系数据库的型:也称为关系数据库模式,是对关系数据库的描述,包括
- 若干域的定义
- 在这些域上定义的若干关系模式
关系数据库的值:这些关系模式在某一时刻对应的关系的和,通常就叫做关系数据库