关系模式的分解(关系型数据库理论)

逻辑蕴涵(logical implication)
给定 关系模式 R ( U , F ) R(U,F) R(U,F),其任何一个关系 r r r,若 函数依赖 X → Y X\to Y XY 都成立,则称 F F F 逻辑蕴涵 X → Y X\to Y XY
闭包(closure)
给定 关系模式 R ( U , F ) R(U,F) R(U,F) F F F 逻辑蕴涵的函数依赖的全体叫作 F F F闭包,记为 F + F^+ F+

之所以需要这个定义以及上面逻辑蕴涵的定义,是因为原生的 F F F 一般是按极小化来列出所包含的依赖,而 F + F^+ F+ 还纳入了由 F F F 推导出的所有可能的依赖组合(比如传递函数依赖),这方便后面的推理分析

Armstrong 公理系统(Armstrong’s axioms)
U U U 为属性组全集, F F F U U U 上的一组 函数依赖,那么 关系模式 R ( U , F ) R(U,F) R(U,F) 具有以下推理规则(inference rules):
  1. 自反律(reflexivity rule):若 Y ⊆ X ⊆ U Y\sube X\sube U YXU,则 X → Y X\to Y XY F F F 所蕴涵.
  1. 增广律(augmentation rule):若 X → Y X\to Y XY F F F 所蕴涵,且 Z ⊆ U Z\sube U ZU,则 X ∪ Z → Y ∪ Z X\cup Z\to Y\cup Z XZYZ F F F 所蕴涵.
  1. 传递律(transitivity rule):若 X → Y X\to Y XY Y → Z Y\to Z YZ F F F 所蕴涵,则 X → Z X\to Z XZ F F F 所蕴涵.

根据上面的三条规则,可以进一步得到下面三条很有用的推理规则:

  • 合并规则(union rule):若 X → Y ,   X → Z X\to Y,\,X\to Z XY,XZ,则 X → Y ∪ Z X\to Y\cup Z XYZ
  • 伪传递规则(pseudo-transitivity rule):若 X → Y ,   Y ∪ W → Z X\to Y,\,Y\cup W\to Z XY,YWZ,则 X ∪ W → Z X\cup W\to Z XWZ
  • 分解规则(decomposition rule):若 X → Y ,   Y ⊇ Z X\to Y,\,Y\supe Z XY,YZ,则 X → Z X\to Z XZ

并且可以得到定理: X → A 1 A 2 ⋯ A k X\to A_1A_2\cdots A_k XA1A2Ak 成立的充分必要条件是 X → A i   ( i = 1 , 2 , . . . , k ) X\to A_i\,(i=1,2,...,k) XAi(i=1,2,...,k) 成立.

关系模式的分解(decomposition of relational schema)

模式分解(decomposition of relational schema)
关系模式 R ( U , F ) R(U,F) R(U,F) 的一个分解是指 ρ = { R 1 ( U 1 , F 1 ) ,   R 2 ( U 2 , F 2 ) ,   ⋯   ,   R k ( U k , F k ) } \rho=\{R_1(U_1,F_1),\,R_2(U_2,F_2),\,\cdots,\,R_k(U_k,F_k)\} ρ={R1(U1,F1),R2(U2,F2),,Rk(Uk,Fk)}其中 U = ⋃ i = 1 k U i U=\bigcup_{i=1}^k U_i U=i=1kUi 并且 U i ⊈ U j   ( 1 ⩽ i ≠ j ⩽ k ) U_i\not\sube U_j\,(1\leqslant i\neq j\leqslant k) UiUj(1i=jk) F i F_i Fi F F F U i U_i Ui 上的投影,即 F i = { X → Y ∣ X → Y ∈ F + ,   X ∪ Y ⊆ U i } F_i=\{X\to Y\mid X\to Y\in F^+,\, X\cup Y\sube U_i\} Fi={XYXYF+,XYUi}

满足该定义的分解,并不保证原函数依赖还存在于分解后的各子关系模式中,比如若把关系模式R(Student, Department, Dean)Student是主键)分解成R1(Student, Department)R1(Student, Dean),丢失了函数依赖Department → \to Dean

保持函数依赖的分解(functional dependency preserving decomposition,FDPD)
关系模式 R ( U , F ) R(U,F) R(U,F) 的一个 分解 ρ = { R 1 ( U 1 , F 1 ) , ⋯   , R k ( U k , F k ) } \rho=\{R_1(U_1,F_1),\cdots,R_k(U_k,F_k)\} ρ={R1(U1,F1),,Rk(Uk,Fk)}保持函数依赖的(functional dependency preserving,FDP),如果 F + = ( ∪ i = 1 k F i ) + \displaystyle F^+=(\cup_{i=1}^k F_i)^+ F+=(i=1kFi)+

例如,把关系模式R(Student, Department, Dean)Student是主键)分解成R1(Student, Department)R1(Department, Dean),是保持函数依赖的分解。

具有无损连接性的分解(lossless join decomposition,LJD)
ρ = { R 1 ( U 1 , F 1 ) , ⋯   , R k ( U k , F k ) } \rho=\{R_1(U_1,F_1),\cdots,R_k(U_k,F_k)\} ρ={R1(U1,F1),,Rk(Uk,Fk)}关系模式 R ( U , F ) R(U,F) R(U,F) 的一个分解,若对 R ( U , F ) R(U,F) R(U,F) 的任何一个关系 r r r 均有 r = m ρ ( r ) = ⋈ i = 1 k π R i ( r ) , 其中   π R i ( r ) = { t [ U i ] ∣ t ∈ r } r=m_\rho(r)=\bowtie_{i=1}^k\pi_{R_i}(r),\quad 其中\,\pi_{R_i}(r)=\{t[U_i]\mid t\in r\} r=mρ(r)=i=1kπRi(r),其中πRi(r)={t[Ui]tr}成立,则称 分解 ρ \rho ρ 具有 无损连接性(lossless join),将 ρ \rho ρ 简称为 无损连接分解

其中的 ⋈ \bowtie 表示的是自然连接 π R i ( r ) \pi_{R_i}(r) πRi(r) 则是关系 r r r 对应于分解子关系模式 R i ( U i , F i ) R_i(U_i,F_i) Ri(Ui,Fi) 的分解子关系。按前面的例子,把关系模式R(Student, Department, Dean)Student是主键)分解成R1(Student, Department)R1(Student, Dean),虽然不是保持函数依赖的分解,但却是无损连接分解。

是无损连接分解但不能保持函数依赖的话,虽然这种分解可以无损复原,但数据的更新和插入容易出错,比如上面示例中DepartmentDean是分散在两张表中

再看一个例子,将关系模式 R ( { S t u d I D , S t u d N a m e , C o u r s e I D , C o u r s e N a m e } ,   { S t u d I D → S t u d N a m e , C o u r s e I D → C o u r s e N a m e } ) R(\{StudID,StudName,CourseID,CourseName\},\,\{StudID\to StudName,CourseID\to CourseName\}) R({StudID,StudName,CourseID,CourseName},{StudIDStudName,CourseIDCourseName}){StudID,CourseID}为主键)分解成 R 1 ( { S t u d I D , S t u d N a m e } ,   { S t u d I D → S t u d N a m e } ) R 2 ( { C o u r s e I D , C o u r s e N a m e } ,   { C o u r s e I D → C o u r s e N a m e } ) R_1(\{StudID,StudName\},\,\{StudID\to StudName\})\\ R_2(\{CourseID,CourseName\},\,\{CourseID\to CourseName\}) R1({StudID,StudName},{StudIDStudName})R2({CourseID,CourseName},{CourseIDCourseName})是保持函数依赖的分解,但却不是无损连接分解,因为 R 1 , R 2 R_1,R2 R1,R2 的自然连接将退化为笛卡尔积(而原关系 r r r 不一定都是笛卡尔积)。(另见〖第三范式(3NF)〗中的示例)

定理一
对于 关系模式 R ( U , F ) R(U,F) R(U,F) 的一个分解 ρ = { R 1 ( U 1 , F 1 ) , R 2 ( U 2 , F 2 ) } \rho=\{R_1(U_1,F_1),R_2(U_2,F_2)\} ρ={R1(U1,F1),R2(U2,F2)},如果 U 1 ∩ U 2 → U 1 − U 2 ∈ F + U_1\cap U_2\to U_1-U_2\in F^+ U1U2U1U2F+ U 1 ∩ U 2 → U 2 − U 1 ∈ F + U_1\cap U_2\to U_2-U_1\in F^+ U1U2U2U1F+,则 ρ \rho ρ 具有无损连接性.

注意到定理中要求的是“ → \to ”,即函数依赖关系;对于多值依赖的情况,可参见〖多值依赖(multi-valued dependency)〗中的定理。由该定理很直观,并且很容易可以推广到子关系模式为 n n n 个的分解情形。

定理二
ρ = { R 1 ( U 1 , F 1 ) , ⋯   , R k ( U k , F k ) } \rho=\{R_1(U_1,F_1),\cdots,R_k(U_k,F_k)\} ρ={R1(U1,F1),,Rk(Uk,Fk)}关系模式 R ( U , F ) R(U,F) R(U,F) 的一个无损连接分解, σ = { S 1 , ⋯   , S m } \sigma=\{S_1,\cdots,S_m\} σ={S1,,Sm} ρ \rho ρ R i ( U i , F i ) R_i(U_i,F_i) Ri(Ui,Fi) 的一个无损连接分解,那么 ρ ′ = { R 1 , ⋯   , R i − 1 ,   S 1 , ⋯   , S m ,   R i + 1 , ⋯   , R k } , ρ ′ ′ = { R 1 , ⋯   , R k ,   R k + 1 , ⋯   , R n } \rho'=\{R_1,\cdots,R_{i-1},\,S_1,\cdots,S_m,\,R_{i+1},\cdots,R_k\},\enspace\rho''=\{R_1,\cdots,R_k,\,R_{k+1},\cdots,R_n\} ρ={R1,,Ri1,S1,,Sm,Ri+1,,Rk},ρ′′={R1,,Rk,Rk+1,,Rn}均是 R ( U , F ) R(U,F) R(U,F) 的无损连接分解.

其中 ρ ′ \rho' ρ 是无损连接分解是显而易见的, ρ ′ ′ \rho'' ρ′′ 的暂未明白什么意思(有时间再研究),总之二者都是可以证明成立的,该定理是分解法规范化的基础。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值