zoukankan      html  css  js  c++  java
  • 数据库学习摘记 —— 关系模式的分解特性

    分解:

    设有关系模式R(U)和R1(U1), R2(U2), …, Rk(Uk),其中U={A1, A2, …, An},Ui U(i=1,2,…, k),且U=U1+U2+ …+Uk。令ρ={R1(U1), R2(U2), …, Rk(Uk)},ρ为R(U)的一个分解,也称为数据库模式,有时也称为模式集。

    无损连接:

    F是R(U)满足的一个函数依赖集,将R(U)分解成关系模式ρ={R1(U1),R2(U2) … Rk(Uk)},U=U1+U2+…+Uk。如果对R(U)中满足F的每一个具体关系r都有:

    则称这个分解ρ相对于F 具有无损连接性,简称ρ为无损连接分解,即r为它自己在Ui上投影的自然连接。

    无损连接的测试:

    【设关系模式R(A,B,C,D,E)分解为ρ={R1(A,D), R2(A,B), R3(B,E), B4(C,D,E), R5(A,E)},其函数依赖集是F={A→C, B→C, C→D, DE→C, CE→A}】

    如果R(U) 的分解为ρ={ Rl(U1),R2(U2)},其中U=U1∪U2,F为R(U)所满足的函数依赖集合,则分解ρ是无损连接的充分必要条件为 ( U1∩U2)→(U1-U2) 或者(U1∩U2)→(U2-U1)成立。

    当模式R分解成两个关系模式Rl(U1)和R2(U2)时,如果其公共属性能函数决定U1或U2中的其它属性,这样的分解就是无损连接的。

       

    【设关系模式R(A,B,C),F={A→B}】

    R1={Rl(A,B),R2(A,C)}是无损连接的,而R2={Rl(A,B),R3(B,C)}不是无损连接。

    函数依赖:

    设关系模式R(U)的一个分解ρ={R1(U1),R2(U2), …, Rk(Uk)},F是R(U)满足的函数依赖集,且

    函数依赖的测试:

    检验一个分解是否保持函数 依赖,就是检验函数依赖集    是否覆盖函数依赖集F

    设F是属性集U上的函数依赖集,Z是U上的一个子集,F在Z上的一个投影用ΠZ(F)表示,定义为:

    ΠZ(F)={X→Y | (X→Y)∈F+且XYZ}

       

    【设关系模式R(A,B,C,D),F={A→B, B→C,C→D,D→A},R的一个分解ρ={R1(A,B),R2(B,C), R3(C,D)}】

    由函数依赖集F和分解ρ可知:

    F1=Π{A,B}(F)={A→B,B→A},F2=Π{B,C} (F)={B→C,C→B},F3=Π{C,D} (F)={C→D,D→C}

    G={A→B, B→A,B→C, C→B,C→D,D→C},F=F-G={D→A},Result=True

    对于函数依赖D→A,即令X={D},Y={A},有X→Y,F=F-{D→A}=ф

    由于Result=True,所以关系模式R的分解ρ保持函数依赖F。

    性质

    • 若要求分解保持函数依赖,那么模式分解总可以达到3NF,但不一定能达到BCNF。
    • 若要求分解既保持函数依赖,又具有无损连接性,可以达到3NF,但不一定能达到BCNF。
    • 若要求分解具有无损连接性,那一定可达到4NF。

    将一个关系模式R分解成3NF模式,且既保持函数依赖又具有无损连接性的算法:

    • 求出函数依赖集F的最小覆盖并仍记为F, 令ρ=ф
    • 若F中有函数依赖X→Y,满足XY=U, 则ρ=ρ∪{R(U)},则转f)。
    • 如果U中某些属性U1在F的所有函数依赖的左部和右部都不出现,则把这些属性构成一个关系模式R(U1),然后把这些属性从U中去掉,剩余的属性仍记为U,令ρ=ρ∪{R(U)}。
    • 对F中所有以X为左部的函数依赖X→Y1,X→Y2,…,X→Yk,构成关系模式 R(XY1Y2…Yk), 其函数依赖集为 { X→Y1,X→Y2,…,X→Yk},令ρ=ρ∪{R(XY1Y2…Y1)} ,F=F-{X→Y1, X→Y2, …, X→Yk}。
    • 若F= ф转f),否则转d)
    • 输出

    设ρ={R1(U1), R2(U2),…, Rk(Uk)}是由上述算法得到的一个分解。设X是R(U)的一个候选键,若存在某个Ui 使XUi,则令т=ρ,否则 令т=ρ∪{Rx(X)}。

    则 т 是R的一个分解,т 中所有模式都是3NF,且这个分解具有无损连接和保持函数依赖两个特性。

       

    【设关系模式R(U),它满足的函数依赖集 F={A→B,AE→P, CD→A,CE→D, BC→D}已是最小函数依赖集】

    ρ={R1(A,B), R2(A,E,P), R3(C,D,A), R4(C,E,D), R5(B,C,D)}

    由于R的一个候选键属性集是{C,E}U4={C,E,D}

  • 相关阅读:
    JSP页面间传递参数
    JSP获取当前日期时间
    jsp实现套打(发票打印)
    iframe
    HTTP状态码及含义大全
    标签 -- HTML内联框架
    jstl fmt标签详解
    button和submit的区别及使用js实现页面跳转的方式
    Idea SpringBoot 启动Eurka 报错,提示端口被占用
    CodeSmith 破解
  • 原文地址:https://www.cnblogs.com/kuluo/p/12541520.html
Copyright © 2011-2022 走看看