1. 数据库系统的结构抽象
1.1 三级模式(三级视图)
- External Schema —-(External)View 某一用户能看到与处理的数据的结构描述
- (Conceptual) Schema —- Conceptual View 从全局角度理解/管理的数据的结构描述, 含相应的关联约束。体现在数据之间的内在本质联系
- Internal Schema —- Internal View 存储在介质上的数据的结构描述,含存储路径、存储方式 、索引方式等
1.2 两层映像
- E-C Mapping:External Schema-Conceptual Schema Mapping 将外模式映射为概念模式,从而支持实现数据概念视图向外部视图的转换,便于用户观察和使用
- C-I Mapping:Conceptual Schema-Internal Schema Mapping 将概念模式映射为内模式,从而支持实现数据概念视图向内部视图的转换,便于计算机进行存储和处理
1.3 两个独立性
- 逻辑数据独立性 当概念模式变化时,可以不改变外部模式(只需改变E-C Mapping),从而无需 改变应用程序
- 物理数据独立性 当内部模式变化时,可以不改变概念模式(只需改变C-I Mapping) ,从而不改 变外部模式
1.4 数据模型
- 数据模型
- 规定模式统一描述方式的模型,包括:数据结构、操作和约束
- 数据模型是对模式本身结构的抽象,模式是对数据本身结构形式的抽象
- 三大经典数据模型
- 关系模型:表的形式组织数据
- 层次模型:树的形式组织数据
- 网状模型:图的形式组织数据
2. 关系模型的基本概念
2.1 关系模型的三个要素
- 基本结构
形象地说,一个关系(relation)就是一个Table Relation/Table
- 基本操作
基本的
- 并$\cup$
- 差:$-$
- 广义积:$\times$
- 选择: $\delta$
- 投影:$\pi$
扩展的
- 交: $\cap$
- 连接: $\Join$
- 除:$\div$
- 完整性约束 实体完整性、参照完整性和用户自定义的完整性
2.2 什么是关系
关系 笛卡尔积中具有某一方面意义的那些元组被称作一个关系
笛卡尔积的数学描述: $$一组域D_1, D_2, … , D_n的笛卡尔积为: D_1 \times D_2 \times \cdots \times D_n = \lbrace (d_1, d_2, \cdots, d_n)| d_i\in D_i,\ i=1, \cdots , n \rbrace$$
2.3 关系模式与关系
- 同一关系模式下,可有很多的关系
- 关系模式是关系的结构, 关系是关系模式在某一时刻的数据
- 关系模式是稳定的;而关系是某一时刻的值,是随时间可能变化的
2.4 关系与表的异同
大部分方面都是相同的,但关系中任意两个元组不能完全相同,而表可能并不完全遵守此特性
2.5 关系的特性
- 关系的任意两个元组不能完全相同
- 属性不可再分特性:又被称为关系第一范式
2.6 关系上的一些重要概念
候选码/候选键 关系中的一个属性组,其值能唯一标识一个元组,若从该属性组中去掉任何一个属性,它就不具有这一性质了,这样的属性组称作候选码。
主码/主键 当有多个候选码时,可以选定一个作为主码。
主属性和非主属性 包含在任何一个候选码中的属性被称作主属性,而其他属性被称作非主属性
最简单的,候选码只包含一个属性 最极端的,所有属性构成这个关系的候选码,称为全码(All-Key)
外码/外键 关系R中的一个属性组,它不是R的候选码,但它与另一个关系S的候选 码相对应,则称这个属性组为R的外码或外键。
两个关系通常是靠外码连接起来的。
2.3 关系模型的完整性
实体完整性
关系的主码中的属性值不能为空值;
空值:不知道或无意义的值
意义:关系中的元组对应到现实世界相互之间可区分的一个个个 体,这些个体是通过主码来唯一标识的;若主码为空,则出现不可标识 的个体,这是不容许的参照完整性(对外码而言)
如果关系R1的外码Fk与关系R2的主 码Pk相对应,则R1中的每一个元组的 Fk值或者等于R2 中某个元组的Pk 值, 或者为空值用户自定义完整性
用户针对具体的应用环境定义的完整性约束条件
- 实体完整性和参照完整性由DBMS系统自动支持
- DBMS系统通常提供了如下机制:
- (1)它使用户可以自行定义有关的完整性约束条件
- (2)当有更新操作发生时,DBMS将自动按照完整性约束条件检验更新操作的正确性,即是否符合用户自定义的完整性
3. 关系代数
3.1 关系代数操作
集合操作和纯关系操作
3.2 关系代数基本操作
3.2.1 关系代数运算的约束
- 并相容性
关系R与关系S存在相容性,当且仅当:
(1) 关系R和关系S的属性数目必须相同;
(2) 对于任意i,关系R的第i个属性的域必须和关系S的第i个属性的域相同
3.2.2 关系代数的操作
- 并$\vee$(要满足并相容性)
数学描述: $$R\vee S= \lbrace t|t\in R \vee t \in S \rbrace$$ - 差$-$(要满足并相容性)
数学描述: $$R-S=\lbrace t| t \in R \land t \notin S \rbrace$$ - 广义笛卡尔积操作
数学描述: $$关系R< a_1, a_2, \cdots , a_n>, 关系S<b_1, b_2, \cdots , b_n>, 则 \ R \times S = \lbrace <a_1, a_2, \cdots , a_n, b_1, b_2, \cdots , b_n> | <a_1, a_2, \cdots , a_n> \in R \land <b_1, b_2, \cdots , b_n> \in S \rbrace$$ - 选择操作
数学描述: $$\delta _{con}(R)=\lbrace t | t \in R \land con(t) = true \rbrace$$ - 投影
数学描述: $$\Pi_{a_{i1}, a_{i2}, \cdots, a_{ik}}(R) = \lbrace <t[A_{i1}],t[A_{i2}], \cdots , t[A_{ik}]> | t \in R \rbrace$$ **示例**
3.3 关系代数扩展操作
交
数学描述:
$$R \cap S= \lbrace t|t\in R \land t \in S \rbrace$$$\theta$-连接
第一步:对两个表进行广义笛卡尔积
第二步:从广义笛卡尔积中选取出符合条件的元组
数学描述: $$R \underset{A \theta B} \Join S = \delta_{t[A] \theta s[B]}(R\times B)$$
其中$\theta$是比较运算符例子
查询至少98030101号同学和98040202号同学学过的所有课程号
数学描述: $$\pi_{SC.C}(\delta_{SC.S=“98030101”\land SC1.S=“98040202”}(SC \underset{SC.C=SC1.C} \Join \rho_{SC1} (SC)) $$
其中$\rho$代表更名操作等值连接
给定关系R和关系S, R与S的等值连接运算结果也是一个关系, 记作$R \underset{A=B} \Join S$,它由关系R和关系S的笛卡尔积中选取R中属性A与S中属性 B上值相等的元组所构成。
数学描述:
$$R \underset{A=B}\Join S = \delta_{t[A]=s[B]}(R\times S)$$ 当$\theta$-连接中运算符为“=”时,就是等值连接,等值连接是$\theta$-连接的一个特例;自然连接
给定关系R和关系S, R与S的自然连接运算结果也是一个关系,记作$R \Join S$ ,它由关系R和关系S的笛卡尔积中选取相同属性组B上值相等的元 组所构成。
数学描述: $$R \Join S = \delta_{t[B]=s[B]}(R\times S)$$
是一种特殊的等值连接
要求关系R和S必须有相同的属性组B
3.4 关系代数的复杂操作
除操作$\div$
前提条件
若$R(A_1, A_2, \cdots,A_n)$为n度关系,关系$S(B_1, B_2, \cdots, B_n)$为m度关系,只有当$\lbrace B_1, B_2, \cdots, B_n\rbrace \subseteq \lbrace A_1, A_2, \cdots,A_n \rbrace $即B是A的真子集,$m<n$时才可进行$R\div S$运算
定义
设关系$R<a_1, \cdots, a_n>$和关系$S<b_1, \cdots, b_m>$,那么$R\div S$结果为关系为元组$<c_1, \cdots, c_k>$的集合,元组$<c_1, \cdots, c_k>$满足下述条件:它与S中每一个元组$<b_1, \cdots, b_m>$组合形成的一个新元组都是R中的某一个元组$<a_1, \cdots, a_n>$
示例- 外连接(Outer-Join)
定义
两个关系R与S进行连接时,如果关系R(或S)中的元组在S(或R)中找不到相匹配的元组,则为了避免该元组信息丢失,从而将该元组与S(或R)中 假定存在的全为空值的元组形成连接,放置在结果关系中,这种连接称之为外连接(Outer Join)。
外连接 = 自然连接 (或$\theta$连接) + 失配的元组(与全空元组形成的连接)
外连接的形式
- 左外连接 = 自然连接(或$\theta$连接) + 左侧表中失配的元组。 记作$⟕$
- 右外连接 = 自然连接(或$\theta$连接) + 右侧表中失配的元组。 记作 $⟖$
- 全外连接 = 自然连接(或$\theta$连接) + 两侧表中失配的元组。 记作$⟗$
- 外连接(Outer-Join)
4. 关系演算
- 关系元组演算
以元组变量作为谓词变量的基本对象
- 关系域演算
以域变量作为谓词变量的基本对象
4.1 关系元组演算
基本形式
$$\lbrace t | P(t)\rbrace$$
其中,$P(t)$可以是如下三种形式之一的原子公式:
- $t\in R$
- $s[A] \theta c$
其中$\theta$为比较运算符$<, \le, \ge, >, \ne$
例如$\lbrace t| t\in R \land t[Sage]\le 19 \land t[Sname] = ‘Bob’\rbrace$ - $s[A] \theta u[B]$
s[A]与u[B]为元组分量,A和B分别是某些关系的属性,他们之间满足比较关系$\theta$
例如:检索除年龄不是最小的所有同学
$\lbrace t|t\in Student \land \exist (u \in Student)(t[Sage]>u[Sage])\rbrace$
4.2 关系域演算
…
关系数据库中的范式
- 第一范式(1NF)
关系的每一个分量都是不可分的数据项 - 第二范式(2NF)
若$R\in 1NF$,且每一个非主属性完全函数依赖于任何一个候选码,则$R\in 2NF$ - 第三范式(3NF)
设关系模式$R<U,F>\in 1NF$, 若R中不存在这样的码X,属性组Y及非主属性$Z(Z\nsubseteq Y)$,使得$X\rightarrow Y, Y \rightarrow Z$成立,$Y\nrightarrow X$, 则称$R<U,F>\in 3NF$。用人话说就是,若$R\in 3NF$,则每一个非主属性既不传递依赖于码,也不部分依赖于码。 - BC范式
关系模式$R<U,F>\in1NF$,若$X\rightarrow Y$且$Y\nsubseteq X$时必含有码,则$R<U,F>\in BCNF$。也就是说,关系模式$R<U,F>$中,若每一个决定因素都包含码,则$R<U,F>\in BCNF$
一个满足BCNF的关系模式有:- 所有非主属性对每一个码都是完全函数依赖
- 所有主属性对每一个不包含它的码也是完全函数依赖
- 没有任何属性完全函数依赖于非码的任何一组属性