精华内容
下载资源
问答
  • 1NF 2NF 3NF BCNF 模式分解

    1. 问题的提出

    关系数据库逻辑设计

    • 针对具体问题,如何构造一个适合于它的数据模式
    • 数据库逻辑设计的工具──关系数据库的规范化理论

    1.1 概念回顾

    • 关系
    • 关系模式
    • 关系数据库
    • 关系数据库的模式

    1.2 关系模式的形式化定义

    关系模式由五部分组成,即它是一个五元组:
    R(U, D, DOM, F)
    R:       关系名
    U:       组成该关系的属性名集合
    D:       属性组U中属性所来自的域
    DOM: 属性向域的映象集合
    F:       属性间数据的依赖关系集合

    1.3 什么是数据依赖

    1.3.1 完整性约束的表现形式

    限定属性取值范围:例如学生成绩必须在0-100之间
    定义属性值间的相互关连(主要体现于值的相等与否),这就是数据依赖,它是数据库模式设计的关键

    1.3.2 数据依赖

    • 一个关系内部属性与属性之间的约束关系
    • 现实世界属性间相互联系的抽象
    • 数据内在的性质
    • 语义的体现

    1.3.3 数据依赖的类型

    • 函数依赖(Functional Dependency,简记为FD)
    • 多值依赖(Multivalued Dependency,简记为MVD)
    • 其他

    1.4 关系模式的简化定义

    关系模式R(U, D, DOM, F)
    简化为一个三元组:R(U, F)
    当且仅当U上的一个关系r满足F时,r称为关系模式 R(U, F)的一个关系

    1.5 数据依赖对关系模式影响

    1.5.1 [例1]

    建立一个描述学校教务的数据库:
    学生的学号(Sno)、所在系(Sdept)
    系主任姓名(Mname)、课程名(Cname)
    成绩(Grade)

    单一的关系模式 :   Student <U、F>
    U ={ Sno, Sdept, Mname, Cname, Grade }
    属性组U上的一组函数依赖F:
    F ={ Sno → Sdept,  Sdept → Mname,  (Sno, Cname) → Grade }

    1.5.2 关系模式Student<U, F>中存在的问题 

    1. 数据冗余太大
    2. 更新异常(Update Anomalies)
    3. 插入异常(Insertion Anomalies)
    4. 删除异常(Deletion Anomalies)

    结论:Student关系模式不是一个好的模式。
    “好”的模式:不会发生插入异常、删除异常、更新异常,数据冗余应尽可能少
    原因:由存在于模式中的某些数据依赖引起的
    解决方法:通过分解关系模式来消除其中不合适的数据依赖

    1.5.3 分解关系模式

    把这个单一模式分成3个关系模式:
         S(Sno,Sdept,Sno → Sdept);
         SC(Sno,Cno,Grade,(Sno,Cno) → Grade);
         DEPT(Sdept,Mname,Sdept→ Mname) 


    2. 规范化

    规范化理论正是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。

    2.1  函数依赖

    2.1.1 函数依赖

    定义:设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等, 则称 “X函数确定Y” 或  “Y函数依赖于X”,记作X→Y。

    1. 所有关系实例均要满足
    2. 语义范畴的概念
    3. 数据库设计者可以对现实世界作强制的规定

    2.1.2 平凡函数依赖与非平凡函数依赖

    定义:在关系模式R(U)中,对于U的子集X和Y,
    如果X→Y,但Y \nsubseteq X,则称X→Y是非平凡的函数依赖
    若X→Y,但Y ⊆ X,   则称X→Y是平凡的函数依赖
    例:在关系SC(Sno, Cno, Grade)中,
    非平凡函数依赖: (Sno, Cno) → Grade
    平凡函数依赖:     (Sno, Cno) → Sno 
                                   (Sno, Cno) → Cno

    • 若X→Y,则X称为这个函数依赖的决定属性组,也称为决定因素(Determinant)。
    • 若X→Y,Y→X,则记作X←→Y。
    • 若Y不函数依赖于X,则记作X→Y。

    2.1.3 完全函数依赖与部分函数依赖

    定义:在R(U)中,如果X→Y,并且对于X的任何一个真子集X’,都有X’ !\rightarrowY, 则称Y对X完全函数依赖,记作X \overset{F}{\rightarrow}Y。
    若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作X\overset{P}{\rightarrow}Y。

    [例1]   (Sno,Cno)\overset{F}{\rightarrow}Grade是完全函数依赖,

          (Sno,Cno)\overset{P}{\rightarrow}Sdept是部分函数依赖

          因为SnoSdept成立,且Sno是(SnoCno)的真子集

    2.1.4 传递函数依赖

    定义:在R(U)中,如果X→Y,(Y\nsubseteqX) ,Y!→X Y→Z, 则称Z对X传递函数依赖。
        记为:X \overset{t}{\rightarrow} Z

    注: 如果Y→X, 即X←→Y,则Z直接依赖于X。

    例: 在关系Std(Sno, Sdept, Mname)中,有:
          Sno → Sdept,Sdept → Mname
          Mname传递函数依赖于Sno

    2.2  码

    2.2.1 码

    定义:设K为R<U,F>中的属性或属性组合。若K\overset{F}{\rightarrow}U,  则K称为R的侯选码(Candidate Key)。若候选码多于一个,则选定其中的一个做为主码(Primary Key)。

    主属性与非主属性

    • 包含在任何一个候选码中的属性 ,称为主属性(Prime attribute) 
    • 不包含在任何码中的属性称为非主属性(Nonprime attribute)或非码属性(Non-key attribute) 

    全码

    • 整个属性组是码,称为全码(All-key) 

    [例2]
        关系模式S(Sno,Sdept,Sage),单个属性Sno是码,
        SC(Sno,Cno,Grade)中,(Sno,Cno)是码
    [例3]
           关系模式R(P,W,A)
           P:演奏者     W:作品    A:听众
           一个演奏者可以演奏多个作品
           某一作品可被多个演奏者演奏
           听众可以欣赏不同演奏者的不同作品
           码为(P,W,A),即All-Key  

    2.2.2 外部码

    定义:关系模式 R 中属性或属性组X 并非 R的码,但 X 是另一个关系模式的码,则称 X 是R 的外部码(Foreign key)也称外码

    • 如在SC(Sno,Cno,Grade)中,Sno不是码,但Sno是关系模式S(Sno,Sdept,Sage)的码,则Sno是关系模式SC的外部码 
    • 主码与外部码一起提供了表示关系间联系的手段

    2.3  范式

    范式是符合某一种级别的关系模式的集合
    关系数据库中的关系必须满足一定的要求。满足不同程度要求的为不同范式
    范式的种类:    

    • 第一范式(1NF)
    • 第二范式(2NF)
    • 第三范式(3NF)
    • BC范式(BCNF)
    • 第四范式(4NF)
    • 第五范式(5NF)

    各种范式之间存在联系:

    某一关系模式R为第n范式,可简记为R∈nNF。
    一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化 

    2.4  2NF

    2.4.1 1NF的定义

    如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF
    第一范式是对关系模式的最起码的要求。不满足第一范式的数据库模式不能称为关系数据库但是满足第一范式的关系模式并不一定是一个好的关系模式

    2.4.2 S-L-C不是一个好的关系模式

    [例4] 关系模式 S-L-C(Sno, Sdept, Sloc, Cno, Grade)
    Sloc为学生住处,假设每个系的学生住在同一个地方

    函数依赖包括:
               (Sno, Cno) \overset{F}{\rightarrow}Grade
               Sno → Sdept
               (Sno, Cno) \overset{P}{\rightarrow}Sdept
               Sno → Sloc
               (Sno, Cno) \overset{P}{\rightarrow}Sloc
               Sdept → Sloc

    • S-L-C的码为(Sno, Cno)
    • S-L-C满足第一范式。
    • 非主属性Sdept和Sloc部分函数依赖于码(Sno, Cno)

    S-L-C不是一个好的关系模式

    1. 插入异常
    2. 删除异常
    3. 数据冗余度大
    4. 修改复杂

    原因
          Sdept、 Sloc部分函数依赖于码。
    解决方法
         S-L-C分解为两个关系模式,以消除这些部分函数依赖 
                    SC(Sno, Cno, Grade)
                    S-L(Sno, Sdept, Sloc)

    • 关系模式SC的码为(Sno,Cno)
    • 关系模式S-L的码为Sno
    • 这样非主属性对码都是完全函数依赖

    2.4.2 2NF的定义

     定义 :若R∈1NF,且每一个非主属性完全函数依赖于码,则R∈2NF。

     例:S-L-C(Sno, Sdept, Sloc, Cno, Grade) ∈1NF
            S-L-C(Sno, Sdept, Sloc, Cno, Grade) \notin2NF     
            SC(Sno, Cno, Grade) ∈ 2NF
            S-L(Sno, Sdept, Sloc) ∈ 2NF

    采用投影分解法将一个1NF的关系分解为多个2NF的关系,可以在一定程度上减轻原1NF关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。

    将一个1NF关系分解为多个2NF的关系,并不能完全消除关系模式中的各种异常情况和数据冗余。

    2.5  3NF

    2.5.1 3NF的定义

    定义:关系模式R<U,F> 中若不存在这样的码X、属性组Y及非主属性Z(Z  Y), 使得X→Y,Y→Z成立, Y !→ X,则称R<U,F> ∈ 3NF。

    • 若R∈3NF,则每一个非主属性既不部分依赖于码也不传递依赖于码

    2.5.2 2NF存在的问题

    例:2NF关系模式S-L(Sno, Sdept, Sloc)中
    函数依赖:
              Sno→Sdept
              Sdept → Sno
              Sdept→Sloc
     可得:          
              Sno→Sloc,即S-L中存在非主属性对码的传递函数依赖,S-L \notin 3NF

    解决方法
    采用投影分解法,把S-L分解为两个关系模式,以消除传递函数依赖:
             S-D(Sno, Sdept)
             D-L(Sdept,Sloc)
    S-D的码为Sno, D-L的码为Sdept。
    分解后的关系模式S-D与D-L中不再存在传递依赖 

    • S-L(Sno, Sdept, Sloc) ∈ 2NF
    • S-L(Sno, Sdept, Sloc)  \notin 3NF 
    • S-D(Sno,Sdept) ∈ 3NF
    • D-L(Sdept, Sloc)∈ 3NF

    采用投影分解法将一个2NF的关系分解为多个3NF的关系,可以在一定程度上解决原2NF关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。

    将一个2NF关系分解为多个3NF的关系后,仍然不能完全消除关系模式中的各种异常情况和数据冗余。

    2.6  BCNF

    2.6.2 BCNF的定义

    定义:关系模式R<U,F>∈1NF,若X !→Y且Y \subseteq X时X必含有码,则R<U,F> ∈BCNF。

    等价于:每一个决定属性因素都包含码

    若R∈BCNF 

    • 所有非主属性对每一个码都是完全函数依赖
    • 所有的主属性对每一个不包含它的码,也是完全函数依赖
    • 没有任何属性完全函数依赖于非码的任何一组属性

    2.6.2 举例说明

    [例8]在关系模式STJ(S,T,J)中,S表示学生,T表示教师,J表示课程。
    函数依赖:
            (S,J)→T,(S,T)→J,T→J
    (S,J)和(S,T)都是候选码

    STJ∈3NF 
    没有任何非主属性对码传递依赖或部分依赖 
    STJ \notin BCNF
    T是决定因素,T不包含码

    解决方法

    将STJ分解为二个关系模式:
         ST(S,T) ∈ BCNF, TJ(T,J)∈ BCNF

    没有任何属性对码的部分函数依赖和传递函数依赖

    如果R∈3NF,且R只有一个候选码

    2.7  多值依赖

    2.8  4NF

    2.9  规范化小结

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

    目的:尽量消除插入、删除异常,修改复杂,数据冗余

    基本思想:逐步消除数据依赖中不合适的部分

    实质:概念的单一化

    关系模式规范化的基本步骤

    • 不能说规范化程度越高的关系模式就越好
    • 在设计数据库模式结构时,必须对现实世界的实际情况和用户应用需求作进一步分析,确定一个合适的、能够反映现实世界的模式
    • 上面的规范化步骤可以在其中任何一步终止

    3. 数据依赖的公理系统

    3.1 逻辑蕴含

    定义:对于满足一组函数依赖 F 的关系模式R <U,F>,其任何一个关系r,若函数依赖X→Y都成立, (即r中任意两元组t,s,若t[X]=s[X],则t[Y]=s[Y]),则称F逻辑蕴含X →Y

    3.2 Armstrong公理系统

    关系模式R <U,F >来说有以下的推理规则:

    • A1.自反律(Reflexivity):若Y \subseteq X \subseteq U,则X →Y为F所蕴含。
    • A2.增广律(Augmentation):若X→Y为F所蕴含,且Z  U,则XZ→YZ为F所蕴含。
    • A3.传递律(Transitivity):若X→Y及Y→Z为F所蕴含,则X→Z为F所蕴含。

    3.2.1 自反律

    自反律: 若Y  \subseteq X  \subseteq U,则X →Y为F所蕴含

    证: 设Y  X  U 
    对R <U,F> 的任一关系r中的任意两个元组t,s:
    若t[X]=s[X],由于Y  X,有t[y]=s[y],
    所以X→Y成立,自反律得证

    3.2.2 增广律

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

     证:设X→Y为F所蕴含,且Z  \subseteq U。
    设R<U,F> 的任一关系r中任意的两个元组t,s:
    若t[XZ]=s[XZ],则有t[X]=s[X]和t[Z]=s[Z];
    由X→Y,于是有t[Y]=s[Y],所以t[YZ]=s[YZ],
    所以XZ→YZ为F所蕴含,增广律得证。

    3.2.3 传递律

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

    证:设X→Y及Y→Z为F所蕴含。
    对R<U,F> 的任一关系 r中的任意两个元组 t,s:
    若t[X]=s[X],由于X→Y,有 t[Y]=s[Y];
    再由Y→Z,有t[Z]=s[Z],所以X→Z为F所蕴含,传递律得证。

    3.3 导出规则

    根据A1,A2,A3这三条推理规则可以得到下面三条推理规则:

    • 合并规则:由X→Y,X→Z,有X→YZ。(A2, A3)
    • 伪传递规则:由X→Y,WY→Z,有XW→Z。(A2, A3)
    • 分解规则:由X→Y及 Z \subseteq Y,有X→Z。(A1, A3)

    根据合并规则和分解规则,可得引理
    引理: X→A1 A2…Ak成立的充分必要条件是X→Ai成立(i=l,2,…,k)

    3.4 函数依赖闭包

    3.4.1 Armstrong公理系统是有效的、完备的

    有效性:由F出发根据Armstrong公理推导出来的每一个函数依赖一定在F+中;
    完备性:F+中的每一个函数依赖,必定可以由F出发根据Armstrong公理推导出来

    3.4.2 函数依赖闭包

    定义: 在关系模式R<U,F>中为F所逻辑蕴含的函数依赖的全体叫作 F的闭包,记为F+。
    定义:设F为属性集U上的一组函数依赖,X \subseteq U, XF+ ={ A|X→A能由F 根据Armstrong公理导出},XF+称为属性集X关于函数依赖集F 的闭包

    F={X\rightarrowA1, …… , X\rightarrowAn}的闭包F+计算是一个NP完全问题

    3.4.3 闭包的引理

    引理:设F为属性集U上的一组函数依赖,X,Y \subseteq U,X →Y能由F 根据Armstrong公理导出的充分必要条件是Y \subseteq XF+
    用途:将判定X→Y是否能由F根据Armstrong公理导出的问题,转化为求出XF+ 、判定Y是否为XF+的子集的问题

    3.4.4 求闭包的算法

    算法:求属性集X(X \subseteq U)关于U上的函数依赖集F 的闭包XF+ 

    输入:X,F 

    输出:XF+

    步骤:
    (1)令X(0)=X,i=0
    (2)求B,这里B = { A |(\exists V)( \exists W)(V→W \in F∧V \subseteq X(i)∧A \in W)};
    (3)X(i+1)=B∪X(i) 
    (4)判断X(i+1)= X (i)吗?
    (5)若相等或X(i)=U , 则X(i)就是XF+ , 算法终止。
    (6)若否,则 i=i+l,返回第(2)步。

    [例1]  已知关系模式R<U,F>,其中
    U={A,B,C,D,E};
    F={AB→C,B→D,C→E,EC→B,AC→B}。
    求(AB)F+ 。

    解:设X(0)=AB;
    (1) X(1)=AB∪CD=ABCD。

    (2) X(0)≠ X(1)
         X(2)=X(1)∪BE=ABCDE。

    (3) X(2)=U,算法终止
        (AB)F+ =ABCDE。

    [例2] 设有关系模式R(A,B,C,D,E),其上的函数依赖集:F={A→BC,CD→E, B→D,E→A}
    (1)计算B+;(2)求出R的所有候选关键字

    解:
    (1)X={B},X(0)={B}, X(1)={BD}, X(2)={BD},所以B+={BD}
    (2)根据候选关键字定义,R的候选关键字只可能由F中各函数依赖的只出现在左边属性和未出现在函数依赖中的属性构成,但是除此以外,对于即出现在左边,又出现在右边的属性,也可能构成候选关键字。所以可进行组合分析得到A,BC,CD ,E也为候选关键字
    综上,候选关键字为:A,BC,CD,E

    3.4.5 函数依赖依赖集等价

    定义:如果G+=F+,就说函数依赖集F覆盖G(F是G的覆盖,或G是F的覆盖),或F与G等价。
    引理:F+ = G+ 的充分必要条件是F \subseteq G+ ,和G \subseteq F+ 

    3.4.6 最小依赖集

    定义:如果函数依赖集F满足下列条件,则称F为一个极小函数依赖集。亦称为最小依赖集或最小覆盖。

    1. F中任一函数依赖的右部仅含有一个属性。
    2. F中不存在这样的函数依赖X→A,使得F与F-{X→A}等价。
    3. F中不存在这样的函数依赖X→A, X有真子集Z使得F-{X→A}∪{Z→A}与F等价。 

    [例2] 关系模式S<U,F>,其中:
              U={ Sno,Sdept,Mname,Cno,Grade },
              F={ Sno→Sdept,Sdept→Mname,(Sno,Cno)→Grade }
             设F’={Sno→Sdept,Sno→Mname,Sdept→Mname,(Sno,Cno)→Grade,(Sno,Sdept)→Sdept}
    F是最小覆盖,而F’不是。
    因为:F ’ - {Sno→Mname}与F ’等价
              F ’ - {(Sno,Sdept)→Sdept}也与F ’等价       

    3.4.7 极小化过程

    定理:每一个函数依赖集F均等价于一个极小函数依赖集Fm。此Fm称为F的最小依赖集。
    证明: 构造性证明,找出F的一个最小依赖集。

    (1)逐一检查F中各函数依赖FDi:X→Y,若Y=A1A2 …Ak,k > 2,
        则用 { X→Aj |j=1,2,…, k} 来取代X→Y。

    (2)逐一检查F中各函数依赖FDi:X→A,令G=F-{X→A},
        若A \in XG+, 则从F中去掉此函数依赖。

    (3)逐一取出F中各函数依赖FDi:X→A,设X=B1B2…Bm,
        逐一考查Bi (i=l,2,…,m),若A \in(X-Bi )F+ ,
        则以X-Bi 取代X。

    [例3]  F = {A→B,B→A,B→C,A→C,C→A}
              Fm1、Fm2都是F的最小依赖集:
                      Fm1= {A→B,B→C,C→A}  
                      Fm2= {A→B,B→A,A→C,C→A} 

    • F的最小依赖集Fm不唯一
    • 极小化过程也是检验F是否为极小依赖集的一个算法

    [例4] 设关系模式R<A,B,C,D>,函数依赖集F={A→C,C→A, B→AC,D→AC,BD→A}
    求出F的最小函数依赖集。

    1. 将F中的函数依赖都分解为右部为单属性的函数依赖。
      F={A→C,C→A, B→A,B→C,D→A,D→C,BD→A}
    2. 去掉F中冗余的函数依赖。
      判断A→C是否冗余。
      设:G1={C→A,B→A,B→C,D→A,D→C,BD→A},得:A+ =A 
      ∵C  不属于A+ ∴A→C不冗余
      判断C→A是不冗余。
      设:G2={A→C,B→A,B→C,D→A,D→C,BD→A},得: C+ =C
      ∵A不属于 ∴C→A不冗余
      判断B→A是否冗余。
      设:G3={A→C,C→A,B→C,D→A,D→C,BD→A},得: B+ =BCA
      ∵A属于∴B→A冗余
      判断B→C是否冗余。
      设:G4={A→C,C→A, D→A,D→C,BD→A}, 得: B+ =B
      ∵C不属于  ∴B→C不冗余
      判断D→A是否冗余。
      设:G5={A→C,C→A, B→C,D→C,BD→A}, 得: D+ =DCA
      ∵A不属于   ∴D→A不冗余
      判断D→C是否冗余。
      设:G6={A→C,C→A, B→C,BD→A}, 得: D+ =D 
      ∵C不属于  ∴D→C不冗余
      判断BD→A是否冗余。
      设:G7={A→C,C→A, B→C,D→C}, 得: BD+ =BDCA
      ∵A属于  ∴BD→A冗余
      F={A→C,C→A,B→C,D→C}
    3. 由于各函数依赖在部都为单属性.故:
      Fm={A→C,C→A,B→C,D→C}。

    [例5] 设关系模式R<A,B,C,D,E,F>,函数依赖集F={AB→E,BC→D,BE→C,CD→B,CE→AF,CF→BD,C→A,D→EF},
    求F的最小函数依赖集。

     

    1. 将F中的函数依赖都分解为右部为单属性的函数依赖。
      F={AB→E,BC→D,BE→C,CD→B,CE→A,CE→F,CF→B,CF→D,C→A,D→E,D→F}
    2. 去掉F中冗余的函数依赖。
      判断AB→E是否冗余。
      设:G1={ BC→D,BE→C,CD→B,CE→A,CE→F,CF→B,CF→D,C→A,D→E,D→F}
      得: AB+ =AB
      ∵ E不属于AB+  ∴AB→E不冗余
      判断BC → D是否冗余
      设:G2={ AB→E,BE→C,CD→B ,CE→A,CE→F,CF→B,CF→D,C→A, D→E,D→F}、
      得: BC + =BCAEFD
      ∵ D属于BC +  ∴BC→D冗余
      判断BE→C是否冗余。
      设:G3={ AB→E,CD→B,CE→A ,CE→F,CF→B,CF→D,C→A,D→E,D→F}
      得: BE + =BE
      ∵ C不属于BE +  ∴BE→C不冗余
      判断CD → B是否冗余。
      设:G4={ AB→E,BE→C,CE→A ,CE→F,CF→B,CF→D,C→A,D→E,D→F}
      得: CD + =CDAEFB
      ∵ B属于CD +   ∴CD→B冗余
      判断CE → A是否冗余。
      设:G5={ AB→E,BE→C,CE→F,CF→B,CF→D,C→A,D→E,D→F}
      得: CE + =CEFBDA
      ∵ A属于CE +  ∴CE→A冗余
      判断CE → F是否冗余。
      设:G6={ AB→E,BE→C,CF→B,CF→D,C→A,D→E,D→F}、
      得: CE + =CEA
      ∵ F不属于CE +  ∴CE→F不冗余
      判断CF → B是否冗余。
      设:G7={ AB→E,BE→C,CE→F,CF→D,C→A,D→E,D→F}
      得: CF + =CFDEF
      ∵ B不属于CF +  ∴CF→B不冗余、
      判断CF→D是否冗余。
      设:G8={ AB→E,BE→C,CE→F,CF→B,C→A,D→E,D→F}
      得: CF + =CFABE
      ∵ D不属于CF +  ∴CF→D不冗余
      判断C→A是否冗余。
      设:G9={ AB→E,BE→C,CE→F,CF→B,CF→D,D→E,D→F}
      得: C + =C
      ∵ A不属于C +  ∴C→A不冗余
      判断D → E是否冗余。
      设:G10={ AB→E,BE→C,CE→F,CF→B,CF→D,C→A,D→F}
      得: D + =DF
      ∵ E不属于D +   ∴D→E不冗余
      判断D → F是否冗余。
      设:G11={ AB→E,BE→C,CE→F,CF→B,CF→D,C→A,D→E}
      得: D + =DE
      ∵ F不属于D +  ∴D→F不冗余
      F={ AB→E,BE→C,CE→F,CF→B,CF→D,C→A,D→E,D→F}
    3. 去掉F中冗余的属性。
      对于CF→D ,在决定因素中去掉C,D不属于属性F的闭包   不能以F→D代替CF→D;
      在决定因素中去掉F。 求得:CF=CA,D不属于属性C的闭包    不能以C→D代替CF→D
      同样验证AB→E, BE→C,CE→F,CF→B
      最终得到最小依赖集为
      {AB→E,BE→C,CE→F,CF→B,CF→D,C→A,D→E,D→F

    4. 模式的分解

    把低一级的关系模式分解为若干个高一级的关系模式的方法不是唯一的
    只有能够保证分解后的关系模式与原关系模式等价,分解方法才有意义

    4.1 关系模式分解

    三种模式分解等价的定义:

    1. 分解具有无损连接性
    2. 分解要保持函数依赖
    3. 分解既要保持函数依赖,又要具有无损连接性

    定义:关系模式R<U,F>的一个分解:ρ={ R1<U1,F1>,R2<U2,F2>,…,Rn<Un,Fn>}  ,且不存在  Ui \subseteq Uj,Fi 为 F在 Ui 上的投影

    定义:函数依赖集合{X→Y | X→Y \in F+∧XY \subseteq Ui} 的一个覆盖 Fi 叫作 F 在属性 Ui 上的投影

    例1: 已知R<U,F>,U={A,B,C,D}, F={A->BD, D->C}, 如果将R分解为R1(U1, F1)和R2(U2, F2), 其中U1={A,B,D}, U2={A,C}, 则F1,F2分别是?

    例:S-L(Sno, Sdept, Sloc)
            F={ Sno→Sdept,Sdept→Sloc,Sno→Sloc}
            S-L∈2NF  

    分解方法可以有多种:
    1. S-L分解为三个关系模式:SN(Sno)
                                                  SD(Sdept)
                                                  SO(Sloc)
    2.  S-L分解为下面二个关系模式:NL(Sno, Sloc)
                                                          DL(Sdept, Sloc)
    3. 将S-L分解为下面二个关系模式:ND(Sno, Sdept)
                                                            NL(Sno, Sloc)

    4.1.1

    S-L分解为三个关系模式:SN(Sno)
                                                  SD(Sdept)
                                                  SO(Sloc)

    • 分解后的数据库丢失了许多信息
    • 例如无法查询95001学生所在系或所在宿舍。
    • 如果分解后的关系可以通过自然连接恢复为原来的关系,那么这种分解就没有丢失信息

    4.1.2

    2.  S-L分解为下面二个关系模式:NL(Sno, Sloc)
                                                          DL(Sdept, Sloc)

    • NL∞DL比原来的SL关系多了3个元组无法知道95002、95004、95005究竟是哪个系的学生
    • 元组增加了,信息丢失了

    4.1.3

    3. 将SL分解为下面二个关系模式:
                   ND(Sno, Sdept)
                   NL(Sno, Sloc)
    分解后的关系为:

    与SL关系一样,因此没有丢失信息。

    4.1.4 具有无损连接性的模式分解

    • 关系模式R<U,F>的一个分解 ρ={ R1<U1,F1>,R2<U2,F2>, …,Rn<Un,Fn>} 若R与R1、R2、…、Rn自然连接的结果相等,则称关系模式R的这个分解ρ具有无损连接性(Lossless join)
    • 具有无损连接性的分解保证不丢失信息
    • 无损连接性不一定能解决插入异常、删除异常、修改复杂、数据冗余等问题

    第3种分解方法具有无损连接性

    问题:这种分解方法没有保持原关系中的函数依赖

    • SL中的函数依赖Sdept→Sloc没有投影到关系模式ND、NL上

    4.1.5 保持函数依赖的模式分解

    设关系模式R<U,F>被分解为若干个关系模式
    R1<U1,F1>,R2<U2,F2>,…,Rn<Un,Fn> 
    (其中U=U1∪U2∪…∪Un,且不存在Ui \subseteq Uj,Fi为F在Ui上的投影),若F所逻辑蕴含的函数依赖一定也由分解得到的某个关系模式中的函数依赖Fi所逻辑蕴含,则称关系模式R的这个分解是保持函数依赖的(Preserve dependency)

    4.将SL分解为下面二个关系模式:
                   ND(Sno, Sdept)
                   DL(Sdept, Sloc)
    这种分解方法就保持了函数依赖

    4.1.6 小结

    • 如果一个分解具有无损连接性,则它能够保证不丢失信息
    • 如果一个分解保持了函数依赖,则它可以减轻或解决各种异常情况
    • 分解具有无损连接性和分解保持函数依赖是两个互相独立的标准。具有无损连接性的分解不一定能够保持函数依赖;同样,保持函数依赖的分解也不一定具有无损连接性。

    第1种分解方法既不具有无损连接性,也未保持函数依赖,它不是原关系模式的一个等价分解
    第2种分解方法保持了函数依赖,但不具有无损连接性
    第3种分解方法具有无损连接性,但未持函数依赖
    第4种分解方法既具有无损连接性,又保持了函数依赖

    4.2 分解算法

    • 算法1 判别一个分解的无损连接性
    • 算法2 (合成法)转换为3NF的保持函数依赖的分解。
    • 算法3 转换为3NF既有无损连接性又保持函数依赖的分解
    • 算法4 (分解法)转换为BCNF的无损连接分解
    • 算法5 达到4NF的具有无损连接性的分解  

    4.2.1 算法1 判断一个分解的无损连接性

    (1)构造初始表:构造一个k行n列的初始表,其中每列对应于R的一个属性,每行用于表示分解后的一个模式组成。如果属性Aj属于关系模式Ri, 则在表的第一i行第j列置符号aj,否则置符号bij 。
    (2)根据F中的函数依赖修改表内容:  考察F中的每个函数依赖X→Y,在属性组X所在的那些列上寻找具有相同符号的行,如果找到这样的两行或更多的行, 则修改这些行,则使这些行上属性组Y所在的列上元素相同。

    • 修改规则是:如果y所在的要修改的行中有一个为aj, 则这些元素均变成aj;否则改动为bmj(其中m为这些行的最小行号)。
    • 注意:若某个bij被改动,则该列中凡是与bij相同的符号均做相同的改动。 循环地对F中的函数依赖进行逐个处理,直到发现表中有一行 变为a1,a2,…an或不能再被修改为止。

    (3)判断分解是否为无损联接:如果通过修改,发现表中有一行变a1,a2,… an,  则分解是无损联接的,否则分解不具有无损联接性。


    例1:

    简易方法:只画关注数据

    结果:具有无损连接性


    例2:

    设关系模式R(A,B,C,D,E,F),函数依赖集F={A→B,C→F,E→A,CE→A},将R分解为P={ABE,CDEF}。判断p是否是无损连接。

    (1) {A→B,C→F,E→A,CE→A}

    (2) {A→B,C→F,E→A,CE→A}

    结果:不具有无损连接性


    4.2.2 算法2 3NF+依赖保持

     

     


    5. 小结

    关系模式的规范化,其基本思想: 

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

    规范化理论为数据库设计提供了理论的指南和工具
    也仅仅是指南和工具

    并不是规范化程度越高,模式就越好
    必须结合应用环境和现实世界的具体情况合理地选择数据库模式

    展开全文
  • 关系模式(1)什么是关系模式(2)定义关系模式3.关系模式关系的对比4.关系数据库 0.思维导图 1. 关系 什么是关系? 单一的数据结构----关系 现实世界的实体以及实体间的各种联系均用关系来表示 逻辑结构----二...


    0.思维导图

    在这里插入图片描述

    1. 关系

    什么是关系?

    • 单一的数据结构----关系
      现实世界的实体以及实体间的各种联系均用关系来表示
    • 逻辑结构----二维表
      从用户角度,关系模型中数据的逻辑结构是一张二维表
    • 建立在集合代数的基础上

    (1)域(Domain)

    • 是一组具有相同数据类型的值的集合。例:
      整数
      实数
      介于某个取值范围的整数
      长度指定长度的字符串集合
      {‘男’,‘女’}
      ………………

    (2)笛卡尔积(Cartesian Product)

    • 笛卡尔积
      给定一组域D1,D2,…,Dn,这些域中可以有相同的。
      D1,D2,…,Dn的笛卡尔积为:
      在这里插入图片描述
      所有域的所有取值的一个组合
      不能重复;

    • 元组(Tuple)
      笛卡尔积中每一个元素(d1,d2,…,dn)叫作一个n元组(n-tuple)或简称元组(Tuple);
      (张清玫,计算机专业,李勇)、(张清玫,计算机专业,刘晨)等都是元组 ;

    • 分量(Component)
      笛卡尔积元素(d1,d2,…,dn)中的每一个值di叫作一个分量;
      张清玫、计算机专业、李勇、刘晨等都是分量 ;

    • 基数(Cardinal number)
      可以把基数看做笛卡尔积元素的个数,及元组的个数;
      若Di(i=1,2,…,n)为有限集,其基数为mi(i=1,2,…,n),则D1×D2×…×Dn的基数M为:
      在这里插入图片描述

    • 笛卡尔积的表示方法:
      笛卡尔积可表示为一个二维表;
      表中的每行对应一个元组,表中的每列对应一个;
      在这里插入图片描述

    (3)关系(Relation)

    • 关系
      ·笛卡尔积·D1×D2×…×Dn的子集叫作在D1,D2,…,Dn上的关系,表示为:
      在这里插入图片描述
      R:关系名
      n:关系的(Degree)

    • 元组
      ·关系·中的每个元素是关系中的元组,通常用t表示。

    • 单元关系与二元关系
      当n=1时,称该关系为单元关系(Unary relation)或一元关系 ;
      当n=2时,称该关系为二元关系(Binary relation);

    • ·关系的表示·
      关系也是一个二维表,表的每行对应一个元组,表的每对应一个
      在这里插入图片描述

    • 属性
      关系中不同列可以对应相同的域;
      为了加以区分,必须对每起一个名字,称为属性(Attribute);
      n目关系必有n个属性;

      • 候选码(Candidate key)
        若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码;
        简单的情况:候选码只包含一个属性;
      • 全码(All-key)
        最极端的情况:关系模式的所有属性组是这个关系模式的候选码,称为全码(All-key);
      • 主码
        若一个关系有多个候选码,则选定其中一个为主码(Primary key);
      • 主属性
        候选码的诸属性称为主属性(Prime attribute);
        不包含在任何侯选码中的属性称为非主属性( Non-Prime attribute)或非码属性(Non-key attribute) ;
        在这里插入图片描述
    • D1,D2,…,Dn的笛卡尔积的某个子集才有实际含义
      ·例:·表2.1 的笛卡尔积没有实际意义
      取出有实际意义的元组来构造关系
      关系:SAP(SUPERVISOR,SPECIALITY,POSTGRADUATE)
      假设:导师与专业:1:1, 导师与研究生:1:n
      主码:POSTGRADUATE(假设研究生不会重名)
      SAP关系可以包含三个元组:{ (张清玫,计算机专业,李勇), (张清玫,计算机专业,刘晨),(刘逸,信息专业,王敏) }

    (4)三类关系

    • 基本关系(基本表或基表)
      实际存在的表,是实际存储数据的逻辑表示
    • 查询表
      查询结果对应的表
    • 视图表
      由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据
    • 在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表
    • 视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。
    • 我们可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,我们也可以提交数据,就像这些来自于某个单一的表。
    • 注释:数据库的设计和结构不会受到视图中的函数、where 或 join 语句的影响。
    • 基本关系(二维表)的性质
      ① 列是同质的(Homogeneous);
      ② 不同的列可出自同一个域,其中的每一列称为一个属性,不同的属性要给予不同的属性名;
      ③ 列的顺序无所谓,列的次序可以任意交换;
      ④ 任意两个元组的候选码不能相同;
      ⑤ 行的顺序无所谓,行的次序可以任意交换;
      ⑥ 分量必须取原子值,这是规范条件中最基本的一条; 表2.3  非规范化关系

    2.关系模式

    (1)什么是关系模式

    关系模式(Relation Schema)是
    关系是
    关系模式是对关系描述:

    • 元组集合的结构
      • 属性构成
      • 属性来自的域
      • 属性与域之间的映象关系
    • 元组语义以及完整性约束条件
    • 属性间的数据依赖关系集合

    (2)定义关系模式

    关系模式可以形式化地表示为:

    • R(U,D,DOM,F)
    • R 关系名
    • U 组成该关系的属性名集合
    • D 属性组U中属性所来自的域
    • DOM 属性向域的映象集合
    • F 属性间的数据依赖关系集合

    ·例:·
    导师和研究生出自同一个域——人,取不同的属性名,并在模式中定义属性向域的映象,即说明它们分别出自哪个域;
    DOM(SUPERVISOR-PERSON)= DOM(POSTGRADUATE-PERSON)=PERSON

    关系模式通常可以简记为
    R (U) 或 R (A1,A2,…,An)
    R: 关系名
    A1,A2,…,An : 属性名
    注:域名及属性向域的映象常常直接说明为属性的类型、长度

    3.关系模式和关系的对比

    • 关系模式
      对关系的描述
      静态的、稳定的
    • 关系
      关系模式在某一时刻的状态或内容
      动态的、随时间不断变化的
      关系模式和关系往往统称为关系

    在数据库学科中可以把关系模式理解为表的结构、属性之间的关系、约束条件,把关系理解为二维表

    4.关系数据库

    • 关系数据库·
      在一个给定的应用领域中,所有·关系的集合·构成一个关系数据库
    • ·关系数据库模式包括
      若干域的定义;
      在这些域上定义的若干关系模式;
    • 关系数据库的··与
      关系数据库的: 关系数据库模式, 对关系数据库的描述。
      关系数据库的: 关系模式在某一时刻对应的关系的集合,简称为关系数据库
    展开全文
  • 四、数据挖掘常见的挖掘模式

    千次阅读 2020-03-01 18:49:11
    描述性挖掘任务刻画目标数据中数据的一般性质。预测性挖掘任务当前数据上进行归纳,以便做出预测。数据挖掘的功能和模式主要包括以下内容: 特征化和区分 频繁模式、关联和相关性分析挖掘 分类与...

    1.数据挖掘的模式

    数据挖掘功能用于指定数据挖掘任务发现的模式:一般而言,这些任务可以分为两类:描述性和预测性。描述性挖掘任务刻画目标数据中数据的一般性质。预测性挖掘任务在当前数据上进行归纳,以便做出预测。数据挖掘的功能和模式主要包括以下内容:

    • 特征化和区分
    • 频繁模式、关联和相关性分析挖掘
    • 分类与回归
    • 聚类分析
    • 离群点分析

    2 类/概念:特征化和区分

    • 数据可以与类或概念相关联,可以通过下述方法得到:
    1. 数据特征化:汇总所研究类(通常称为目标类)的数据;
    2. 数据区分:将目标类与一个或多个可比较类(通常称为对比类)进行比较。
      顾客的概念包括bigSpenders和budgetSpenders,这种汇总的、简洁的、精确的描述方式就就为类/概念描述。
    • 数据特征化的方法
      数据特征化(data characterization)通过查询来收集对应于用户指定类的数据。例如,挖掘任务“汇总一年内在某商店花费5000美元以上的顾客特征”,统计结果可能是顾客的概况,如年龄在40~50、有工作、有很好的信用等级。
    • 数据特征化的输出
      可以用多种形式提供,例如饼图、条图、曲线、多维数据立方体和包括交叉表在内的多维表。结果描述可以用广义关系或规则(称作特征规则)形式提供。
    • 数据区分
      数据区分(data discrimination)是将目标类数据对象的一般特性与一个或多个对比类对象的一般性进行比较。目标类和对比类可以用户指定,而对应的数据对象可以通过数据库查询检索。
      例如,比较两组顾客——定期购买计算机产品的顾客和不经常购买这种产品的顾客。结果描述提供这些顾客比较的概况,例如频繁购买计算机产品的顾客80%在20-40岁之间,受过大学教育;而不经常购买这些产品的顾客60%或者年龄太大或太年轻或没有大学学位。

    3 关联分析

    频繁模式
    频繁模式(frequent pattern)是在数据中频繁出现的模式,存在多种类型的频繁模式,包括频繁项集、频繁子序列(序列模式)和频繁子结构。
    频繁项集
    频繁项集一般是指频繁地在事务数据中一起出现的商品的集合,如小卖部中被许多顾客频繁一起购买的牛奶和面包。
    频繁子序列
    类似如顾客倾向于先购买便携机,再购买数码相机,然后再购买内存卡这样的模式。
    关联和相关性
    关联分析又称关联挖掘,就是在交易数据、关系数据或其他信息载体中,查找存在于项目集合或对象集合之间的频繁模式、关联、相关性或因果结构。
    在这里插入图片描述

    4 分类或回归

    用于预测的分类
    分类是这样的过程,它找出描述和区分数据类或概念的模型(函数),以便能够使用模型预测类标号未知的对象的类标号。
    在这里插入图片描述
    用于预测的回归
    回归分析(regression analysis)指的是确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。
    在这里插入图片描述

    5 聚类分析

    聚类分析
    聚类分析指将物理或抽象对象的集合分组为由类似的对象组成的多个类的分析过程。
    聚类分析和和分类的区别在于分类又已知的类别标签,而聚类没有。
    在这里插入图片描述

    6 离群点分析

    数据集中可能存在一些数据对象,他们与数据的一般行为或模型不一致,这些数据对象被称为离群点(outlier)。大部分数据挖掘方法将离群点视为噪音或异常而丢弃。然而,在一些应用中(如欺诈检测),罕见的事件可能比正常出现的事件更令人感兴趣。 在这里插入图片描述

    展开全文
  • 关系模式的设计问题 数据依赖 数据依赖对关系模式的影响 数据的函数依赖 函数依赖 依赖的逻辑内涵 函数依赖和码(关键字)的联系 *最小函数依赖集 ...

    在这里插入图片描述

    一. 关系模式的设计问题

    1.1 数据依赖

    关系数据库是以关系模型为基础的数据库,它利用关系描述现实世界。一个关系既可用 来描述一个实体及其属性,也可用来描述实体间的一种联系。关系模式是用来定义关系的, 一个关系数据库包含一组关系,定义这组关系的关系模式的全体就构成了该数据库的模式。
    关系模式的核心问题是数据依赖性.数据依赖是对可能成为关系模式当前值的那些关系 的约束,是一个关系中属性(或属性组)与属性(或属性组)之间的相互依赖关系,是客观 存在着的语义。
    数据依赖是通过一个关系中属性间值的依赖与否体现出数据间的相互关系,它是现实世 界属性间相互联系的抽象 ,是数据内在的性质,是语义的体现。
    其中最重要的是函数依赖 (Functional Dependency,FD)和多值依赖(Multivalued Dependency, MVD)。

    1.2 数据依赖对关系模式的影响

    函数依赖普遍地存在于现实生活中。比如,描述一个学生的关系,可以有学号(Sno)、 姓名(Sname)、所在系(Sdept)等几个属性。由于一个学号只对应一个学生,一个学生只在一 个系。因而当“学号”值确定之后,姓名及其所在系的值也就被唯一地确定了。属性间的这 种依赖关系类似于数学中的函数

    理想的模式应当不会发生插入异常,删除异常,更新异常,数据冗余应尽可能少.一个关系 模式之所以会产生上述问题,是由存在于模式中的某些数据依赖引起的.规范化理论正是用 来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常,删除 异常,更新异常和数据冗余问题

    二. 数据的函数依赖

    2.1 函数依赖

    2.1.1 函数依赖的定义

    设 R(U)是属性集 U 上的关系模式,X、Y 是 U 的一个子集。r 是 R(U)中的任意给定的 一个关系。若对于 r 中任意两个元组 s 和 t,当 s[X]=t[X]时,就有 s[Y]=t[Y],则称属性子集 X 函数决定属性子集 Y 或者称 Y 函数依赖于 X,否则就称 X 不函数决定 Y 或者称 Y 不函 数依赖于 X。

    1. 如果 Y 函数依赖于 X,则记为 X→Y。
    2. 如果 X→Y,则称 X 为决定因素( determinant)。
    3. 如果 X→Y,且 Y→X,则记为 X←→Y。
    4. 如果 Y 不函数依赖于 X,则记为 X↛Y。

    比如在学习生活中:

    学号→姓名(每个学号只能有一个学生姓名) 
    学号→系别(每个学号只能在一个系) 
    学号→图书证号(每个学号只能有一个图书证号) 
    系别→系主任(每个系只能由一名系主任
    

    2.1.2 函数依赖的3种基本情形

    (1)平凡与非平凡函数依赖

    如果 X→Y,但 Y 不是 X 的子集,则称 X→Y 是非平凡函数依赖(nontrivial functional dependency), 一般都讨论非平凡

    在关系 SC(Sno,Cno,Grade)中,
    非平凡函数依赖:(Sno,Cno) →Grade

    如果 X→Y,但 Y 是 X 的子集,则称 X→Y 是平凡函数依赖(nontrivial functional dependency)

    在关系 SC(Sno,Cno,Grade)中
    平凡函数依赖:(Sno,Cno) →Sno;(Sno,Cno) →Cno

    (2)部分与完全函数依赖
    如果 X→Y,但对于 X 中的任意一个真子集 X′,都有 Y 不依赖于 X′,则称 Y 完全依赖 ,记为 X F→ Y

    在关系 SC(Sno,Cno,Sname,Grade)中,
     完全函数依赖: (Sno,Cno) →Grade

    如果X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记为 X P→ Y

    在关系 SC(Sno,Cno,Sname,Grade)中,
    部分函数依赖:(Sno,Cno) → Sname

    (3)传递与直接函数依赖

    在 R(U)中,如果 X→Y,(Y⊈X),Y↛X,Y→Z,则称 Z 对 X 传递函数依赖。记为 X 传递→ Z。 加上条件 Y↛X,是因为如果 Y→X,则 X←→Y,实际上是== X 直接→Z==,即直接函数依赖而不是传递函数依赖。

    指出关系 S (学号,姓名,图书证号,系别,系主任)中存在的传递函数依赖。 
    传递函数依赖:学号→系别, 系别→系主任,系主任传递函数依赖于学号

    2.2 函数依赖和码(关键字)的联系

    码是在关系模式 R 中,可以唯一标识一个元组的属性或属性组。

    从函数依赖的角度,给出码的形式化定义。 设 K 为关系模式 R<U,F>中的属性或属性组,若 K F→U 则 K 为 R 的候选码( Candidate Key),也简称为码(Key)

    关系模式的每个候选码具有下列两个特性:
    (1) 唯一性:在关系模式 R(U)中,K 为 R 的候选码,对于关系模式 R 对应的任何一个关 系 r,都不存在候选码属性值相同的两个元组,即候选码的取值是唯一的。
    (2) 最小特性:在关系模式 R(U)中,K 为 R 的候选码,在不破坏候选码的唯一性的情况 下,没有任何一个属性能从候选码里面删除。

    
    设 R(A,B,C,D,E),F={AB→CDE,E→ABCD},确定 R 的主属性及非 主属性。
    解:该关系模式有 2 个候选码:AB,E。所以 A、B、E 是主属性,C、D 是非主属性。

    2.3 最小函数依赖集

    函数依赖集 F 中包含若干个函数依赖,为了得到最为精简的函数依赖集,应该去掉其中平凡的,无关的函数依赖和多余的属性.
    条件

    (1)F 中的每一个函数依赖的依赖因素(右边)只含有单个属性。
    (2)F中没有冗余的函数依赖,即在F中不存在这样的函数依赖X→Y,使得F与F-{X→Y} 等价。
    (3)每个函数依赖的左边没有冗余的属性,即 F 中不存在这样的函数依赖 X→Y,X 有真 子集 W 使得 F-{X→Y}{W→Y}与 F 等价。

    设有关系模式 R(U,F),其中 U={A,B,C,D,E,G),F={AD→E,AC→E, BCD→AG,AB→G,A→C},求 F 的最小函数依赖集?

    第一步:将 F 中的所有的依赖因素化为单个属性。 AD→E,AC→E,BCD→A,BCD→G,AB→G,A→C
    第二步:去掉 F 中的冗余函数依赖。 (
    1)由于 F 中去掉 AD→E,得 F1={AC→E,BCD→A,BCD→G,AB→G,A→C}, AD F1+ =ACDE,包含 E,因此该函数依赖是冗余的,可以从 F 中去掉。
    (2)由于 F1中去掉 AC→E,得 F2={ BCD→A,BCD→G,AB→G,A→C},AC F2+ =AC, 不包含 E,因此该函数依赖不是冗余的,不能从 F1中去掉。
    (3) 由 于 F1 中 去 掉 BCD→A , 得 F3={AC→E , BCD→G , AB→G , A→C} , BCD F3+=BCDG,不包含 A,该函数依赖不是冗余的,不能从 F1中去掉。
    (4) 由 于 F1 中 去 掉 BCD→G , 得 F4={AC→E , BCD→A , AB→G , A→C} , BCD F4+ =ABCDEG,包含 G,因此该函数依赖是冗余的,可以从 F1中去掉。
    (5)由于 F4中去掉 AB→G,得 F5={ AC→E,BCD→A,A→C}, **AB F5+**=ABCE,不 包含 G,因此该函数依赖不是冗余的,不能从 F4中去掉。
    (6)由于 F4中去掉 A→C,得 F6={AC→E,BCD→A,AB→G}, A F6+=A,不包含 C, 因此该函数依赖不是冗余的,不能从 F4中去掉。 因此,F4={AC→E,BCD→A,AB→G,A→C}。
    第三步:去掉 F4中的所有决定因素的冗余属性。方法是在某个决定因素中去掉其中的 一个属性,看看是否依然能决定依赖因素。
    (1)对于 AC→E,若去掉 A,C 的闭包不含 E,故 A 不是冗余属性,不能去掉;若去掉 C,A 的闭包含 E,故 C 是冗余属性,可以去掉。
    (2)对于 BCD→A,若去掉 B,CD 的闭包不含 A,故 B 不是冗余属性,不能去掉;同理 C 和 D 也不是冗余属性。
    3)对于 AB→G,若去掉 A,B 的闭包不含 G,故 A 不是冗余属性,不能去掉,同理 B 也不是冗余属性。 因此,Fm={A→E,BCD→A,AB→G,A→C}

    结论:
    F 与它的最小函数依赖集是等价的。
    由于在求解过程中对属性和函数依赖的 处理顺序的关系,
    因此每个函数依赖集 F 不一定只有一个最小函数依赖集!

    END!!!
    在这里插入图片描述

    展开全文
  • 此篇文章总结了一些关于数据库术语的一些概念,也加上自己初步的一些浅显的理解,希望可以帮到大家,有错误的地方非常欢迎大家...数据库:长期存储计算机内、有组织的、可共享的大量数据的集合PS: 可理解为按...
  • 数据数据就是数据库存储的基本数据,比如学生的学号、学生的班级 数据库:存放数据的仓库 数据库管理系统:数据库软件,如MySQL、Oracle 数据库系统:数据库+数据库管理系统+应用程序+数据库管理员(大佬) 实体...
  • 目录数据库系统原理-函数依赖和关系模式分解第一范式如何处理非原子值原子性关系数据库设计中易犯的错误模式分解无损连接分解优化关系模式的步骤函数依赖函数依赖定义函数依赖的使用函数依赖集的闭包Armstrong公理...
  • 关系数据结构

    千次阅读 2017-11-25 09:34:07
    1、无限关系数据库系统是无意义的,限定关系数据模型的关系必须是有限集合。 2、通过为关系的每个列附加一个属性名的方法取消关系属性的有序性。 基本关系的性质 列是同质的,即每一列的分析是...
  • 关系模式设计的问题关系数据库设计要解决的主要问题 什么样的数据库模式才合理? 怎么分解才能满足要求? 衡量的标准是什么? 理论基础是什么? 如何进行实现? 关于好的数据库模式好的数据库模式是不会发生插入...
  • 数据模型和数据模式的理解和区别

    千次阅读 2021-02-10 01:38:22
    数据模型和数据模式的理解和区别       用自己的话总结就是:给定一个数据模型,怎么描述?用数据模式来描述。       怎么理解看下文: 什么是数据...
  • 关系模式的分解与范式

    万次阅读 多人点赞 2017-05-08 16:40:26
    答:因为现有的模式可能会存在一些数据增删改的弊端,比如说:数据冗余太大,更新异常,插入异常,删除异常。因此为了完善数据库的增删改查的功能,需要寻找一种等价的关系模式,使得以上弊端得以解决。 2. 如何...
  • 层次数据模型     定义:层次数据模型是用树状<...其实层次数据模型就是的图形表示就是一个倒立生长的树,由基本数据结构的树(或者二叉树)的定义可知,每棵树都有且仅有一个根节点,其余的...
  • 庞大而且繁杂,具备高级劝退属性——第一次接触它的时候有这种想法一点都不奇怪,但我们认识它,熟悉它并且使用它之后,就会发现这东西很酷,它可以帮助我们更好地整理大量复杂的数据信息。虽然数据库里的东西多而...
  • 数据库:第二章 《关系模式》概念总结

    千次阅读 多人点赞 2020-03-31 11:27:37
    一、关系数据结构及形式化定义 1. 关系模式的相关概念: 域: 域是一组具有相同数据类型的值的集合 笛卡尔积: 域上的一种集合运算 其中每一个元素(d1,d2,d3,……dn)叫做一个元祖,元祖的每一个值叫做一个分量。...
  • 关系型数据库的模式

    千次阅读 2017-12-26 14:25:39
    一、SQL语言支持关系数据库的三级模式结构,分别是模式、外模式和内模式。 二、分别介绍:  1、模式:所有基本表构成了数据库的模式,也叫关系模式。...1、SQL对应的名称:  (1) 关系模式
  • 关系,关系模式,关系模型区别和联系

    万次阅读 多人点赞 2019-12-18 09:40:11
    关系模型:关系模型由关系数据结构,关系操作集合,关系完整性约束三部分组成. 关系和关系模式的区别 关系模式是型,关系是值,关系模式是对关系的描述 关系是关系模式在某一个时刻的状态或者内容,关系模式是静态的,稳定...
  • 数据库关系模式

    千次阅读 2019-11-08 19:28:42
    1.数据库关系模式中三级两映像结构知识点 ( 1)模式(基本表) 模式即逻辑模式,是数据库全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。一个数据库只有一个概念模式,即对应数据库设计的基本表...
  • 关系数据模型的数据结构

    千次阅读 2019-12-16 23:01:15
    一个关系对应通常说的一张表 元组( Tuple) 表的一行即为一个元组 属性( Attribute) 表的一列即为一个属性, 给每一个属性起一个名称即属性名 主码( Key) 表的某个属性组, 它可以唯一确定一个元组。 域...
  • 关系数据模型——三个组成部分

    千次阅读 2021-09-04 15:17:03
    关系模型的三个组成部分,是指关系数据模型的数据结构、关系数据模型的操作集合和关系数据模型的完整性约束。 关系数据模型的数据结构 主要描述数据的类型、内容、性质以及数据间的联系等,是目标类型的集合。 目标...
  • 数据依赖是一个关系内部属性与属性之间的一种约束关系,这种关系是通过属性间值的相等与否体现的数据相关的关系。 多种类型的数据依赖:函数依赖和多值依赖 例如:Sname和Sdept函数依赖于Sno,记做Sno -> Sname...
  • 关系数据模型和关系数据库系统

    万次阅读 2017-02-12 13:10:58
    关系数据模型和关系数据库系统
  • 关系数据模型

    千次阅读 2019-08-14 10:40:01
     关系数据模型是有若干个关系模式组成的集合。关系模式的实例成为关系。每个关系可看为一个二维表,表的行称为元组,用来标识实体集中的一个实体;表的列称为属性,列名即为属性名,属性名不能相同。 ...
  • 数据库 关系模式关系的区别

    千次阅读 2020-03-07 13:54:17
    定义 关系(Relation) D1 × D2 × ··· × Dn 的子集叫做域D1,D2,···,Dn 上的关系,表示...二维表的行定义,即对关系的描述称为关系模式。 一般表示为(属性1,属性2,…,属性n) 例如:老师的关...
  • 数据库原理与应用(5)——关系关系模式关系数据库与关系数据库模式 一、关系的形式化定义和概念 1、关系上域的定义 域(Domain):一组具有相同数据类型的值的集合,又称为值域(用D表示) 整数、实数、和字符...
  • 【数据库系统】关系模式

    千次阅读 2020-04-08 11:48:27
    文章目录前言数据库模式关系模式基本概念关系模式深入了解码合理设计关系模式 前言   关系模型是常用的数据模型,它主要包括三方面的内容,即: 数据结构:表 数据操作:DDL DML DCL(DBAs常用) 完整性约束:...
  • 数据库学习--关系模式

    万次阅读 多人点赞 2018-12-07 05:32:21
    通过网络查找相关文献并参考所给资料进行需求分析,画出系统的 E-R 图,给出实体或联系的属性,标明联系的种类,并写出关系模式。 画ER图没有什么问题,但是关系模式是什么就不知道了。所以,还是有必要学习一下的。...
  • 关系数据理论 问题的提出 规范化 1、函数依赖 2、码 3、范式 4、1NF 5、2NF 6、3NF 7、BCNF 8、多值依赖 9、4NF 10、规范化小结 数据依赖的公理系统 模式的分解 关系数据理论 问题的提出 针对一...
  • 数据库中模式和基本表的关系

    千次阅读 多人点赞 2016-12-01 18:12:33
    模式与数据库、数据库的表的关系: 1个数据库下,可以有多个模式。 1个模式下,可以有0个或多个表 。 首先我来做一个比喻,什么是User,什么是Database,什么是Schema,什么是Table,什么是列,什么是行...
  • 模式与数据库与表的关系

    千次阅读 2018-11-15 17:13:55
    模式与数据库、数据库的表的关系: 1个数据库下,可以有多个模式。  1个模式下,可以有0个或多个表 。    首先我来做一个比喻,什么是User,什么是Database,什么是Schema,什么是Table,什么是列,什么是行...
  • (2)关系模式

    万次阅读 多人点赞 2019-08-24 22:04:48
    目录 1.关系模式数据结构 ...关系模式是一种组织层数据模式。从数据模式三要素(数据结构,数据操作,数据完整性约束)来进行分析: 1.关系模式数据结构 关系模式用二维表来组织数据,这个二...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 688,953
精华内容 275,581
关键字:

在关系数据中模式对应的是