重点与难点

  • 围绕关系的相关概念:域、笛卡尔积、关系、关系模式、完整性/键/码、外码/外键、主码/主键、主属性和非主属性
  • 三个完整性:实体完整性、参照完整性,用户自定义的完整性

一. 关系模型概述

1. 关系模型的提出

2. 关系模型

形象地说,一个关系就是一个Table,关系模型就是处理Table的,由三个部分组成:

  • 描述DB各种数据的基本结构形式(Table/Relation)
  • 描述Table与Table之间所可能发生的各种操作(关系运算)
  • 描述这些操作所应遵循的约束条件

2.1 关系模型的三个要素

  • 基本结构:Relation/Table(基本结构即关系)
  • 基本操作:Relation Operator
    • (并)、 (差)、(广义积)、(选择)、(投影)、(交)、(连接)、(除)
  • 完整性约束:实体完整性、参照完整性、用户自定义完整性

2.2 关系模型与关系数据库语言的关系

关系运算:关系代数与关系演算(关系演算:元组演算与域演算)

  • 关系代数:是基于集合的运算,操作的对象及结果都是集合,是一次一集合(Set-at-a-time)的操作。而非关系型的数据操作通常是一次一记录(Record-at-a-time)的操作。
    • image-20220227222312976
    • 基于关系代数设计的数据库语言(ISBL):用计算机可识别的符号表征关系代数的运算符号
  • 元组演算:基于逻辑的运算
    • image-20220227225512387
    • 基于元组演算设计的数据库语言(Ingres系统的QUEL):用计算机可识别的符号表征元组演算的运算符号
  • 域演算:基于示例的运算
    • image-20220227225749101
    • 基于域演算设计的数据库语言示例:(QBE: Query By Example)

二. 关系

1. 表

image-20220228095829233

1.1 列

  • “列”的取值范围“域”:一组值的集合,具有相同的数据类型
  • 集合中元素的个数称为域的基数

1.2 行

  • 笛卡尔积:一组域的笛卡尔积,,每个元素称为一个n-元组(笛卡尔积是由n个域所形成的所有可能的n-元组的集合)
  • 元组的每一个值 叫做一个分量
  • 若域 的基数为 ,则笛卡尔积的基数,即元组个数为

1.3 关系

  • 关系:一组域 的笛卡尔积的子集(有某一方面意义)
  • 关系不同列可能来自于一个域,为了区分为每一个列起一个名字,即“属性名”
  • 关系的表示: ,简记为,这种描述又称为关系模式或者表标题。其中, 是关系名字, 是属性, 是属性对应的域, 是关系的度或目,关系中元组的数目称为关系的基数
  • 关系模式中属性向域的映像在很多DBMS中一般直接说明为属性的类型、长度

1.4 关系与关系模式

  • 关系模式是关系的结构,关系是关系模式在某一时刻的数据
  • 关系模式是稳定的;而关系是某一时刻的值,是随时间可能变化的
  • 同一关系模式下,可以有很多的关系

2. 关系的特征

  • 列是同质:每一列中的分量来自于同一个域,是同一类型的数据
  • 不同的列可以来自同一个域,称其中每一个列为一个属性,不同的属性要给予不同的属性名
    • 即,关系模式 中, 必须是不同的,但 可以相同
  • 属性与行列的位置无关:而是靠列名区分列,靠某一或某几列的值来区分行
  • 关系和表的差别关系的两个元组不能完全相同;而在现实中,并不一定完全遵守这个特性
  • 关系第一范式:属性不可再分
    • image-20220228123334828

3. 关系上的一些重要概念

3.1 候选码/候选键

关系中的一个属性组,其值能唯一标识一个元组,若从该属性组中去掉 任何一个属性,它就不具有这一性质了,这样的属性组称作候选码。如,学号之于学生,学号与课程号的联合之于选课。

有时关系中会有多组候选码,如属性组(名字,地址)也是学生的一个候选码。

3.2 主码/主键(Primary Key)

当有多个候选码时,可以选定一个作为主码,DBMS以主码为主要线索管理关系中的各个元组。

3.3 主属性与非主属性

包含在任何一个候选码中的属性被称作主属性,而其他属性被称作非主属性。简单的,候选码只包含一个属性;极端的,所有属性构成这个关系的候选码,称为全码。

3.4 外码/外键(Foreign Key)

关系 R 中的一个属性组,它不是 R 的候选码(可以是主属性或非主属性),但它与另一个关系 S 的候选码相对应,则称这个属性组为 R 的外码或外键。两个关系通常是靠外码连接起来的。

候选码、主码和主属性的区别?????

三. 关系模型中的完整性约束

1. 实体完整性

  • 关系的主码的属性值不能为空值(不知道、不存在或无意义的值);
  • 意义:元组由主码唯一标识,若主码为空则出现不可标识的个体,这是不允许的;
  • 空值不参与算数比较逻辑运算等,有空值的时候特别注意(默认值?)

2. 参照完整性

  • 外码可以取空值,如果不取空值,那么一定对应于它作主码的表当中的某一个值;
  • 意义:保证两个关系之间连接正确性,关系数据的一致性。

3. 用户自定义完整性

  • 用户针对具体的应用环境定义的完整性约束条件。

4. DBMS对关系完整性的支持

  • 实体完整性和参照完整性由DNMS系统自动支持
  • 对于用户自定义完整性的支持:
    • 用户可以自行定义对关系、关系属性的一些约束条件
    • 更新操作发生,DBMS按照完整性约束条件检验更新正确性