• 关系模型概述?
  • 什么是关系?
  • 关系模型中的约束

关系模型简述

提出

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将自动按照完整性约束条件检验更新操作的正确性,即是否符合用户自定义的完整性