本系列为《数据库系统原理与应用(刘先锋等著)》的读书笔记。
一,问题的提出
1,关系模式
关系模式
定义:一个关系模式是一个系统,它是有一个五元组 R ( U , D , D O M , I , F ) R(U, D, DOM, I, F) R(U,D,DOM,I,F)组成,其中, R R R为关系名, U U U是 R R R的一组属性集合 { A 1 , A 2 , A 3 , … , A n } \{ A_1,A_2,A_3,\dots,A_n \} {
A1,A2,A3,…,An}, D D D是 U U U中属性的域集合 { D 1 , D 2 , D 3 , … , D n } \{ D_1,D_2,D_3,\dots,D_n \} {
D1,D2,D3,…,Dn}, D O M DOM DOM为属性 U U U到域 D D D的映射, I I I为完整性约束集合, F F F为属性间的函数依赖关系。
2,关系
1)关系
定义:在关系模式 R ( U , D , D O M , I , F ) R( U, D, DOM, I, F ) R(U,D,DOM,I,F)中,当且仅当 U U U上的一个关系 r r r足 F F F时, r r r称为关系模式 R R R的一个关系,记作 R ( U ) R(U) R(U)或 R ( U , F ) R(U,F) R(U,F)。
2)关系数据库对关系有一个最起码的要求: 每个属性必须是不可分割的数据项。满足列这个条件的关系模式就属于第一范式(1NF)
。
3)数据依赖
:通过一个关系中属性间值的相等与否以体现数据间的相互关系,是现实世界属性间相互联系的抽象,是数据内在的性质,是语义的体现。主要有:函数依赖FD
,多值依赖MVD
。
3,插入异常:表示数据插入时出现问题,即无法在缺少另一个实体实例或者关系实例的情况下表示实体或者实体的信息。
4,删除异常:删除表的某一行来反映某个实体实例或者关系实例消失,会导致丢失另一个不同实例实体或者关系实例的信息。
5,更新异常:更改表所对应的某个实体实例或者关系实例的单个属性,会将多行的相关信息全部更新。
二,关系模式的函数依赖
1,函数依赖(FD
)
1)函数依赖(FD)
定义:设 R ( U ) R(U) R(U)是属性集 U U U上的关系模式, X X X, Y ⊆ U Y \subseteq U Y⊆U。若对 R ( U ) R(U) R(U)的任意一个可能的关系 r r r, r r r中有任意两个元组 t 1 t_1 t1和 t 2 t_2 t2,如果 t 1 [ X ] = t 2 [ X ] t_1 [ X ] = t_2 [ X ] t1[X]=t2[X],有 t 1 [ Y ] = t 2 [ Y ] t_1[ Y ] = t_2[ Y ] t1[Y]=t2[Y],则称 X X X函数确定 Y Y Y,或者说 Y Y Y函数依赖 X X X,记为 X → Y X \rightarrow Y X→Y。
(1)如果 X → Y X \rightarrow Y X→Y,但是 Y ⊈ X Y \nsubseteq X Y⊈X,则称 X → Y X \rightarrow Y X→Y是
非平凡的函数依赖
;
(2)如果 X → Y X \rightarrow Y X→Y,但是 Y ⊆ X Y \subseteq X Y⊆X,则称 X → Y X \rightarrow Y X→Y是平凡的函数依赖
;
(3)如果 X → Y X \rightarrow Y X→Y,则 X X X为这个函数依赖的决定属性集(Determinant)
;
(4)如果 X → Y X \rightarrow Y X→Y, Y → X Y \rightarrow X Y→X,则记为 X ⟷ Y X \longleftrightarrow Y X⟷Y;
(5) 如果 Y Y Y不函数依赖于 X X X,则记为 X ↛ Y X \nrightarrow Y X↛Y。
2)完全函数依赖
和部分函数依赖
设 R ( U ) R(U) R(U)是属性集 U U U上的关系模式,如果 X → Y X \rightarrow Y X→Y,并且对于 X X X的任何一个真子集 Z Z Z,都有 Z ↛ Y Z \nrightarrow Y Z↛Y,则称 Y Y Y完全依赖于 X X X,记 X → f Y X \stackrel{f}{\rightarrow} Y X→fY;若 X → Y X \rightarrow Y X→Y,但 Y Y Y不完全函数依赖于 X X X,则称 Y Y Y部分函数依赖于 X X X,记 X → p Y X \stackrel{p}{\rightarrow} Y X→pY。
3)传递函数依赖
设 R ( U ) R(U) R(U)是属性集 U U U上的关系模式, X ⊆ U X \subseteq U X⊆U, Y ⊆ U Y \subseteq U Y⊆U, Z ⊆ U Z \subseteq U Z⊆U, Z − X Z - X Z−X, Z − Y Z - Y Z−Y, Y − X Y - X Y−X均非空,如果 X → Y ( Y ⊈ X ) X \rightarrow Y(Y \nsubseteq X) X→Y(Y⊈X), Y ↛ X Y \nrightarrow X Y↛X, Y → Z Y \rightarrow Z Y→Z,则称 Z Z Z传递依赖于 X X X。
2,键
1)
候选键
:设 R ( U ) R(U) R(U)是属性集 U U U上的关系模式, K ⊆ U K \subseteq U K⊆U,如果 K → f U K \stackrel{f}{\rightarrow} U K→fU,则 K K K为 R R R的候选键
。
候选键包含了关系模式的所有属性,称为全键
。
2)主属性
:包含在任意一个候选键中的属性称为主属性
。
3)非主属性
:不包含在任意候选键中的属性称为非主属性
或非键属性
。
4)外键
:在关系模式 R R R中属性或者属性组 X X X并非 R R R的候选键,但 X X X是另一个关系模式的候选键,则称 X X X是 R R R的外部键
,也称外键
。
3,函数依赖的逻辑蕴含
1)阿姆斯特朗公理体系
(1)包含规则
:设 R ( U ) R(U) R(U)是属性集 U U U上的关系模式, X ⊆ U X \subseteq U X⊆U, Y ⊆ U Y \subseteq U Y⊆U,且 Y ⊆ X Y \subseteq X Y⊆X,则 X → Y X \rightarrow Y X→Y。
(2)平凡依赖
:由包含规则得到的函数依赖都是平凡函数依赖。
(3)逻辑蕴含
:设 R ( U ) R(U) R(U)是属性集 U U U上的关系模式, F F F是 R R R上函数依赖集合,如果 R R R的任意关系实例 r r r使 F F F成立的,函数依赖 X → Y X \rightarrow Y X→Y均成立,则称 F F F逻辑蕴含 X → Y X \rightarrow Y X→Y。
(4)阿姆斯特朗公理
:设 R R R是一个具有属性集合 U U U的关系模式, F F F是 R R R的一个函数依赖集合, X ⊆ U X \subseteq U X⊆U, Y ⊆ U Y \subseteq U Y⊆U, Z ⊆ U Z \subseteq U Z⊆U。包含如下规则:
i)
包含规则
:又称自反律
,如果 Y ⊆ X ⊆ Z Y \subseteq X \subseteq Z Y⊆X⊆Z,则 X → Y X \rightarrow Y X→Y为 F F F所蕴含;
ii)传递规则
:如果 F F F蕴含 X → Y X \rightarrow Y X→Y, Y → Z Y \rightarrow Z Y→Z,则 X → Z X \rightarrow Z X→Z为 F F F所蕴含;
iii)增广规则
:如果 F F F蕴含 X → Y X \rightarrow Y X→Y,且 Z ⊆ U Z \subseteq U Z⊆U,则 X Z → Y Z XZ \rightarrow YZ XZ→YZ为 F F F所蕴含。
阿姆斯特朗公理
包含蕴含规则如下:
i)
合并规则
:如果 X → Y X \rightarrow Y X→Y, X → Z X \rightarrow Z X→Z,则 X → Y Z X \rightarrow YZ X→YZ;
ii)伪传递规则
:如果 X → Y X \rightarrow Y X→Y, W Y → Z WY \rightarrow Z WY→Z,则 W X → Z WX \rightarrow Z WX→Z;
iii)分解规则
:如果 X → Y X \rightarrow Y X→Y, Z ⊆ Y Z \subseteq Y Z⊆Y,则 X → Z X \rightarrow Z X→Z;
iv)集合累积规则
:如果 X → Y Z X \rightarrow YZ X→YZ且 Z → W Z \rightarrow W Z→W,则 X → Y Z W X \rightarrow YZW X→YZW。
【引理4-1
】 X → A 1 A 2 A 3 … A n X \rightarrow A_1A_2A_3 \dots A_n X→A1A2A3…An 成立的充分必要条件是 X → A i ( i = 1 , 2 , … , n ) X \rightarrow A_i(i=1,2,\dots,n) X→