@@ -25,16 +25,18 @@ math: true
25
25
- $r$指代任意一个$R$的实例(即该抽象关系模式的一个具体关系模型实例)
26
26
- $X$和$Y$分别是关系模式$R$中包含的属性(数据表$r$的列)的任意一种子集
27
27
- $t_1$和$t_2$是关系模型$r$中的任意两个元组(数据表$r$的行)
28
- - 若$t_1[ X] =T_2 [ X] $可以推出$t_1[ Y] =T_2 [ Y] $,则说明$X$和$Y$间具有某种联系,每一组这样的属性子集间的联系都称作$R$的一种** 函数依赖** (Functional Dependency),此处记作$X\rightarrow Y$,注意该联系** 反向不一定成立**
28
+ - 若$t_1[ X] =t_2 [ X] $可以推出$t_1[ Y] =t_2 [ Y] $,则说明$X$和$Y$间具有某种联系,每一组这样的属性子集间的联系都称作$R$的一种** 函数依赖** (Functional Dependency),此处记作$X\rightarrow Y$,注意该联系** 反向不一定成立**
29
29
30
30
![ 函数依赖举例.png] ( /resources/数据库系统/函数依赖举例.png )
31
31
32
32
### 1.2 阿姆斯特朗公理
33
33
34
- > 阿姆斯特朗公理(Armstrong Axioms)是用于推导函数依赖的一组基本推理规则,其中有三条最基本的规则,其余规则均可由这三者推导得出;关系模式$R$的属性集合为$U$,$X,Y,Z,W$等均为$U$的子集,用$F$指代$R(U)$的 ** 所有函数依赖的集合 **
34
+ > 阿姆斯特朗公理(Armstrong Axioms)是用于推导函数依赖的一组基本推理规则,其中有三条最基本的规则,其余规则均可由这三者推导得出
35
35
36
36
#### 1.2.1 基本规则
37
37
- 自反律(Reflectivity):若属性子集$Y$是$X$的子集,则二者组成一对函数依赖$X\rightarrow Y$
38
+ - 此时称$X\rightarrow Y$为** 平凡函数依赖** (Trivial FD)
39
+ - 若不满足$Y\subseteq X$,则称$X\rightarrow Y$为** 非平凡函数依赖** (Non-Trivial FD)
38
40
39
41
$$ Y\subseteq X\Rightarrow X\rightarrow Y $$
40
42
73
75
\end{aligned}
74
76
$$
75
77
76
- #### 1.2.3 平凡函数依赖
77
- - 对于函数依赖$X\rightarrow Y$
78
- - 若满足$Y\subseteq X$,则称$X\rightarrow Y$为** 平凡函数依赖** (Trivial Functional Dependency),因为由于阿姆斯特朗公理中的自反律,$Y\subseteq X$是显而易见的
79
- - 若不满足,则称$X\rightarrow Y$为** 非平凡函数依赖** (Non-Trivial Functional Dependency)
80
-
81
- #### 1.2.4 候选键严格定义
78
+ #### 1.2.3 候选键严格定义
82
79
- 候选键是更严格的超键(关系中某个属性或属性组的值能** 唯一标识一个元组** ,则该属性或属性组称为超键),若关系中某个超键在** 去掉任一属性后不再成为超键** ,则其称为候选键
83
80
- 关系模式$R$的属性集合为$U$,$K$是$U$的一个子集,若$K$满足$K\rightarrow U$,且不存在一个$K'\subset K$能使得$K'\rightarrow U$,则$K$就是$R$的一个候选键
84
81
85
82
![ 候选键的定义.png] ( /resources/数据库系统/候选键的定义.png )
86
83
87
84
### 1.3 逻辑蕴含与两类闭包
88
85
86
+ > 关系模式$R$的属性集合为$U$,$X,Y$等代数表示$U$的子集,$F$表示$R(U)$** 所有函数依赖的集合**
87
+
89
88
#### 1.3.1 逻辑蕴含的函数
90
89
- 若函数依赖集$F$中** 逻辑蕴含** (Logical Implication)$X\rightarrow Y$,则根据$F$中的函数依赖,能够推导出函数依赖$X\rightarrow Y$,这记作
91
90
@@ -94,7 +93,7 @@ $$F\models X\rightarrow Y$$
94
93
![ 函数依赖集的逻辑蕴含实例.png] ( /resources/数据库系统/函数依赖集的逻辑蕴含实例.png )
95
94
96
95
#### 1.3.2 函数依赖集的闭包
97
- - 关系模式$R$的函数依赖集$F$的** 闭包** $F+$指代包含$F$所** 逻辑蕴含的所有函数依赖** 的集合(离散数学中关系$R$的闭包$S$指的是在$R$的基础上新增几个元素组成新关系$S$,使得$S$是能够满足某种性质$P$的最小的关系,注意与此处的函数依赖闭包进行区分理解 )
96
+ - 关系模式$R$的函数依赖集$F$的** 闭包** $F+$指代包含$F$所** 逻辑蕴含的所有函数依赖** 的集合(离散数学中关系$R$的闭包$S$指的是在$R$的基础上新增几个元素组成新关系$S$,使得$S$是能够满足某种性质$P$的最小的关系,注意与此处的函数依赖闭包进行对比理解 )
98
97
99
98
![ 函数依赖闭包的示例.png] ( /resources/数据库系统/函数依赖闭包的示例.png )
100
99
@@ -319,7 +318,7 @@ $$r=\pi_{R_1}(r)\Join\pi_{R_2}(r)...\Join\pi_{R_n}(r)$$
319
318
#### 4.5.2 模式分解
320
319
- 当关系模式$R$不满足BCNF时,应当将其分解为满足BCNF的子模式,以下是通用的算法
321
320
- 要注意该分解过程中只能保证无损,** 而无法保证全部函数依赖关系的保有** (而前文提到的分解为符合2NF/3NF的子模式,是能同时保证无损和依赖保有的)
322
- - 因为BCNF规定函数依赖的左侧不能是非超键,故分解过程中会将那些** 左侧为非超键的函数依赖拆开,导致寒素依赖被破坏 **
321
+ - 因为BCNF规定函数依赖的左侧不能是非超键,故分解过程中会将那些** 左侧为非超键的函数依赖拆开,导致函数依赖被破坏 **
323
322
324
323
![ BCNF范式的示例P2.png] ( /resources/数据库系统/BCNF范式的示例P2.png )
325
324
0 commit comments