关系数据库

关系数据库

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

2.1.1 关系

  1. 域(domain) : 域是一组具有相同数据类型的值的集合
  2. 笛卡儿积(cartesian) : 笛卡儿积是域上的一种集合运算
    • 定义 : 给定一组域 D1,D2,…,Dn,允许其中某些域是相同的,它们的笛卡儿积为 :
      D1 $\times$ D2 $\times$ … $\times$ Dn = { (d1, d2, …, dn) | di$\in$Di, i=1, 2, …, n }
      • 元组(tuple) : 每个元素 (d1, d2, …, dn) 叫作一个n元组
      • 分量(component) : 元素中的每一个值di叫做一个分量
      • 基数(cardinal number) : 一个域允许的不同取值个数称为这个域的基数
  3. 关系(relation) :
    • 定义 : D1 $\times$ D2 $\times$ … $\times$ Dn 的子集叫做在域 D1,D2,…,Dn 上的关系,表示为 R(D1,D2,…,Dn)
      • 度(degree) : n 是关系的目或度
      • 候选码(candicate) : 若关系中的某一属性组的值能唯一地标识一个元组,而其子集不能,则称为该属性组为候选码
        • 主码(primary) : 若一个关系有多个候选码,则选定其中一个为主码
        • 主属性(prime attribute) : 候选码的诸属性称为主属性
        • 非主属性(non-prime attribute) : 不包含在任何候选码中的属性称为非主属性
        • 全码(all-key) : 在最极端的情况下,关系模式的所有属性是这个关系模式的候选码,称为全码
      • 三种类型关系 :
        • 基本关系 : 实际存储数据的逻辑表示
          1. 列是同质的(homogeneous),即每一列的分量是同一类型的数据,来自同一个域
          2. 不同的列可出自同一个域,不同的属性要给予不同的属性名
          3. 列的顺序无所谓
          4. 任何两个元组的候选码不能取相同的值
          5. 行的顺序无所谓
          6. 分量必须取原子值,即每一个分量都必须是不可分的数据项
        • 查询表 : 查询结果对应的表
        • 视图表 : 由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据

2.1.2 关系模式

关系模式(relation schema) : 关系的描述,形式化的表示为 R(U, D, DOM, F)

  • R为关系名
  • U为组成该关系的属性名集合
  • D为U中属性所来自的域
  • DOM为属性向域的映像的集合
  • F为属性间数据的依赖关系集合

2.2 关系操作

2.2.1 基本的关系操作

  1. 查询操作(query) :
    • 选择(select)
    • 投影(project)
    • 连接(join)
    • 除(divide)
    • 并(union)
    • 差(except)
    • 交(intersection)
    • 笛卡儿积
      查询的基本操作 : 选择、投影、并、差、笛卡儿积
  2. 更新操作 :
    • 插入(insert)
    • 删除(delete)
    • 修改(update)

2.2.2 关系数据语言的分类

  1. 关系代数语言 : 如 ISBL
  2. 关系演算语言 :
    1. 元组关系演算语言 : 如 ALPHA、QUEL
    2. 域关系演算语言: 如 QBE
  3. 具有以上双重特点的语言 : 如 SQL

2.3 关系的完整性

2.3.1 实体完整性

实体完整性规则 : 若属性(指一个或一组属性) A 是基本关系 R 的主属性,则 A 不能取空值(null value)。

2.3.2 参照完整性

设 F 是基本关系 R 的一个或一组属性,但不是关系 R 的码,Ks 是基本关系 S 的主码。如果 F 与 Ks 相对应,则称 F 是 R 的**外码(foreign key)**,并称基本关系 R 为 **参照关系(referencing relation)**,基本关系 S 为 被参照关系(referenced relation) 或目标关系(targer relation)。

参照完整性规则 : 若属性(或属性组) F 是基本关系 R 的外码,它与基本关系 S 的主码 Ks 相对应(基本关系 R 和 S 不一定是不同的关系),则对于 R 中的每个元组在 F 上的值必须 :

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

2.3.3 用户定义的完整性

任何关系数据库系统都应该支持实体完整性和参照完整性。除此之外,不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件。用户定义的完整性就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语言要求。

2.4 关系代数

关系代数的运算按运算符的不同可区分为传统的集合运算专门的关系运算

2.4.1 传统的集合运算

传统的集合运算是二目运算,包括并、差、交、笛卡儿积4种运算

  1. 并(union) : R$\cup$S = { t | t$\in$R $\vee$ t$\in$S }
  2. 差(except) : R-S = { t | t$\in$R $\wedge$ t$\in$S }
  3. 交(intersetion) : R$\cap$ = { t | t$\in$R $\vee$ t$\notin$ S }
  4. 笛卡儿积(cartesian product) : R$\times$S = { trts | tr $\in$R $\wedge$ ts$\in$S }

2.4.2 专门的关系运算

专门的关系运算包括选择、投影、连接除运算等

引入几个记号 :

  1. 设关系模式为 R(A1,A2,…,An),它的一个关系设为 R。t$\in$R 表示 t 是 R 的一个元组。t[Ai]则是元组 t 中相应于 Ai 的一个分量。
  2. 若 A = {Ai1,Ai2,…,Aik},其中 Ai1,Ai2,…,Aik 是 A1,A2,…,An 中的一部分,则 A 称为属性列或属性组。t[A] = (t[Ai1],t[Ai2],…,t[Aik]) 表示元组t 在属性列 A 上的诸分量的集合,$\bar{A}$ 表示 {A1,A2,…,An} 中去掉 {Ai1,Ai2,…,Aik} 后剩余的属性列。
  3. R 为 n 目关系,S 为 m 目关系。tr$\in$R,ts$\in$S,trts 为元组的连接(concatenation)。它是一个 n+m 列的元组,前 n 个分量为 R 中的一个 n 元组,后 m 个分量为 S 中的一个 m 元组。
  4. 给定一个关系 R(X,Z),X 和 Z 为属性组。当 t[X] = x 时,x 在 R 中的 象集(images set) 定义为 Zx = { t[Z] | t$\in$R,t[X] =x} 它表示 R 中属性组 X 上值为 x 的诸元组在 Z 上的分量的集合。

专门的关系运算的定义 :

  1. 选择(selection) :
    $\sigma$F( R ) = { t | t$\in$R $\wedge$ F(t)=’true’}
  2. 投影(projection) :
    $\sqcap$A( R ) = { t[A] | t$\in$R }
  3. 连接(join) :
    R$\bowtie$A$\theta$BS = { trts | tr$\in$R $\wedge$ ts$\in$S $\wedge$ tr[A]$\theta$ts[B] }
    $\theta$ 为 ‘=’ 的连接运算称为等值连接(equijoin)
    没有 $\theta$ 的连接运算称为自然连接(natural join)
  4. 除运算(division) :
    给定关系 R(X,Y) 和 S(Y,Z),其中 X,Y,Z 为属性组。
    R$\div$S = { tr[X] | tr$\in$R $\wedge$ $\sqcap$Y(S) $\subseteq$Yx}

关系数据库
http://yjh-2860674406.github.io/2022/09/03/数据库原理/课本/关系数据库/
Author
Ye JinHua
Posted on
September 3, 2022
Licensed under