第二章 关系数据库
典型商用数据库ORACLE
关系模型由以下组成:
- 关系数据结构:数据的表示(静态特性)
- 关系操作集合:基于关系运算
- 关系完整性约束:语义有效合理,允许定义
1 关系数据结构及形式化定义
1.1 关系
-
域
- 一组具有相同数据类型的值的集合
- 一个域允许的不同取值个数称为这个域的基数
-
笛卡尔积
-
关系
- 关系是笛卡尔积的有限子集
- 笛卡尔积不满足交换律,关系满足(每列附加一个属性名取消有序性)
- 关系是笛卡尔积的有限子集
1.1.1 候选码
某一属性组的值能唯一的标识一个元组,而其所有子集不能(是最小属性的集合),则称该属性组为候选码
- 主码
- 若一个关系有多个候选码,则选定其中一个为主码
- 主属性
- 候选码的所有属性称为主属性,不包含在任何候选码的属性称为非主属性
- 全码
- 关系模式的所有属性是这个关系模式的候选码
1.1.2 三种类型
- 基本关系(默认)
- 通常又称基本表
- 实际存在的表,是实际存储数据的逻辑表示
- 查询表
- 查询结果对应的表
- 视图表
- 由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据
1.1.3 基本关系的6条性质
- 列是同质的,每一列中的分量是同一类型的数据,来自同一个域
- 不同的列可出自同一个域
- 列的次序可以任意交换
- 任意两个元组的候选码不能取相同的值(候选码唯一标识一条元组)
- 行的次序可以任意交换
- 分量必须取原子值,即每一个分量必须是不可分的数据项(最基本)
- 规范化的关系简称为范式
1.2 关系模式
关系模式是对关系的描述
R ( U , D , D O M , F ) R(U, D, DOM, F) R(U,D,DOM,F)
- R: 关系名
- U: 组成该关系的属性名集合,如(学号,姓名。。。)
- D: U中属性所来自的域
- DOM: 属性向域的映像集合
- F: 属性间数据的依赖关系集合
关系是关系模式在某一时刻的状态或内容。
关系模式是静态的,稳定的,关系是动态的,随时间不断变化的,因为关系操作不断的更新着数据库中的数据
2 关系的完整性
关系的两个不变性:实体完整性,参照完整性
保证数据正确(数据库内数据间的相容性和正确性)
2.1 实体完整性
所有码不能取空值
2.2 参照完整性
外码或者取空值或者等于S中某个元组的主码值
外码:在所在的关系并不是码,但与其他关系有对应关系
- 外码属性可以为空:还未给外码赋值时
- 外码属性不可以为空:外码是主码的一部分,外码被用户定义不能为空
3 集合运算
t
∈
R
t \in R
t∈R :t是R的一个元组
R
(
A
1
,
A
2
,
.
.
.
,
A
n
)
R(A_{1}, A_{2}, ..., A_{n})
R(A1,A2,...,An) :
- t [ A i ] t[A_{i}] t[Ai] 元组t的一个分量
- t [ A ] t[A] t[A] 元组t的分量集合
集合运算:
- 并
- 交
- 差
- 笛卡尔积
4 关系运算
象集
Z
x
Z_{x}
Zx :R中属性组X上值为x的诸元组在Z上分量的集合
下表中,
Z
x
1
=
{
Z
1
,
Z
2
,
Z
3
}
Z_{x_{1}} = \{Z_{1}, Z_{2}, Z_{3}\}
Zx1={Z1,Z2,Z3}
x 1 x_{1} x1 | Z 1 Z_{1} Z1 |
---|---|
x 1 x_{1} x1 | Z 2 Z_{2} Z2 |
x 1 x_{1} x1 | Z 3 Z_{3} Z3 |
x 2 x_{2} x2 | Z 1 Z_{1} Z1 |
x 2 x_{2} x2 | Z 2 Z_{2} Z2 |
x 3 x_{3} x3 | Z 3 Z_{3} Z3 |
4.1 选择
σ F ( R ) = { t ∣ t ∈ R ∧ F ( t ) = ′ 真 ′ } \sigma_{F}(R) = \{ t\mid t \in R \wedge F(t)='真'\} σF(R)={t∣t∈R∧F(t)=′真′}
F表示选择条件,基本形式为
X
1
θ
Y
1
X_{1}\theta Y_{1}
X1θY1
θ
\theta
θ表示比较运算符,可以是
>
>
> ,
<
<
<等
实际上是从关系R中选取使逻辑表达式F为真的元组,是从行角度进行的运算
4.2 投影
Π A ( R ) = { t [ A ] ∣ t ∈ R } \Pi_{A}(R) = \{ t[A]\mid t \in R \} ΠA(R)={t[A]∣t∈R}
是从列角度进行的运算
投影之后不仅取消了原关系中的某些列,还可能取消某些元组,因为取消了某些属性列之后就可能出现重复行,应取消这些完全相同的行
4.3 连接
选取属性间满足一定条件的元组
R ⋈ A θ B S = { t r t s ^ ∣ t r ∈ R ∧ t s ∈ S ∧ t r [ A ] θ t s [ B ] } R\Join_{A \theta B}S = \{ \widehat{t_{r}t_{s}}\mid t_{r} \in R \wedge t_{s} \in S \wedge t_{r}[A]\theta t_{s}[B] \} R⋈AθBS={trts ∣tr∈R∧ts∈S∧tr[A]θts[B]}
A和B分别为R和S上列数相等且可比的属性组
θ \theta θ为“=”的连接运算称为等值连接
自然连接:特殊的等值连接,要求两个关系中进行比较的分量必须是同名的属性组,并且在结果中把重复的属性列去掉
同时从行和列的角度进行运算
4.4 除运算 ÷ \div ÷
蕴涵问题
选择元组,投影到属性