关系模型¶
关系模型构成¶
关系模型是基于数学中的关系(relation)的概念
关系是由行和列组成的表(Table)
行(Row),记录了单个对象,即关系的元组(tuple)。元祖的个数是关系的基数。
对应的列(col)记录了其属性(attribute)。每个属性具有取值集合,即域(domain)。
关系中不允许出现重复的元组,为了辨识元组,需要使用码:
- 超码:可以唯一标识每个元组的一个或多个属性
- 候选码:本身为超码,任何真子集都不再是超码
- 主码:从候选码中被选来唯一标识关系中各元组
- 外码:当一个关系中的某个属性集合,与另一个关系的候选码匹 配,即可为外码
需要注意,关系的属性、元组无顺序
关系代数¶
关系代数是关系数据模型的正式理论语言,关系在关系代数下是封闭的
关系代数定义的操作可以从一个或多个关系得到另一个关系,而不改变原关系
注意,一个关系内的属性、元组不会重复
| 操作名 | 符号表达 | 效果 |
|---|---|---|
| 选择 | $\sigma_{predicate}(R) $ | 对关系R,取满足条件的元组为新关系 |
| 投影 | \(\Pi_{coln...}(R)\) | 对关系R,得到由R的一个垂直子集构成的新关系(去掉重复元组) |
| 集合并 | \(R \cup S\) | 两个并相容的关系R和S并,定义一个包含R和S中所有不同元组的新关系 |
| 集合差 | \(R - S\) | 两个并相容的关系的R和S差,定义了由所有属于R但不属于S的元组构成的新关系 |
| 集合交 | \(R \cap S\) | 两个并相容的关系R和S交,定义了由既属于R又属于S的元组组成的新关系 |
| 笛卡尔积 | \(R \times S\) | 关系R和S并联的新关系,使用关系名作为属性名的前缀,以确保属性唯一性 |
| 连接关系 | \(R\Join_{F}S\) | 对执行了笛卡尔积的新关系进行选择运算,即\(\sigma_F(R \times S)\) |
| 除法运算 | \(R \div S\) | 假设关系R定义在属性集合A上,关系S定义在属性集合B上,并且B ⊊ A ,定义 C=A-B 除法运算定义了属性集合为C的一个关系,其元组与S中每个元组的组合都能在R中找到匹配元组 |
(并相容:指两个关系拥有相同数量属性,且对应属性的域相同,但属性名可不同。一般可以使用投影使得两个关系并相容)
规范性理论¶
具体情况下,对关系模型的具体设计,一般采用规范化理论
定义¶
对于一个关系R,我们着重研究的是其属性名集合U下,属性间数据的依赖关系集合F
数据依赖,即值之间的相关性,关系中蕴含属性与属性之间的约束关系。
数据依赖分为两类:
-
函数依赖(FD):
对于R上的属性集X,Y,存在映射$X{\longrightarrow}Y $,则称为“Y函数依赖于X”(一般取Y不含于X,即非平凡的函数依赖)
若X的任一真子集X',都无法函数确定Y,则称为完全函数依赖,记为$X\overset{F}{\longrightarrow}Y \(;否则称为不完全函数依赖,记为\)X\overset{P}{\longrightarrow}Y $
如果有\(X{\longrightarrow}Y , Y{\longrightarrow}Z\),且X不函数依赖于Y,则称Z对X存在传递函数依赖
函数依赖需要X,Y的所有实例均满足;设计时可以强加约束以满足函数依赖
-
多值依赖(MVD):
对于X,Y和它们的补集Z(Z=U-X-Y),若任一一对(x, z)值,有一组Y的值仅取决于x,则存在多值依赖
此时称Y多值依赖于X,记作$X{\longrightarrow}{\longrightarrow}Y $(一般取Z ≠ ∅,即非平凡的多值依赖)
对于一个不好的关系模型,常出现的问题:
- 数据冗余:某属性依赖于其他属性,反复出现
- 更新异常:更新所有某重复数据时容易出错
- 插入/删除异常:某属性与其他属性有强依赖,或者为主属性,但存在一方不存在的情况
问题的根源在于模式的数据依赖设计
范式¶
依据关系模式的要求严苛程度,可以进一步分为多个范式,优化数据依赖的设计
将低范式通过模式分解可以转换为若干个高范式的集合,这种过程就叫规范化
以下逐一列出范式特点,高范式默认具有低范式的特点
-
第一范式:
所有属性都是不可分的基本数据项(关系模式基础要求)
不符合的案例如一格中含有多个值
-
第二范式:
每一个非主属性完全函数依赖于候选码(但可以传递依赖于候选码)
-
第三范式:
每一个非主属性不传递依赖于候选码
不符合的案例如(学号,部门,宿舍)
-
BC范式:每一个函数依赖X→Y,若Y∉X,则X含有候选码(若完全函数依赖,则为候选码)
不符合的案例如(学生,教师,课程),其中教师只教一门课程
-
第四范式:不允许有非平凡且非函数依赖的多值依赖
不符合的案例如(课程,教师,参考书籍),教师可以讲授多门课程,参考书可以供多门课程使用
需要注意的是,分解后的关系应当可以通过自然连接恢复为原来的关系,才能不丢失信息
同时,将函数依赖保留在同一数据库中,才能维持逻辑关系