0%

关系数据库

课上学习的关于数据库系统的一些基本知识

第二章-关系数据库

关系数据结构及形式化定义

关系

域是一组具有相同数据类型的值的集合

  • 值的集合是有限的、且不重复
  • 集合的概念要求集合中的元素是不重复的
  • 同一数据类型

笛卡尔积

  • 笛卡尔积:给定一组域$D_1,D_2,…,D_n$,允许其中某些域是相同的。$D_1,D_2,…,D_n$的笛卡尔积为:

    $$D_1\times D_2\times …\times D_n={(d_1,d_2,…,d_n)|d_i\in D_i,i=1,2,…,n}$$

    • 笛卡尔积是所有域的所有取值的一个组合

    • 组合结果不允许重复

  • 元组:笛卡尔积中的每一个元素称为一个n元组,简称元组

  • 分量:元组中的每一个值$d_i$称为一个分量

  • 基数:集合中包含元素的个数

  • 笛卡尔积的表示方法:

    • 可表示为一张二维表,每行对应一个元组,每列对应一个域

关系

  • 定义
    • $D_1,D_2,…,D_n$的子集称为在域$D_1,D_2,…,D_n$上的关系
    • 表示:$R(D_1,D_2,…,D_n)$
    • $R$:关系名,$n$:关系的目或度
  • 元组:关系中的每个元素为关系中的元组,通常用$t$表示
  • 单元关系与二元关系:$n$分别为1和2
  • 表示:
    • 关系是一个二维表
    • 表的每行对应一个元组
    • 表的每列对应一个域。
  • 属性:
    • 关系中不同列可在相同域上
    • 必须对每列起一个名字,称为属性(attribute)。
    • $n$目关系有$n$个属性
  • 码/键
    • 候选码:若关系中的某一属性组的值能唯一地标识一个元组,而其子集不能,则称该属性组为候选码(candidate key)。
    • 超键:可唯一标识一个元组的属性组
    • 全码:关系模式的所有属性组是这个关系模式的候选码,则称为全码
    • 主键/码:若一个关系有多个候选码则选定其中一个为主码(primary key)。
    • 主属性
      • 候选码的诸属性称为主属性
      • 不包含在任何候选码中的属性成为非主属性/非码属性
    • 外键/码:设F是基本关系R的一个或一组属性,但不是关系R的码,如果F与基本关系S的主码$K_S$相对应,则称F是基本关系R的外部码(foreign key),简称外码。
  • 实体间的关系
    • 实体之间的关系依赖主键-外键关联实现
  • 三类关系
    • 基本关系(基本表或基表)
      • 实际存在的表,是实际存储数据的逻辑表示
      • 性质
        • 列是同质的:每列的分量来自同一域
        • 不同列可在同一域上
        • 列的顺序无关,可任意交换列的次序
        • 行的顺序无关
        • 任两个元组的候选码不可相同
        • 分量必须取原子值
    • 查询表
      • 查询结果对应的表
    • 视图表
      • 由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据

关系模式

概念

  • 关系模式(Relation Schema)是型(Type),是结构
  • 关系是值(二维表)
  • 同一关系模式下,可有很多的关系
  • 关系模式是关系的结构,关系是关系模式在某一时刻的数据
  • 关系模式是稳定的;而关系是某一时刻的值,是随时间可能变化的
  • 关系模式是对关系的描述

关系数据库

概念

  • 在给定应用领域中,所有关系的集合构成一个关系数据库
  • 关系数据库的型与值
    • 型:关系数据库模式(schema),是对关系数据库结构的描述
    • 值:关系模式在某一时刻对应的关系的集合,通常称为关系数据库(RDB)

关系模型的存储结构

关系操作

基本的关系操作

  • 常用关系操作

    • 查询操作:8种(其中5种为基本操作)

      • 选择($\sigma$)、投影($\pi$)、连接($\bowtie$)、除($\div$)、并($\cup$)、差($-$)、交($\cap$)、笛卡尔积($\times$)

      • 其中并、差、笛卡尔积、投影和选择5种运算为基本运算。

      • 其他运算的表示:

        • 交:

          $R\cap S=R-(R-S)$

        • 连接:

          $R \underset{A\Theta B}{\bowtie} S= \sigma_{A\Theta B}(R\times S)$

        • 除:

          $R(X,Y)\div S(Y,Z)=\pi_X(R)-\pi_X(\pi_X(R)\times\pi_Y(S)-R)$

    • 数据更新:插入、删除、修改

  • 数据操作的特点

    • 集合操作方式:操作的对象和结果都是集合,一次一集合的方式

关系数据库语言的分类

关系代数语言

  • 用对关系的运算来表达查询要求,对关系代数表达式求值
  • 代表:ISBL

关系演算语言:用谓词来表达查询要求(选学)

具有关系代数和关系演算双重特点的语言

  • 代表:SQL

关系的完整性

关系的三类完整性约束

  • 关系的两个不变性:
    • 实体完整性和参照完整性
    • 是关系模型必须满足的完整性约束条件
  • 用户定义的完整性

实体完整性

  • 实体完整性规则:基本关系$R$的主属性不可取空值(NULL)

参照完整性

关系间的引用

外码

  • 设$F$是基本关系$R$的一个或一组属性,但不是关系$R$的码,如果$F$与基本关系$S$的主码$K_S$相对应,则称$F$是基本关系$R$的外部码(foreign key),简称外码
  • 基本关系$R$称为参照关系
  • 基本关系$S$称为被参照关系/目标关系
  • 关系$R$与$S$可以相同
  • 目标关系$S$的主码$K_S$和参照关系的外码$F$必须定义在同一个/组域上
  • 外码与相应主码可以不同

参照完整性规则

对于$R$中每个元组在$F$上的值必须为:

  • 等于$S$中的某个元组的主码值$K_S$
  • 或取空值($F$的每个属性值均为空值)

关系代数

  • 关系代数是一种抽象的查询语言,它用关系运算表达查询

  • 关系代数

    • 运算对象是关系
    • 运算结果亦为关系
    • 关系代数的运算符有两类:集合运算符和专门的关系运算符
    • 此外还有比较运算符和逻辑运算符
  • 集合运算符

    • 并($R\cup S$)

      • $R$和$S$应具有相同的目$n$,相应的属性取自同一个域
      • 结果仍为$n$目关系,由属于$R$或$S$的元组构成
      • 结果不能重复
    • 差($R-S$)

      • $R$和$S$应具有相同的目$n$,相应的属性取自同一个域
      • 结果仍为$n$目关系,由属于$R$且不属于$S$的元组构成
    • 交($R\cap S$)

      • $R$和$S$应具有相同的目$n$,相应的属性取自同一个域
      • 结果仍为$n$目关系,由属于$R$又属于$S$的元组构成
    • 笛卡尔积(广义)

      • $R$: $n$目关系,$k_1$个元组
      • $S$: $m$目关系,$k_2$个元组
      • $R\times S$:
        • 列:$(n\times m)$列元组的集合
        • 行:$k_1\times k_2$个元组
  • 专门的关系运算

    • 记号

      • $R,t\in R, t[A_i]$
      • $A,t[A], \overline{A}$
      • $\underset{t_rt_s}{\frown}$
      • 象集$Z_X$
    • 选择(限制/过滤)

    • 投影

      • 若投影后有重复元组,则应去掉
    • 连接($\theta$连接)

      • 从两个关系的笛卡尔积中选取属性间满足一定条件的元组
      • 等值连接
      • 自然连接
        • 操作步骤
          1. 对两个表进行广义笛卡尔积
          2. 从广义笛卡尔积中选取在相同列上相同的元组
          3. 去掉重复列
        • 悬浮元组
          • 外连接=自然连接+失配元组
            • 左外连接
            • 右外连接
      • $R(X,Y)\div S(Y,Z)=\pi_X(R)-\pi_X(\pi_X(R)\times\pi_Y(S)-R)$

关系演算(选学)

-------------终了-------------

欢迎关注我的其它发布渠道