关系数据结构及关系的完整性
# 关系数据结构及关系的完整性
# 关系数据结构
- 单一的数据结构----关系
- 现实世界的实体以及实体间的各种联系均用关系来表示
- 关系 ➡️ 关系模式 ➡️ 关系数据库
# 域
- 域是一组具有相同数据类型的值的集合。例:
- 整数
- 实数
- 介于某个取值范围的整数
# 笛卡尔积
域的笛卡尔积空间
- 给定一组域
,允许其中的某些域是相同的 的 笛卡尔空间为: $$ \begin{aligned} &D_1\times D_2\times\cdots\times D_n = \ &{(d_1, d_2, \cdots, d_n)|d_i \in D_i, i=1, 2, \cdots, n} \end{aligned} $$ - 笛卡尔积是所有域取值的任意组合
- 笛卡尔积可以看着是关系的“域”
- 给定一组域
基数(Cardinal number)
- 若
为有限集,其基数为 ,则 的基数 为: $$ M = \prod_{i=1}^{m}m_i $$
- 若
笛卡尔积的表示方法
- 笛卡尔积可表示为一张二维表
- 表中的每行对应一个元组,表中的每列对应一个域
例: 给出 3 个域
SUPERVISOR | SPECIALITY | POSTGRADUATE |
---|---|---|
张清玫 | 计算机专业 | 李勇 |
张清玫 | 计算机专业 | 刘晨 |
张清玫 | 计算机专业 | 王敏 |
张清玫 | 信息专业 | 李勇 |
张清玫 | 信息专业 | 刘晨 |
张清玫 | 信息专业 | 王敏 |
刘逸 | 计算机专业 | 李勇 |
刘逸 | 计算机专业 | 刘晨 |
刘逸 | 计算机专业 | 王敏 |
刘逸 | 信息专业 | 李勇 |
刘逸 | 信息专业 | 刘晨 |
刘逸 | 信息专业 | 王敏 |
# 关系相关术语的定义
# 关系
的子集叫作在域 上的关系,表示为: $$ R(D_1, D_2, \cdots, D_n) $$ :关系名 : 关系的目或度(Degree)
# 元组
- 关系中的每个元素
叫作一个 元组(n-tuple)或简称元组 - 通常用
表示
- 通常用
- 属性
- 关系中不同列称为属性(Attribute),每个属性有一个名字
目关系必有 个属性
# 码
- 候选码(Candidate key)
- 若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码
- 简单的情况:候选码只包含一个属性
- 全码(All-key)
- 最极端的情况:关系模式的所有属性组是这个关系模式的候选码,称为全码(All-key)
- 主码
- 若一个关系有多个候选码,则选定其中一个为主码(Primary key)
- 主属性
- 候选码的诸属性称为主属性(Prime attribute)
- 不包含在任何侯选码中的属性称为非主属性(Non-Prime attribute)或非码属性(Non-key attribute)
# 单元关系与二元关系
- 当
时,称该关系为单元关系(Unary relation)或一元关系 - 当
时,称该关系为二元关系(Binary relation)
# 基本关系的性质
- 列是同质的(Homogeneous),即来自同一个属性
- 不同的列可出自同一个域
- 列的顺序无所谓, 列的次序可以任意交换
- 任意两个元组的候选码不能相同
- 行的顺序无所谓,行的次序可以任意交换
- 分量必须取原子值
# 关系模式
- 关系模式(Relation Schema)是型、关系是值
- 关系模式是对关系的描述
- 元组集合的结构
- 属性构成
- 属性来自的域
- 属性与域之间的映象关系
- 完整性约束条件
- 元组集合的结构
# 关系模式的定义
关系模式可以形式化地表示为: $$ R(U, D, DOM, F) $$
: 关系名 : 组成该关系的属性名集合 : 中属性所来自的域 : 属性向域的映象集合 : 属性间数据的依赖关系的集合
关系模式通常可以简记为 $$ R (U) 或 R (A_1,A_2,…,An) $$
: 关系名 : 属性名 - 注:域名及属性向域的映象常常直接说明为属性的类型、长度
# 关系模式与关系的“关系”
- “型”与“值”的关系
- 关系模式:是对关系的描述,是静态的、稳定的
- 关系:是关系模式在某一时刻的状态或内容,是动态的、随时间不断变化的
- 关系模式和关系往往笼统称为关系, 通过上下文加以区别
# 关系数据库
- 在一个给定的应用领域中,所有关系的集合构成一个关系数据库
关系数据库的型与值
- 关系数据库的型: 关系数据库模式,是对关系数据库的描述
- 关系数据库的值: 关系模式在某一时刻对应的关系的集合,通常称为关系数据库
# 关系模型的完整性
- 实体完整性和参照完整性
- 关系模型必须满足的完整性约束条件称为关系的两个不变性,应该由关系系统自动支持
- 用户定义的完整性
- 应用领域需要遵循的约束条件,体现了具体领域中的语义约束
# 实体完整性
- 关系的主属性不能取空值
- 空值就是“不知道”或“不存在”或“无意义”的值
例:
选修(学号,课程号,成绩)
“学号、课程号”为主码
“学号”和“课程号”两个属性都不能取空值
说明
- 实体完整性规则是针对基本关系而言的。
- 一个基本表通常对应现实世界的一个实体集
- 现实世界中的实体是可区分的,即它们具有某种唯一性标识
- 关系模型中以主码作为唯一性标识
- 主码中的属性即主属性不能取空值
- 因为要符合实体是可区分的原则
# 参照完整性
- 在关系模型中实体及实体间的联系都是用关系来描述的,自然存在着关系与关系间的引用
例2.1:学生实体,专业实体
学生(学号,姓名,性别,专业号,年龄)
专业(专业号,专业名)
- 学生关系引用了专业关系的主码“专业号”
- 学生关系中的“专业号”值必须是确实存在的专业的专业号
例2.2:学生、课程、学生与课程之间的多对多联系 学生(学号,姓名,性别,专业号,年龄) 课程(课程号,课程名,学分) 选修(学号,课程号,成绩)
例2.3:学生实体及其内部的一对多联系
学生(学号,姓名,性别,专业号,年龄,班长)
学号 姓名 性别 专业号 年龄 班长 801 张三 女 01 19 802 802 李四 男 01 20 803 王五 男 01 20 802 804 赵六 女 02 20 805 805 钱七 男 02 19
- “学号”是主码,“班长”是外码,它引用了本关系的“学号”
- “班长” 必须是确实存在的学生的学号
# 外码
- 设
是基本关系R的一个或一组属性,但不是关系 的码。如果 与基本关系 的主码 相对应,则称 是 的外码 - 基本关系
称为参照关系(Referencing Relation - 基本关系
称为被参照关系(Referenced Relation) 或目标关系(Target Relation)
- 基本关系
外码的特点
- 参归类关系和被参照关系不一定是不同的关系,如例 2.3
- 目标关系
的主码 和参照关系的外码 必须定义在同一个(或一组)域 - 外码并不一定要与相应的主码同名,如例 2.3
- 但当外码与相应的主码属于不同关系时,往往取相同的名字,以便于识别
# 参照完整性规则
- 若属性(或属性组)
是基本关系 的外码,它与基本关系 的主码 相对应(基本关系 和 不一定是不同的关系),则对于 中每个元组在 上的值必须为: - 如果
不同时是 的主码,则其可取空值( 的每个属性值均为空值) - 如例 2.2. 中的学号和课程号为主码,则不能取空
- 或者等于
中某个元组的主码值
- 如果
# 用户定义的完整性
- 针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求
- 关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不需由应用程序承担这一功能
例: 课程(课程号,课程名,学分)
- “课程号”属性必须取唯一值
- 非主属性“课程名”也不能取空值
- “学分”属性只能取值{1,2,3,4}
编辑 (opens new window)