数据库系统(3)-关系模型之基本概念
- 关系模型概述?
- 什么是关系?
- 关系模型中的约束
关系模型简述
提出
E.F.Codd 在 1970 年提出
研究
一个关系(relation) 就是一个Table
关系模型就是处理Table 的,由三个部分组成:
- 描述DB各种数据的基本结构形式(Table/Relation)
- 描述Table与Table之间所可能发生的各种操作(关系运算)
- 描述这些操作所应遵循的约束条件(完整性约束)
关系模型三要素
- 基本结构:Relation/Table
- 基本操作:Relation/Table
- 基本的
- 并 Union
- 差 difference
- 广义积 product
- 选择 selection
- 投影 projection
- 拓展的:
- 交 intersection
- 连接 join
- 除 division
完整性约束:实体完整性、参照完整性和用户自定义的完整性
关系模型与关系数据库语言的关系
关系运算:关系代数和关系演算
关系演算:元组演算和域演算
基于关系代数设计的数据库语言(ISBL):用计算机可识别的符号表征关系代数的运算符号
基于元组演算设计的数据库语言(Ingres系统的QUEL):用计算机可识别的符号表征元组演算的运算符号
基于域演算设计的数据库语言示例QBE
什么是关系
什么是表
表的基本构成要素
- 表/关系
- 列/字段/属性/数据项
- 列名
- 列值
- 标题/模式
- 行/元组/记录
关系
“列”的取值范围“域(Domain)”
- 域(Domain)
- 一组值的集合,这组值具有相同的数据类型
- 集合中元素的个数称为域的基数(Cardinality)
一组域 $D_1,D_2,\cdots,D_n$ 的笛卡尔积为: $D_1\times D_2\times\cdots D_n={(d_1,d_2,\cdots,d_n)|d_i \in D_i,;i=1,\cdots,n}$
笛卡尔积的每个元素 $(d_1,d_2,\cdots,d_n)$ 称作一个 n-元组(n-tuple)
元组 $(d_1,d_2,\cdots,d_n)$ 的每一个值 $d_i$ 叫做一个分量(component)
元组 $(d_1,d_2,\cdots,d_n)$ 是从每一个域人去一个值所形成的一种组合,笛卡尔积是所有这种可能组合的集合,即:笛卡尔积是由 $n$ 个域形成的所有可能的 n-元组的集合
若 $D_i$ 的基数为 $m_i$,则笛卡尔积的基数,即元组个数为 $m_1\times m_2\times\cdots\times m_n$
- 关系(Relation)
- 一组域的笛卡尔积的子集
- 有某种意义的组合
- 笛卡尔积中具有某一方面意义的那些元组被称作一个关系(Relation)
- 由于关系的不同列可能来自同一个域,为区分,需要为每一列起一个名字,该名字即为属性名.
关系可用 $R(A_1:D_1,A_2:D_2,\cdots,A_n:D_n)$ 表示,可简记为 $R(A_1,A_2,\cdots,A_n)$,这种描述又被称为 关系模式(Schema)或表标题(head)
$R$ 是关系的名字,$A_i$是属性。$D_i$ 是属性所对应的域,$n$ 是关系的度或目(degree),关系中元组的数目称为关系的基数(Cardinality)
关系模式 $R(A_1:D_1,A_2:D_2,\cdots,A_n:D_n)$ 中属性向域的映像在很多 DBMS 中一般直接说明为属性的类型、长度等
例如
Student(S# char(8), Sname char(10))
关系模式域关系
同一关系模式下,可能有很多的关系
关系模式是关系的结构,关系是关系模式在某一时刻的数据
关系模式是稳定的,而关系是某一时刻的值,是随时间可能变化的
关系的特性及相关的概念
列是同质:即每一列中的分量来自同一域,是同一类型的数据
不同的列可以来自同一个域,成其中的每一列为一个属性,不同的属性要给予不同的属性名
- 列位置互换性:区分哪一列是靠列名
- 行位置互换性:区分哪一列是靠某一或某几列的值(关键字/键字/码字)
关系是以内容来区分的,而不是属性在关系的位置来区分
理论上,关系的任意两个元组不能完全相同(集合的要求:集合内不能有相同的两个元素),但是,现实应用中,**表(Table)**可能并不完全遵守这些特性。
元组相同指两个元组的各个分量完全相同
属性不可再分特性,又被称为关系第一范式。
候选码(Candidate Key)/候选键
关系中的一个属性组,其值能唯一标识一个元组,若从该属性组中去掉任何一个属性,他就不具有这一性质了,这样的属性组称作候选码。
主码(Primary Key)/主键
当有多个候选码时,可以选定一个作为主码
DBMS 以主码为主要线索管理关系中的各个元组
主属性与非主属性
包含在任何一个候选码中的属性被称作主属性,而其他属性被称作非主属性
最简单的,候选码只包含一个属性
最极端的,所有属性构成这个府岸西的候选码,称为全码(All-Key)
外码(Foreign Key)/外键
关系 R 中的一个属性组,他不是 R 的候选码,但它与另一个关系 S 的候选码相对应,则称这个属性组为 R 的外键或外码
两个关系(多个关系)通常是靠外码连接起来的
关系模型中的完整性
- 实体完整性
- 关系的主码中的属性值不能为空值
- 空值:不知道或无意义的值
- 意义:关系中的元组对应到现实世界相互之间可区分的一个个个图,这些个体是通过主码来唯一标识的,若主码为空,则出现不可表示的个体,这是不容许的
- 参照完整性
- 如果关系R1的外码 Fk与关系 R2的主码 Pk相对应,则 R1 中的每一个元组的 Fk 值或者等于 R2 中某个元组的 Pk 值,或者为空值
- 用户自定义完整性
- 用户针对具体的应用环境定义的完整性约束条件
DBMS 对关系完整性的支持
实体完整性和参照完整性由DBMS系统自动支持
- DBMS提供机制:
- 它使用户可以自行定义有关的完整性约束条件
- 当有更新操作发生时,DBMS将自动按照完整性约束条件检验更新操作的正确性,即是否符合用户自定义的完整性