数据库系统概论-第二章-关系数据库

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

2.1.1 关系

  1. 域 (Domain):一组具有相同数据类型的值的集合,用 D 表示

  2. 笛卡尔积 (Cartesian Product):给定一组域 \(D_1,D_2,\dots,D_n\),这些域中可以有相同的,其笛卡尔积为:\(D_1\times D_2\times \dots\times D_n=\{(d_1,d_2,\dots,d_n)|d_i\in D_i,i=1.2.\dots,n\}\)
  3. 元组:笛卡尔积中每一个元素 \((d_1,d_2,\dots,d_n)\) 叫作一个 n 元组

  4. 分量:笛卡尔积中元素 \((d_1,d_2,\dots,d_n)\) 的每一个值 di 叫作一个分量

  5. 关系:\(D_1\times D_2\times \dots\times D_n\)的子集叫作在域 \(D_1,D_2,\dots,D_n\) 上的关系,表示为:

    \(R(D_1,D_2,\dots,D_n)\),R 关系名,n 关系的目或度

    笛卡尔积可以表示为一个二维表,每行对应一个元组,每列对应一个域。

  • 若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码
  • 若一个关系中有多个候选码,则选定其中一个为主码
  • 候选码的诸属性称为主属性
  • 不包含在任何候选码中的属性称为非主属性或非码属性
  • 最简单情况下,候选码只包含一个属性;最极端情况下,关系模式的所有属性是这个关系的候选码,称为全码
  • 三种关系类型
    • 基本关系 / 基本表
    • 查询表
    • 视图表
  • 基本关系的性质
    • 列是同质的,同一类型数据,来自同一个域
    • 不同的列可出自同一类型域,每列为一个属性,不同属性有不同属性名
    • 列的顺序无所谓,次序可以任意交换
    • 行的顺序无所谓,次序可以任意交换
    • 任意两个元组的候选码不能完全相同
    • 分量必须取原子值,即不可份的数据项

2.1.2 关系模式

关系的描述称为关系模式,形式化地表示为:R(U, D, dom, F),简记为 R(U) 或 R(A1A2…An)

  • R:关系名
  • U:该关系的属性集合
  • D:属性组 U 中属性所来自的域
  • dom:属性向域的映像集合
  • F: 属性间的数据以来关系集合
  • Ai:属性名

关系模式是对关系的模式,是静态的、稳定的。

关系是动态的,随时间不断变化的。

2.1.3 关系数据库

给定的应用类型,所有实体及实体之间联系的关系的集合构成一个关系数据库。

2.2 关系操作

2.2.1 基本的关系操作

  • 查询(最重要):选择,投影,并,差,笛卡尔积(5 基本操作),除,交,连接
  • 插入
  • 删除
  • 修改

特点:操作的对象和结果都是集合,一次一集合。

2.2.2 关系数据语言的分类

SQL

2.3 关系的完整性

2.3.1 关系的三类完整性约束

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

2.3.2 实体完整性

若属性 A 是基本关系 R 的主属性,则属性 A 不能取空值。若主码有多个属性,则都不能取空值。

2.3.3 参照完整性

在关系模型中实体及实体间的联系都是用关系来描述的,因此可能存在着关系与关系间的引用。

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

  • 关系R 和 S 不一定是不同的关系。
  • 目标关系 S 的主码 Ks 和参照关系的外码 F 必须定义在同一个(或一组)域上。
  • 外码并不一定要与相应的主码同名

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

  • 或者取空值(F 的每个属性值均为空值)
  • 或者等于 S

2.3.4 用户定义完整性

用户定义的完整性是针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求。

关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能。

2.4 关系代数

  • 运算对象:关系
  • 运算结果:关系
  • 元素符:集合运算符、比较运算符、专门的关系运算符、逻辑运算符

2.4.1 传统的集合运算

2.4.2 专门的关系运算

引入记号:

  • 设关系模式为$ R(A_1,A_2,,A_n)$,一个关系为 R,t 是 R 的一个元组,t[ai] 是元组 t 中属性 Ai 的一个分量

  • \(A=\{A_{i1},A_{i2},\dots,A_{ik}\}\),其中\(\{A_{i1},A_{i2},\dots,A_{ik}\}\)\(\{A_{1},A_{2},\dots,A_{n}\}\) 中的一部分,称 A 为属性列或属性组,\(t[A]=(t[A_{i1}],t[A_{i2}],\dots,t[A_{ik}])\) 表示元组 t 案子属性列 A 上诸分量的集合。\(\overline{A}\) 则表示\(\{A_{1},A_{2},\dots,A_{n}\}\) 中去掉\(\{A_{i1},A_{i2},\dots,A_{ik}\}\) 后剩余的属性组

  • R 为 n 目关系,S 为 m 目关系,\(t_r\in R,t_s \in S,\overset{\frown}{t_rt_s}\) 称为元组的连接。它是一个 n+m 列的元组,前 n 个分量为 R 中的一个 n 元组,后 m 个分量为 S 中的一个 m 元组

  • 给定一个关系 R(X, Z),X 和 Z 为属性组。当t[X]=x 时,x 在R 中的象集(Images Set)为:\(Z_x={t[Z]|t \in R,t[X]=x}\),它表示 R 中在属性组 X 上值为 x 的诸元组在 Z 上分量的集合。

选择 \(\sigma_F(R)=\{t|t\in R\ \land F(t) = true\}\),F 是选择条件,一个逻辑表达式

投影 \(\pi_A(R) = |t[A]|t\in R|\),从 R 中选择出若干属性列组成新的关系,A 为 R 中的属性列(会去掉重复行)

连接 \(R \Join_{A\theta B} S=|\overset{\frown}{t_rt_s}|t_r\in R\land t_s\in R\land t_r[A]\theta t_s[B]|\),从两个关系的笛卡尔积中选取属性满足一定条件的元组。 等值连接:θ 为 “=” 自然连接:要求两个关系中进行比较的分量必须是相同的属性组,并去掉重复列 外连接:自然连接中,舍弃的元组也保存在关系中,其他属性上填上 NULL 左外连接:只把左边关系 R 中舍弃的元素保留 右外连接:只把右边关系 S 中舍弃的元素保留

除运算 给定关系 R(X, Y) 和 S(Y, Z),其中 X, Y, Z 为属性组,R 中的 Y 与 S 中的 Y 可以有不同的属性名,但必须出自相同的域集。R 与 S 的除运算得到一个新的关系 P(X),P 是 R 中满足下列条件的元组在 X 属性列上的投影:R 中元组在 X 上分量值 x 的象集 Yx 包含 S 在 Y 上投影的集合。记作: \(R\div S=\{t_r[X]|t_r\in R \land \Pi_Y(S)\subseteq Y_x\}\),Yx:x 在 R 中的象集,x=tr[X]。

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×