DBMS笔记 03 关系数据理论
关系数据理论以关系作为笛卡尔积的子集,定义了度、基数、候选码等基本概念,并通过关系代数操作(σ、π、∪、−、×、⨝、÷)对数据进行形式化处理。 这些操作与 SQL 查询一一对应,是理解数据库查询语言与优化机制的理论基础。
DBMS笔记 03 关系数据理论
第三章 关系数据理论
1. 关系数据结构的形式化定义
- 关系:笛卡尔积的子集。
- 域(Domain):属性的取值范围。
- 笛卡尔积:若 D1, D2, …, Dn 为 n 个域,笛卡尔积 D1×D2×…×Dn 的元素称为 n 元组。
- 关系模式:形式化描述,记作 R(U, D, Dom, F)。
- 度(Degree):关系中属性的个数。
- 基数(Cardinality):关系中元组的个数。
举例:学生表 Student(Sno, Name, Age, Sex)
- 度 = 4 (四个属性)
- 基数 = n (多少行记录)
2. 基本术语
- 元组(Tuple):一行。
- 分量(Component):元组中的单个属性值(单元格)。
- 属性(Attribute):一列。
- 候选码(Candidate Key):能唯一标识元组的最小属性集。
- 主码(Primary Key):候选码中选定的一个。
- 全码(All-key):所有属性都是码。
注:候选码的每个属性均为主属性;非候选码中的属性称为非主属性。
3. 关系操作
关系代数操作可分为两类:
(1) 基本操作
- 选择(Select):σ 条件 (R)
- 从关系 R 中选取满足条件的元组。
- 类似 SQL 的
WHERE。 - 符号:σ(sigma)。
- 投影(Project):π 属性 (R)
- 从关系 R 中抽取若干列,去除重复。
- 类似 SQL 的
SELECT column。 - 符号:π(pi)。
- 并(Union):R ∪ S
- 要求 R 和 S 的模式相同。
- 输出同时在 R 或 S 的元组。
- 差(Difference):R − S
- 要求 R 和 S 的模式相同。
- 输出在 R 中但不在 S 的元组。
- 笛卡尔积(Cartesian Product):R × S
- 输出 R 与 S 所有元组的组合。
- 度 = R 的度 + S 的度。
- 连接(Join):R ⨝ S
- 按条件将两个关系连接。
- 特殊形式:
- 自然连接(同名属性自动匹配)
- 等值连接(属性相等条件)
- 外连接(Left/Right Outer Join,保留一边的所有元组)。
- 除法(Division):R ÷ S
- 查询“在 R 中和 S 所有值都匹配的元组”。
- 常用于“选修所有课程的学生”。
(2) 扩展
- 交(Intersection):R ∩ S
- 广义笛卡尔积:更复杂的连接。
- 赋值(Assignment):给查询结果起名字。
4. 关系操作与 SQL 的对应
- 选择 σ → SQL 的
WHERE - 投影 π → SQL 的
SELECT - 并 ∪ → SQL 的
UNION - 差 − → SQL 的
EXCEPT或MINUS - 笛卡尔积 × → SQL 的
FROM R, S - 连接 ⨝ → SQL 的
JOIN - 除 ÷ → SQL 没有直接语法,一般用
NOT EXISTS或子查询实现
5. 关系代数运算的性质
- 交换律:R ∪ S = S ∪ R
- 结合律:R ∪ (S ∪ T) = (R ∪ S) ∪ T
- 投影选择可交换:π(σ(R)) = σ(π(R)) (条件中只涉及投影属性时)
- 笛卡尔积结合性: (R × S) × T = R × (S × T)
6. 本章重点
- 关系模式的度 = 属性个数,基数 = 元组个数。
- 属性名必须唯一,元组中属性值必须来自域,分量不可再分。
- 候选码:唯一且最小;全码:所有属性一起是候选码。
- 基本操作必须掌握其符号:σ、π、∪、−、×、⨝、÷。
- 外连接要区分:
- 左外连接:保留左边全部元组。
- 右外连接:保留右边全部元组。
- SQL 对应:σ→WHERE,π→SELECT,∪→UNION,−→EXCEPT,×→FROM,⨝→JOIN,÷→复杂子查询。
极简速记
- 度=列数,基数=行数
- 行=元组,列=属性,单元格=分量
- 候选码=唯一最小属性集,全码=所有属性
- 操作口诀:选投并差积,交连除
- 符号:σ 选择,π 投影,∪ 并,− 差,× 笛卡尔积,⨝ 连接,÷ 除
- 外连接:左保左,右保右
- SQL 对应:σ→WHERE,π→SELECT,∪→UNION,−→EXCEPT,⨝→JOIN
本文由作者按照 CC BY-NC 4.0. 进行授权
...

Comments
评论区