精华内容
下载资源
问答
  • 3nf范式分解例题
    千次阅读
    2021-05-01 19:34:26

    前言

    模式分解的本质是将一个大的模式分解为几个小的模式,在模式分解至少应达到3NF,而且要保证是无损连接性的,分解时尽可能保持函数依赖。事实证明,保持无损连接和保持函数依赖,可以达到3NF,但不一定能达到BCNF。以下具体说明保持函数依赖3NF求解算法

    算法描述

    假设:关系模式R<U,F>,其中U属性集,F为属性集上的函数依赖,将其分解成3NF并保持函数依赖算法如下:
    ①求F最小依赖集F‘;极小依赖集算法参考地址:
    ②将既不在左部,又不在右部的属性,构成一个独立的一个关系模式;
    ③若有唯一依赖X->A,且XA=R,则分解只有一个R,结束;
    ④将左部相同的所有函数依赖合并为一个新关系。每一个X i _i i->A i _i i,构成一个关系子模式R i _i i={X i _i iA i _i i}

    示例

    例1】关系模式R<U,F>,其中U={C,T,H,R,S,G},F={CS→G,C→T,TH→R,HR→C,HS→R},将其分解成3NF并保持函数依赖.
    解:第一步: 求F的极小依赖集F’,
    F‘=={CS→G,C→T,TH→R,HR→C,HS→R}
    第二步: 不存在既不在左部,又不在右部的属性;
    第三步: 函数依赖左部相同的函数依赖合并,将合并后的每个函数依赖形成一个新的关系模式,分解后ρ={R 1 _1 1(CSG),R 2 _2 2(CT),R 3 _3 3(THR),R 4 _4 4(HRC),R 5 _5 5(HSR)}

    例2】设关系模式R(ABCDE)上的函数依赖集F={A→BC, BCD→E, B→D, A→D, E→A},将其分解成3NF并保持函数依赖.
    解:第一步: 求F的极小依赖集F’
    将右部单一化:{A→B,A→C, BCD→E, B→D, A→D, E→A}
    去掉多余的函数依赖
    假设去掉:A→B,F={A→C, BCD→E, B→D, A→D, E→A},求A F + _F^+ F+={ACD},不包含B,A→B不能去掉
    假设去掉:A→C,F={A→B,BCD→E, B→D, A→D, E→A},求A F + _F^+ F+={ABD},不包含C,A→C不能去掉
    假设去掉:BCD→C,F={A→B,A→C, B→D, A→D, E→A},求BCD F + _F^+ F+={BCD},不包含E,BCD→C不能去掉
    假设去掉:B→D,F={A→B,A→C, BCD→E, A→D, E→A},求B F + _F^+ F+={BD},不包含E,B→D不能去掉
    假设去掉:A→D,F={A→B,A→C, BCD→E, B→D, E→A},求A F + _F^+ F+={ABCD},包含D,A→D可以去掉,得到 F={A→B,A→C, BCD→E, B→D, E→A}
    假设去掉:E→A, F={A→B,A→C, BCD→E, B→D},求E F + _F^+ F+={E},不包含A,E→A不能去掉
    此时F={A→B,A→C, BCD→E, B→D, E→A}
    去掉左部的冗余
    尝试使用BC→E代替BCD→E,F={A→B,A→C, BCD→E, B→D, E→A},BC F + _F^+ F+={BCDE},包含E,可以使用BC代替BCD→E;
    F={A→B,A→C, BC→E, B→D, E→A}
    尝试使用B→E代替BC→E,F={A→B,A→C, BC→E, B→D, E→A},B F + _F^+ F+={BD},不包含E;不可替换
    尝试使用C→E代替BC→E,F={A→B,A→C, BC→E, B→D, E→A},C F + _F^+ F+={C},不包含E;尝试使用D→E,D F + _F^+ F+={D},不包含E,不可替换
    因此最小依赖集F‘={A→B,A→C, BC→E, B→D, E→A}
    第二步: 不存在既不在左部,又不在右部的属性;
    第三步: 函数依赖左部相同的函数依赖合并,将合并后的每个函数依赖形成一个新的关系模式,分解后ρ={R 1 _1 1(ABC),R 2 _2 2(BCE),R 3 _3 3(BD),R 4 _4 4(EA)}

    结论

    保持函数依赖3NF分解算法重点是在求极小函数依赖集,完成后将左部相同的函数依赖连同其右部合成一个关系模式,把没有出现在任何一个函数依赖的属性合成一个关系模式。

    更多相关内容
  • 在模式分解之前,首先对于1NF,2NF,3NF,BCNF做一个简明扼要的介绍。 1NF是指数据库表的每一列都是不可分割的基本数据项,即实体中的某个属性不能有多个值或者不能有重复的属性。 2NF要求属性...

    本来是为了复习数据库期末考试,结果找了一圈都没有发现比较好的解释,通过查阅资料和总结,为大家提供通俗易懂的解法,一听就会!并且配有速记口诀!介是你没有玩过的船新版本包含最小依赖集求法候选码求法

    在模式分解之前,首先对于1NF,2NF,3NF,BCNF做一个简明扼要的介绍。

    1NF是指数据库表的每一列都是不可分割的基本数据项,即实体中的某个属性不能有多个值或者不能有重复的属性。

    2NF要求属性完全依赖于主键,不能存在仅依赖主关键字一部分的属性。

    3NF要求每一个非主属性既不部分依赖于码也不传递依赖于码。

    BCNF消除了主属性对候选码的部分和传递函数依赖。

    注:1.相对于BCNF,3NF允许存在主属性对候选码的传递依赖和部分依赖。

    2.BCNF比较抽象,略作解释:在学生信息表里,学号是一个候选码,学号可确定学生姓名;(班级,学生姓名)也是一组候选码,有(班级,学生姓名)->学号,因此在主属性间形成了传递依赖。

    3.若对概念不清晰,关于码、候选码、主属性、非主属性的解释可参看:

    https://blog.csdn.net/sumaliqinghua/article/details/85872446#commentBox

    我们的重点是讲解范式分解:

    一、3NF分解

    分为保持依赖和无损连接

    为了说明求解保持依赖,我们先要会求最小依赖集

    (1)最小依赖集求法:

    口诀:右侧先拆单,依赖依次删。

               还原即可删,再拆左非单。

    通过求下面的最小依赖集对口诀进行解释,

    (2)3NF分解:

    口诀:

    保函依赖分解题,先求最小依赖集。

    依赖两侧未出现,分成子集放一边,剩余依赖变子集。

    若要连接成无损,再添候选做子集。

    下面通过几道例题讲解口诀:

    例1.已知R(ABCDE), F={A ->D,E->D,D->B,BC->D,DC->A}求保持函数依赖的3NF分解,和具有无损连接性及保持函数依赖的3NF分解

    第一步:保函依赖分解题,先求最小依赖集。先求出R的最小依赖集,可得F={A ->D,E->D,D->B,BC->D,DC->A}

    第二步:依赖两侧未出现,分成子集放一边。首先可以发现没有不出现在两侧的元素不用单独分出一个子集,“剩余依赖变子集”然后我们将各依赖分别划分为子集得到:{AD} {ED} {DB} {BCD} {DCA},即为所求保持函数依赖的3NF分解

    第三步:若要连接成无损,再添候选做子集。

    (1)候选码的求解:所谓候选码即能决定整个关系的,我们通过找未出现在依赖右边的和两侧均未出现的元素即可求得,

    (2)可以发现C E未出现在右边,因此候选码为{CE}。故所求具有无损连接性及保持函数依赖的3NF分解为{AD} {ED} {DB} {BCD} {DCA} {CE}

     

    例2.关系模式R,有U={A,B,C,D,E,G},F={B->G,CE->B,C->A,CE->G,B->D,C->D},将关系模式分解为3NF且保持函数依赖

    将关系模式分解为3NF且保持函数依赖:

    第一步:保函依赖分解题,先求最小依赖集。先求出R的最小依赖集,

    假设B->G冗余,则(B)+=BD,没有G故不冗余。

    假设CE->B冗余,则(CE)+=CEGDA,没有B故不冗余。

    假设C->A冗余,则(C)+=CD,故不冗余。

    一次可以得到最小函数依赖集Fm={B->G,CE->B,C->A,B->D,C->D}

    第二步:依赖两侧未出现,分成子集放一边,剩余依赖变子集。首先可以发现没有不出现在两侧的元素,然后我们将各依赖分别划分为子集得{BG} {CEB} {CA} {BD} {CD},即为所求保持函数依赖的3NF分解

    第三步:若要连接成无损,再添候选做子集。找到R的一个候选码为{CE}。故所求具有无损连接性及保持函数依赖的3NF分解为{BG} {CEB} {CA} {BD} {CD} {CE} (注:范式分解并不唯一,正确即可)

     

    二、BCNF分解:

    将关系模式R<U,F>分解为一个BCNF的基本步骤是

    1)先求最小依赖集,候码非码成子集

    3)余下左侧全候码,完成BCNF题。

    例.关系模式R,有U={A,B,C,D,E,G},F={B->G,CE->B,C->A,CE->G,B->D,C->D},将关系模式分解为3NF且保持函数依赖

    将关系模式分解为3NF且保持函数依赖:

    第一步:先求最小依赖集。可以发现CE->G多余,因此最小依赖集为F={B->G,CE->B,C->A,B->D,C->D}。

    第二步:候码非码成子集。由于候选码为(CE)因此将CE->B划分出子集(BCE),而B->G,B->D左侧均不含主属性(C、E)中的任何一个故划分出(BG),(BD)

    第三步:此时剩余依赖F={C->A,C->D}剩余元素{A,C,D}检查发现函数依赖左侧都是候选码即完成BCNF分解,如果不满足则继续分解余下的。

    于是BCNF分解的最后结果为{(BG),(BD),(ACD),(BCE)}。

    如有疑问请在评论区留言,如有帮助麻烦右上角点个赞~~蟹蟹

    三、总结

    1.闭包

    2.候选码

    3.最小依赖集

    4.3NF分解

    5.BCNF分解

    展开全文
  • 数据库关系运算范式分解例题

    千次阅读 2020-11-21 18:26:06
    3.假设A能推D:那么每个A2所对应的D的属性值应该一样,由于D的第四行和第五行分别是D1和D2,故A不能推D。 二、 对B和C和D,以及AB,AC,AD,BC,BD分别作上述假设, 发现只存在C推D,AB推C,AB推D三种关系, 那么主键为AB。...

    在这里插入图片描述

    一、

    1.假设A能推B:那么每个A1所对应的B的属性值应该一样,由于B的第一行和第三行分别是B1和B3,故A不能推B。
    2.假设A能推C:那么每个A1所对应的C的属性值应该一样,由于C的第一行和第三行分别是C1和C2,故A不能推C。
    3.假设A能推D:那么每个A2所对应的D的属性值应该一样,由于D的第四行和第五行分别是D1和D2,故A不能推D。

    二、

    对B和C和D,以及AB,AC,AD,BC,BD分别作上述假设,
    发现只存在C推D,AB推C,AB推D三种关系,
    那么主键为AB
    由于没有非主属性部分依赖于主属性(即非主属性们均完全依赖于主属性),故为2NF
    从C推D,AB推C里,得知非主属性D传递依赖于主属性AB(尽管AB可以直接推D,这里仍存在传递依赖),则消除该传递依赖即可满足3NF。
    分为**R1(ABC),R2(CD)**即可。

    展开全文
  • 关于数据库的考题 练习题 很有帮助 范式分解例题 E-R图
  • 近期在学习数据库范式,这很是让博主纠结了一阵呢,所以简单总结一下,奉上一点案例分析,与您分享~   一、概念        R-关系模式      r-关系 &nb...

    https://blog.csdn.net/SevenGirl2017/article/details/77678233

    一、概念

         R-关系模式

         r-关系

         U-属性集

         FD-函数依赖

         X→Y:"X函数决定Y","Y函数依赖于X"。

         A⊆B   A包含于B,A小,B大,B→A

         元组:二维表中的行

         属性:二维表中的列

         超键:能唯一标识元祖的属性集

         候选键:不含多余属性的超建

         主键:用户选作元组标识的候选键

         外键:对于当前模式而言,是另一模式下的主键。

         主属性:构成候选键的属性

         局部依赖与完全依赖:对于FD W→A,如果存在X包含于W,有X→A成立,那么称W→A是局部依赖,否则成W→A是完全依赖。

     

    二、关系+例子

    1NF

           每个关系r的属性值为不可分的原子值

           当赵同学有两个手机号时,他不能将两个手机号存储在一个属性框中,需要分开存放,如下表所示。

           错误:

                 

           正确一:

                 

           正确二:

                

     

    2NF

      满足1NF,非主属性完全函数依赖于候选键(左部不可约)

     

      若一张表的数据包括:“学号、姓名、课程号、授课老师”中,设“学号、课程号”为主键,其中,一门课程可以有多个老师进行授课。会存在如下关系:

                

     

                      (学号、课程号)→姓名

                      学号→姓名

                                     ---------为局部依赖,即候选键的一部分可以推出非主属性系名

     

             可分解为两个表,达到完全依赖:“学号、姓名”与“学号、课程号、授课老师”

                                

     

    3NF

      满足2NF,消除非主属性对候选键的传递依赖

     

      若一张表的数据包括:“学号、系名、系主任”,其中“学号”为主键,存在如下关系:

              

     

                    学号→系名→系主任

                    学号→系主任

                                ---------为传递依赖

     

            同样可分解为两张表:“学号、系名”和“系名、系主任”

                           

         对于第三范式,我们反过来理解也是可以的,在表1(学号、系名),表2(系名、系主任)中,学号和系名都是各自表中的主键,所以系名依赖于学号,系主任依赖于系名。当三个数据放置在一张表中时,学号是可以推出系主任的。你可以理解为通过看学生张小二的学号,是可以推理出他的系主任是谁的。

     

    BCNF

       满足3NF,消除每一属性对候选键的传递依赖

     

       若一张表的数据包括:“书号、书名、作者”其中,书号是唯一的,书名允许相同,一个书号对应一本书。一本书的作者可以多个,但是同一个作者所参与编著的书名应该是不同,希望没有说晕,看图看图。

                       

          存在关系:

                      书号→书名

                      (书名、作者)→书号

          其中,每一个属性都为主属性,但是上述关系存在传递依赖,不能是BCNF。即:

                      (书名、作者)→书号→书名

                       (书名、作者)→书名   

          我们可以通过分解为两张表,实现BCNF。

                                

     

    4NF

       满足BCNF,消除非平凡且非FD的多值依赖(MVD)

       非形式说:只要两个独立的1:N联系出现在一个关系中,那么就可能出现多只依赖。举例说明。

       一个表中存在三个数据:“课程、学生、先修课”。假设2017级的计算机专业学生想要学习JAVA课程,那么他们需要先学习VB、C#、BS三门课,才可以选择进行JAVA课程。存在关系:

    课程→学生

    课程→先修课

        两个均是1:N的关系,当出现在一张表的时候,会出现大量的冗余。所以就我们需要分解它,减少冗余。(Ps:该例子主要是为了说明概念帮助理解,具体应用中不会只是这样的简单粗暴的。)

                                   

      说明:关于上面的例子,主要是为了帮助理解范式,如有错误,敬请各位读者指出。感谢您的阅读。

    展开全文
  • 数据库范式1NF 2NF 3NF BCNF实例分解

    千次阅读 2014-03-17 19:09:49
    设计范式范式,数据库设计范式,数据库的设计范式)是符合某一种级别...目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式3NF)、第四范式(4NF)、第五范式(5NF)和第六范式(6NF)。满足
  • 依赖又无损连接地分解成第三范式分解正确 的是 A.p={R1(A2,A3, A5), R2(A1,A3,A6), R3(A2,A4,A6) } B.p={R1(A2,A3, A5), R2(A1,A3,A6), R3(A2,A4,A6),R4(A1,A2) } C.p= {R1(A2,A3.A5), R2(A1,A2,A3,A
  • 数据库中转化为3NF的几个分解算法

    千次阅读 多人点赞 2019-03-03 17:11:35
    算法一:将关系R转化3NF的保持函数依赖的分解 第一步:首先计算出F的最小依赖集(算法详见最小函数依赖),得到F'={A→BC,AD→E,E→D}。 第二步:观察U中是否有属性不在F'中的出现,如果有,则这个个属性组成一对...
  • 三大范式及BCNF范式分解集合

    千次阅读 多人点赞 2020-03-22 10:20:07
    规范的要求从低到高分别为:1NF 2NF 3NF BCNF 4NF 5NF 在日常使用中数据库能达到3NF的要求就已经很严苛,根据BCNF划分新的表一般也不会超过一次。但谁叫我们要做呢~~ 范式对应要求 级别高的范式包含比...
  • 范式范式在计算机方面运用广泛,在计算机二级三级均有涉及到,今天就来讲讲范式。要是能够认真的看完,相信一定能够理解的。 ​ 在讲范式之前,我们先来了解有关范式的基本概念,听懂了有利于后面的学习。 函数...
  • 前言在理解模式分解的时候,发现模式分解算法比较难懂。于是想出了一个通俗易懂的解法,并且配有速记口诀!...范式介绍这里也对1NF,2NF,3NF,BCNF做一个简明扼要的介绍。1NF是指数据库表的每一列都是不可分...
  • 数据库范式概念以及范式分解详解

    千次阅读 2021-01-03 15:50:49
    ) 三范式分解为保持函数依赖的分解 步骤如下: 例题: 设R,其中: U={C, T, H, R, S, G, X, Y, Z}, F={C→T, CS→G, HR→C,HS→ R, TH→ R, C→X}, ​ 将R 分解为3NF,且保持函数依赖。 解: 求F的最小函数依赖集...
  • 【通俗易懂】关系模式范式分解教程 3NF与BCNF口诀!小白也能看懂原创置顶 沃兹基.硕德 最后发布于2019-01-10 18:26:14 阅读数 13082 收藏展开本来是为了复习数据库期末考试,结果找了一圈都没有发现比较好的解释,...
  • 数据库期末考试预习之候选码,最小函数依赖集,3NF分解算法,判断第几范式
  • 6.2 规范化 6.2.5 第三范式3NF
  • 数据库范式简单讲解(1NF、2NF3NF、4NF、BCNF)

    万次阅读 多人点赞 2017-08-29 15:03:19
    近期在学习数据库范式,这很是让博主纠结了一阵呢,所以简单总结一下,奉上一点案例分析,与您分享~   一、概念    R-关系模式  r-关系  U-属性集  FD-函数依赖  X→Y:"X函数决定Y",&...
  • 分解为具有无损连接性和依赖保持性的3NF的方法以及例子通用方法例子 通用方法 输入:关系模式R<U, F> 输出:具有无损连接性和函数依赖保持性的3NF分解ρ = {R1, R2, …, Rk}. 方法: (1)最小化。求F的最小函数...
  • 数据库原理 范式例题

    千次阅读 2021-04-26 10:30:33
    3NF BCNF 例题 Y(X1,X2,X3,X4)Y(X1,X2,X3,X4)Y(X1,X2,X3,X4) (X1,X2)→X3(X1,X2) \rightarrow X3(X1,X2)→X3 X2→X4X2\rightarrow X4X2→X4 写出 候选码 和 所属范式 (1)分析 ∵\because∵ X2→X4X2\right...
  • 概述 范式:英文名是Normal Form,它是英国...目前关系数据库有6种范式,依次是:第一范式(1NF)、第二范式(2NF)、第三范式3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。 ...
  • 数据库考试-范式分解

    2010-01-04 22:34:34
    范式的分解,如何把其他范式分解成第三范式。
  • 数据库(范式专项练习及答案)

    千次阅读 2022-05-11 13:10:36
    黑色字体为题目,绿色字体为答案。 1、设有一个记录各个球队队员每场比赛... (2)说明R不是2NF模式的理由,并把R分解成2NF。 因为含有部分函数依赖,队员编号→球队名,(队员编号,比赛场次)→球队名。 2N......
  • 1NF范式 属性列是不可拆的(原子的) 2NF范式 非主属性完全依赖于候选码 3NF范式 在2NF的基础上不存在非主属性传递依赖于候选码(所有非主属性直接依赖于候选码) BCNF范式 所有依赖的左边都包含候选码 ...
  • 转换成3NF既有无损连接性又保持函数依赖的分解

    千次阅读 多人点赞 2019-06-30 21:32:27
    转换为3NF的保持函数依赖的分解 步骤: 1、求关系模式R<U,F>的最小依赖集Fm。 2、找出所有不在Fm中出现的属性,这些属性构成R0<U0,F0>。把这些属性从U中去掉,剩余的属性仍记为U。 3、若Fm中存在X→A...
  • 数据库范式判断及分解技巧

    万次阅读 多人点赞 2019-01-12 20:44:11
    数据库中的范式是考试中必考的重点,也是应用中比较实用的操作标准。不说废话了,下面将分段来从不同深度开始说。 【前驱知识补充】 函数依赖 简单通俗地说就是属性之间是否有确定的关系,比如:学生表(学号,姓名...
  • 数据库BC范式(BCNF)判断和分解

    万次阅读 多人点赞 2020-05-13 12:33:49
    关系模式R〈U,F〉∈1NF。若X→Y且Y不包含X时X必含有码,则R〈U,F〉∈BCNF。 也就是说,关系模式R〈U,F〉中,若每一个决定因素都包含码,则R〈U,F〉∈BCNF。 由关系模式的定义可以得到如下结论,若R属于BCNF,则R有: 1...
  • 【转】 数据库范式1NF 2NF 3NF BCNF(实例)通俗易懂的讲解 本文对大多数初学数据库原理的同学绝对是个大福利,哈哈,完完整整的看完此篇博文一定能够清晰地理解数据库的四大范式。不懂者留言相互讨论。 ...
  • 转换成3NF的保持无损连接和函数依赖的分解

    万次阅读 多人点赞 2017-05-15 06:35:19
    判别一个分解的无损连接性 算法的伪代码描述为: 例题解析 对于分解为两个关系模式的情况,有如下的定理: =================================================================================...
  • 数据库范式的经典例题,what are you 弄啥嘞?

    万次阅读 多人点赞 2020-04-14 00:19:23
    7道经典例题 有不足的地方,大家可以指出来!!! 规范化的关系模式中,所有属性都必须是( )。 设关系模式R属于第一范式,若在R中消除了部分函数依赖,则R至少属于( )。 解析:第二范式是完全依赖,消除了...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 744
精华内容 297
关键字:

3nf范式分解例题

友情链接: calculator.rar