1 关系模式概述

  • 关系数据库系统 是 支持关系模型的DBS
  • 关系模型的组成
    • 关系数据结构
    • 关系操作集合
    • 关系完整性约束

1.1 关系数据结构 – 关系(二维表)

  • 关系数据结构的特点:实体和联系都用关系这种单一的数据结构来实现

1.2 关系操作

  • 并、交、差、广义笛卡尔积、选择、投影、连接、除
  • 插入、删除、修改
  • 关系操作的特点
    • 操作对象和操作结果都是集合

1.3 关系完整性约束

  • 实体完整性、参照完整性、用户定义完整性

2 关系的形式化定义

2.1 关系的定义

2.1.1 定义

  • :一组具有相同数据类型的值的集合,D1D_1表示一个域
  • 关系D1XD2XXDnD_1 X D_2 X \dots X D_n 的一个子集叫做域D1D_1上的关系,表示为:
    • R(D1,D2,,Dn)R(D_1, D_2, \dots, D_n),RR为关系名,nn为关系的目或度
  • 基数:一个域允许的不同取值个数称为这个域的基数
    • 关系中基数是指 行数

2.1.2 几个概念

  • 候选码:能唯一标识元组的属性(组)
  • 主码:多个候选码中选的一个作为主码
  • 主属性:候选码中的诸属性
  • 非主属性:不出现在任何候选码中的属性

2.2 关系的六条性质

  • 列是同质的:每一列中的风量来自同一域,数据类型相同
  • 不同列可以出自同一个域
  • 列序无关性
  • 任意两个元组不能完全相同
  • 行许无关系
  • 分量不可再分

3 关系的完整性约束

3.1 实体完整性

  • 若属性A是基本关系R的主属性,则A不能取空值

3.2 参照完整性

3.2.1 参照关系与外码

  • 设F是关系R的一个或一组属性但不是R的码。如果F与关系S的主码KSK_S相对应,则称F是R的外码R称为参照关系S称为被参照关系(目标关系)

  • 例子:

  • 说明

    • 关系R和S不一定是不同的关系
    • 目标关系S的主码KSK_S和参照关系的外码F必须在同一个(一组)域
    • 外码并不一定要与对应的主码同名,当位于不同关系时往往同名,以便识别

3.2.2 参照完整性规则

  • 若属性(组)F是关系R的外码,它与关系S的**主码KSK_S**相对应,则对于R中的每个元组在F上的值必须为:

    • 或者取空值
    • 或者等于S中某个元组的主码值
  • 思考题:

    • 某关系R的外码是指其他关系的候选码,同时作为R的非主属性
    • 外码和被参照的主码可以不同名,但必须取自同一值域

3.3 用户定义完整性

  • 用户定义的完整性是针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求,如性别只能取"男"、"女"值。
  • 通常由RDBMS的Check约束提供这类检查

4 关系代数

4.1 表示记号

4.2 关系代数

4.2.1 并、交、差

  • 并、交、差 运算都是针对行的

4.2.2 广义笛卡尔积

  • n + m 列
  • k1 * K2 行

4.2.3 选择、投影、连接、除

选择 -> 取行

  • 符号:σ\sigma
  • 含义:在关系R中选择满足给定条件的诸元组

σF(R)={ttRF(t)=}\sigma_F(R)=\{t|t\in R \land F(t)='真'\}

  • F:选择条件

投影 -> 取列

  • 相关符号

  • 符号:π\pi

  • 含义:在R中选择出若干属性列组成新的关系

πA(R)={t[A]tR}\pi_A(R)=\{t[A]|t\in R\}

  • A:R中的属性列的集合

注:投影后不仅取消了原关系中的某些行,而且还可能取消某些元组(避免重复行)

连接 -> 混合

  • 符号:\bowtie
  • 含义:从两个关系的广义笛卡尔积中选取属性间满足一定条件的元组
  • σ\sigma 连接
常用两种连接运算
  • 等值运算

    • σ\sigma 为’='的连接运算
  • 自然连接

    • 一种特殊的等值连接
    • 关系中比较的两个分量必须是同名的属性(组)
    • 在结果中把重复的属性列去掉
    • 意义:将两个有关联的表合成一张有意义的表
外连接

除 -> 混合

  • 相关符号

  • 符号:÷\div

  • 例子:查询选修了全部课程的学号和姓名

πsno,sname(S)(πsno,cno(SC)÷πcno(C))\pi_{sno,sname}(S)\bowtie(\pi_{sno,cno}(SC)\div\pi_{cno}(C))

5 关系代数实用案例

  • 详情见ppt第181页

  • 易错题1

    • 应该用除法
  • 易错题2

  • 易错题3

6 关系演算

  • 可分为元组演算域演算(不讲)

6.1 元组演算

  • 元组演算表达式:{tΦ(t)}\{t|\Phi(t)\}
    • t称为元组变量
    • Φ(t)\Phi(t)称为元组演算公式
  • 原子公式:

6.2 关系代数表达式与元组演算表达式的等价转换

6.3 例子

蕴含式(包含EXISTS的运用与分析)

7 关系演算实用案例 - 难点

  • 详情见ppt第206页