关系模型中的基本术语
关系数据库系统是支持关系模型的数据库系统。有关关系模型的的一些基本术语如下:
- 关系:一个关系就是一张二维表,每个关系有一个关系名
- 元组:表中的一行即为一个元组,对应存储文件中的一个记录值
- 属性:表中的列称为属性,每一列有一个属性名,属性值相当于记录中的数据项或者字段值
- 域:属性的取值范围,即不同元组对同一个属性的值所限定的范围
- 关系模式:对关系的描述称为关系模式,由关系名和其属性集合构成,关系模式的格式为:
关系名(属性名 1,···,属性名 n)
通常一个关系模式对应一个关系文件的结果
- 候选码 (候选键):属性或属性组合,其值能够唯一地标识一个元组
- 主码 (主键):在一个关系中可能有多个候选码,从中选择一个作为主码
- 主属性:包含在任何候选码中的属性称为主属性,不包含在任何候选码中的属性称为非主属性
- 外码 (外键):如果一个关系中的属性或属性组并非该关系的码,但他们是另外一个关系的码,则称其为该关系的外码
- 全码:关系模式的所有属性组是这个关系模式的候选码,称为全码
- 超码 (超键):一个包含码的属性集称为超码
关系模型的定义
关系的描述称为关系模式,他可以形式化地表示为:R(U, D, dom, F)
其中 R 为关系名,U 为组成该关系的属性名集合,D 为属性组 U 中属性所来自的域,dom 为属性向域的映像集合,F 为属性间数据的依赖关系集合
通常简记为 R(U) 或 R(A1, A2, ···),其中 R 为关系名,U 为属性名集合,A1、··· 为个属性名
关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成
关系数据结构
关系模型中数据的逻辑关系是一张二维表格
关系操作集合
关系模型给出了关系操作的能力
常见的关系操作有:选择、投影、连接、除、并、交、差等查询操作和增加、删除操作等
关系完整性约束
关系模型中的三个完整性规则如下:
- 实体完整性:关系中主码的值不能为空或部分为空,也就是说,主码中属性即主属性不能取空值
- 参照完整性:如果关系 R2 的外码 X 与关系 R1 的主码相对应 (基本关系 R1 和 R2 不一定是不同的关系,即它们可以是同一个关系),则外码 X 的每一个值必须在关系 R1 中主码的值中找到,或者为空值
- 用户定义的完整性:指用户对某一具体数据指定的约束条件进行检验
关系代数运算符
运算符 | 符号 | 含义 |
---|---|---|
集合运算符 | ∪ – ∩ × |
并 差 交 笛卡尔积 |
专门的关系运算符 | σ π ⋈ ÷ |
选择 投影 连接 除 |
比较运算符 | > ≥ < ≤ = ≠ |
大于 大于等于 小于 小于等于 等于 不等于 |
逻辑运算符 | ¬ ∧ ∨ |
非 与 或 |
传统的集合运算
专门的关系运算符
- 连接
连接有 θ 连接、等值连接与自然连接
- θ 连接:连接条件不为等于
- 等值连接:连接条件为等于
- 自然连接:除去重复属性的等值连接。最常用的连接运算
- 投影
投影运算是从关系的垂直方向进行运算,在关系 R 中选出若干属性列 A 组成新的关系,记作 πA(R)
- 选择
选择运算是从关系的水平方向进行运算,是从关系 R 中选择满足给定条件的元组,记作 σF(R)
- 外连接
外连接运算是连接运算的扩展,可以处理由于连接运算而缺失的信息
- 左外连接:取出左侧关系中所有与右侧关系中任一元组都不匹配的元组,用空值 null 填充所有来自右侧关系的属性
- 有外连接:取出右侧关系中所有与左侧关系中任一元组都不匹配的元组,用空值 null 填充所有来自左侧关系的属性
- 全外连接:完成左外连接和右外连接的操作
- 除法
符号转 SQL 语言
关系 R:
A | B | C |
---|---|---|
1 | 2 | 3 |
4 | 5 | 6 |
7 | 8 | 9 |
投影转 SQL 语言
π?(?)
1
select ? from ?
πA, B, C(R) 或者 π1, 2, 3(R)
1
select A, B, C from R
注:SQL 语言不支持列 (属性) 的序号
选择转 SQL 语言
π?(σ?(?))
1
select ? from ? where ?
πA, B, C(σB >= ‘5’(R)) 或者 π1, 2, 3(σ2 >= ‘5’(R))
1
2
3
select A, B, C from R where B >= '5'
# 或者
select A, B, C from R where B >= 5
笛卡尔积转 SQL 语言
πR.A, R.B, R.C, S.A, S.B, S.D(R×S)
1
2
3
4
select R.A, R.B, R.C, S.A, S.B, S.D
from R, S
# 升序排列
order by R.A asc
自然连接转 SQL 语言
关系 R(A, B, C) 与 S(B, C, D)
πR.A, R.B, R.C, S.D(σR.B = S.B ∩ R.C = S.C(R×S))
1
2
3
select R.A, R.B, R.C, S.D
from R, S
where R.B = S.B and R.C = S.C