db_5 关系数据理论

问题提出

关系数据库的规范化理论:数据库逻辑设计的有力工具

  • 数据依赖
    • 一个关系内部属性值之间相互依赖又相互制约的关系
    • 通过属性间值的相等与否体现出的数据间相关联系
    • 数据内在性质、语义体现
    • 分类
      • 函数依赖
      • 多值依赖

规范化

函数依赖

  • 函数依赖是语义范畴的概念
    • 只能根据语义来确定,而不能形式化证明
  • 函数依赖是不随时间而变的
    • 若关系R具有函数依赖 ,R变 不变

概念

设R(U)是属性集U上的关系模式。X、Y是U的子集。r是R任意一个具体关系,t, s 是r中任意两个元组

如果t[X] = s[X], 则t[Y] = s[Y],(对于X的每个具体值,Y有唯一的值与之对应)

则称“X函数确定Y”或“Y函数依赖于X”,记作:

  • 平凡的函数依赖
  • 非平凡的函数依赖
  • 决定因素

    • 对于函数依赖 ,则 叫做决定因素
  • 不函数依赖

    • $X \nrightarrow Y$
  • $ X \to Y ,Y \to X,\text{则}X\leftarrow\rightarrow Y$

三种函数依赖

  • 完全函数依赖

    • $ X \to Y $,且对于任意 $ X $ 的真子集 $ X’ $,都有 $ X’ \not\to Y $,则称 $ X $ 对 $ Y $完全函数依赖,记作 $ X \xrightarrow{F} Y $
  • 部分函数依赖

    • $ X \to Y $,$Y$不完全依赖于$X$,记作
  • 传递函数依赖

    • $ X \to Y(Y\nsubseteq X) $,$ Y \to Z(Z\nsubseteq Y) $,且 $ Y \nrightarrow X $,则称 $ Z $ 对 $ X $ 传递函数依赖,记作 $ X \xrightarrow{t} Z $

      如果 ,那X、Y等价,就不是传递函数依赖,是一种直接的依赖

码(关系键的形式定义)

  • 候选码
    • 主码是任一候选码
    • 主码、候选码统称为码
    • $ K \xrightarrow{F} U $
    • 唯一性
    • 最小性
  • 超码
    • $ K \xrightarrow{P} U $
    • 候选码是最小的超码
  • 主属性
    • 包含在任何一个侯选码中的属性
  • 非主属性
    • 不包含在任何侯选码中的属性
  • 外部码
    • 关系模式R中属性或属性组X并非R的码,但X是另一个关系模式的码,则称X是R的外码

范式

如果一个关系满足某个指定的约束集,则称它属于某种特定的范式

在关系数据库中,都是规范化的关系

规范化

低一级范式的关系模式可以通过模式分解转换成若干个高一级范式的关系模式的集合

image-20241226142839443

1NF

一个关系只包含原子值这一约束

原子值即为二维表的每一行和列的交叉位置上总是精确地存在一个值,而不是值集

(没有表中套表)

满足“原子值”这一约束条件的关系称为规范化关系,简称范式

2NF

  • $R\in1NF$
  • 每个非主属性完全依赖于码

注意:

  • 如果关系R的全体属性都是R的主属性,那么$R\in 2NF$
  • 从1NF中消除非主属性对码的部分函数依赖,则可获得2NF关系
    • 方法:投影分解
  • 在2NF中,允许主属性部分函数依赖于码
    • 例: STC(S, T, C),S表示学生,T表示教师,C表示课程
    • 每位老师只教授一门课,每门课由若干教师教,某一学生选定某门课就确定了一个固定 的教师
    • T→C,(S,C)→T
    • (S,T),(S,C)为候选码
    • $(S,T)\xrightarrow{P}C$

3NF

  • $R\in2NF$
  • 每个非主属性都不传递依赖于R的任何码
  • 关系模式R< U , F >中,若不存在这样的码X, 属性组Y及非主属性Z(Z$\nsubseteq$Y),使得下式成立,X→Y , Y→Z , Y$\nrightarrow$X ,则称R$\in$3NF

image-20241226144535562

  • 如果关系R的全体属性都是R的主属性,那么$R\in 3NF$

投影分解

BCNF

  • $R\in1NF$

  • 如果对于R的每个函数依赖$X\to Y$,且$Y\nsubseteq X$时,X必含有码

  • 所有非主属性都完全函数依赖于每个候选码(2NF)
  • 所有主属性都完全函数依赖于每个不包含它的候选码
  • 没有任何属性完全函数依赖于非码的任何一组属性。

4NF

定义1:

  • R$\in$BCNF,不存在非平凡的非函数依赖的多值依赖
    • 当R中只存在函数依赖,则R$\in$4NF
    • 或当R中存在平凡的多值依赖时,R$\in$4NF

定义2:

  • 关系模式R< U , F > $\in$1NF,如果对于R的每个非平凡的多值依赖X→→Y(Y$\nsubseteq$X),X都含有码,则称 R$\in$4NF。

模式分解

多值依赖

设R(U)是属性集U上的一个关系模式,X、Y、Z是U的子集,并且Z = U – X – Y

关系模式R(U)中多值依赖X →→Y成立

  • 当且仅当对R(U)的任一关系r,给定的一对(x,z)值有一组Y的值,这组值仅仅决定于x值而与z值无关

在R(U)的任一关系r中,如果存在元组t,s使得t[X]=s[X],那么就必然存在元组w,v∈r,(w,v可以与s,t相同)

w[X] = s[X] = v[X] = t[X]

w[Y] = t[Y],v[Y] = s[Y]

w[Z] = s[Z],v[Z] = t[Z]

(交换s、t的Y值所得的元组一定在r中)

则称Y多值依赖与X,记作X →→Y

  • 平凡的多值依赖
    • 空集
  • 非平凡的多值依赖
    • 空集
  • 对称性
    • ,则$X\to\to Z,Z=U-X-Y$
  • 传递性
    • ,则$X\to\to Z-Y$
  • ,则$X\to\to YZ$
  • ,则$X\to\to Y\cap Z$
  • ,则$X\to\to Y-Z,X\to\to Z-Y$
  • 函数依赖是多值依赖的特殊情况
    • $X\to Y$则$X\to\to Y$
  • 函数依赖和多值依赖区别

image-20241226154522141

规范化

规范化的基本思想是逐步消除数据依赖中不合适的部分, 使数据库模式中各关系模式达到某种程度的“分离”,使 一个关系只描述一个实体或者实体间的一种联系。

“一事一地”的设计原则。

规范化的实质是概念的单一化

image-20241226160824596

函数依赖公理系统

函数依赖的逻辑蕴涵

  • $R$中任意关系$r$,函数依赖$X\to Y$成立

    则$F$逻辑蕴含$X\to Y$

Armstrong公理系统

  • A1自反律:若Y$\subseteq $X $\subseteq $U,则X →Y为F所蕴含(整体决定部分)

  • A2增广律:若X →Y为F所蕴含,且Z $\subseteq $U则XZ →YZ 为F所蕴含

  • A3传递律:若X →Y,Y →Z为F所蕴含,则X →Z为 F所蕴含

由自反律得到的都是平凡函数依赖

XZ为$X\cup Z$

证明:

  • A1:
    • 若$t[X] = s[X],X\subseteq Y$,则$t[Y]=s[Y],X\to Y$
  • A2:
    • 若$t[XZ] = s[XZ]$,则$t[X] = s[X],t[Z] = s[Z]$
    • $t[X] = s[X],X\to Y$,则$t[Y]=s[Y],t[YZ] = s[YZ],XZ\to YZ$
  • A3:
    • 若$t[X] = s[X]$
    • $X\to Y$,则$t[Y] = s[Y]$
    • $Y\to Z$,则$t[Z] = s[Z],X\to Z$

Armstrong公理系统的推论

  • 合并规则:$X\to Y、X\to Z$,则$X\to YZ$
  • 伪传递规则:$X\to Y$、$WY\to Z$,则$XW\to Z$
  • 分解规则:$X\to Y,Z\subseteq Y$,则$X\to Z$
  • $\mathrm{X\to A_1A_2\ldots A_k}\Leftrightarrow\mathrm{X\to A_i}(\mathrm{i=1,~2,~\ldots,k})$

作业考过:

$X\to Y、X\to Z$,则$X\to YZ$

$X\to Y、Z\to Y$,则$XZ\to Y$

函数依赖集F的闭包

$F^+$:

在$R$中,$F$逻辑蕴涵的全体函数依赖是$F$的闭包

属性集X关于函数依赖集F的闭包

$X_F^+$:

在$R$中,$X\subseteq U$

${X_F}^+=${${A}\mid{X}{\to}{A}$能由F根据Armstrong公理导出}

$X\to Y$能够由F根据Armstrong公理导出$\Leftrightarrow Y\subseteq X_F^+$

求$X_F^+$算法(*)

image-20241226133044105

例子:

image-20241226133322198

Armstrong公理系统的有效性和完备性

  • 有效性
    • 由$F$出发根据Armstrong得到的函数依赖都在$F^+$里
  • 完备性
    • $F^+$里所有的函数依赖都可以由$F$出发根据Armstrong得到

完备性证明

image-20241226135412791

image-20241226135443514

image-20241226135523760

函数依赖集等价/覆盖

函数依赖集$F、G$

若$G^+=F^+$,则$F$与$G$等价

若$F$与$G$等价,则称$F$覆盖$G$、$G$覆盖$F$

$F^+ = G^+ \iff F \subseteq G^+, \ G \subseteq F^+$

证明:

$\Rightarrow $:

因为$F^+ = G^+$则$F^+ \subseteq G^+, \ G^+ \subseteq F^+$

则$F \subseteq G^+, \ G \subseteq F^+$

$\Leftarrow $:

因为$F \subseteq G^+$,则$X_F^+ \subseteq X_{G^+}^+$

任意的$X\to Y\in F^+$,$Y\subseteq X_F^+ \subseteq X_{G^+}^+$

则$X\to Y\in (G^+)^+=G^+$

则$F^+ \subseteq G^+$,同理$G^+ \subseteq F^+$

则$F^+ = G^+$

最小依赖集/覆盖

  • 右部单属性化:
    • F中任一函数依赖X →A,A必是单属性
  • 没有多余的FD:
    • F中不存在这样的函数依赖X →A,使得F与 F − {X →A}等价
  • 每个FD左部没有多余属性:
    • F中不存在这样的函数依赖X →A,在X中有真子集Z,使得F与F −{X →A}$\cup${Z →A}等价

Fm为F的最小依赖集

每个函数依赖集F均等价于一个极小函数依赖集Fm

求Fm算法(F极小化算法)(*)

image-20241226142011505

例子:

image-20241226142325856

模式分解

定义

关系模式R的一个分解$\rho$

$\rho=\{\mathrm{R_1,R_2,…,R_n}\}$

$U=\bigcup_{\mathbf{i}=1}^nU_i$ 没有 $U_{i}\subseteq U_{j},1\leq i,j\leq n$

$F_i$是F在$U_i$上投影:

$F_i=\{X\to Y|X\to Y\in F^{+}\wedge XY\subseteq U_{i}\}$

无损连接性

$m_{\rho}(r)\overset{k}{\operatorname*{=}}\bowtie _{i=1}^{k}\pi_{R_{i}}(r)$

$\pi_{R_i}(r)=\{t.U_i|t\in r\}$

$m_{\rho}(r)$是$r$在$\rho$中各关系模式上投影的连接

  • $r\subseteq m_{\rho}\left(r\right) $
  • 若$s=m_{\rho}(r)$,则$\pi_{R_{i}}(s)=r_{i}$
  • $m_{\rho}(m_{\rho}(r))=m_{\rho}(r)$

无损分解定义

若$\forall r \in R$,都有$r=m_{\rho}\left(r\right) $

充要条件

$\rho=\{R_1,R_2\}$

$U_1\cap U_2\to U_1-U_2\in F^+$或$U_1\cap U_2\to U_2-U_1\in F^+$

即R1,R2的共同属性至少构成R1、R2二者之一的侯选码

判断无损分解算法(*)

呵呵 不如我手工自己连接….

Fm={A →C,C →A, B →A,D →C}

分解是{AC,BA,DC}

但该分解不具有无损连接性:

手工连接发现永远不能同时得到BD

image-20241226162945166

image-20241226162954880

image-20241226163150803

保持函数依赖性

$F^+=\left(\bigcup_{i=1}^kF_i\right)^+$

$\rho{=}\{R_{1}{<}U_{1},F_{1}{>},\cdots,R_{k}{<}U_{k},F_{k}{>}\}$保持函数依赖

判断保持函数依赖性算法(*)

image-20241228153524296

  • 无损连接
    • 4NF以上
  • 函数依赖
    • 3NF 不一定BCNF

3NF保持函数依赖算法(*)

image-20241226165536746

3NF无损连接保持函数依赖算法(*)

image-20241226170814096

image-20241226170925330

BCNF无损连接分解算法(*)

image-20241226170959194

image-20241226171741721

候选码求解

  • L类:仅出现在F的函数依赖左部的属性
  • R类:仅出现在F的函数依赖右部的属性
  • N类:在F的函数依赖左右两边均未出现的属性
  • LR类:在F的函数依赖左右两边均出现的属性

图论判定

不如手工判定呵呵

image-20241226172501314

image-20241226172513334

image-20241226183746800

image-20241226183755150

单属性依赖集候选码求解法

image-20241226183844800

image-20241226183851985

多属性依赖集候选码求解法

image-20241226183904555