精华内容
下载资源
问答
  • title: 关系数据库设计(F+闭包、候选码求解、范式判断及BCNF分解) ...文章目录F+闭包怎么求关系模式的候选码怎么求范式判断分解成(无损连接的)BCNF范式 F+闭包怎么求 第一步:设最终将成为闭包的属性集是Y,...

    title: 关系数据库设计(F+闭包、候选码求解、范式判断及BCNF分解)
    date: 2018-11-12 21:46:32
    tags: SQL
    categories: 数据库、SQL
    这是基于github的个人博客:Josonlee’s Blog


    F+闭包怎么求

    • 第一步:设最终将成为闭包的属性集是Y,把Y初始化为X;
    • 第二步:检查F中的每一个函数依赖A→B,如果属性集A中所有属性均在Y中,而B中有的属性不在Y中,则将其加入到Y中;
    • 第三步:重复第二步,直到没有属性可以添加到属性集Y中为止。 最后得到的Y就是X+

    X是题目会给出的,求谁(即X)的闭包;Y是最后所求得的闭包

    设关系R(A,B,C,D,E,G)有函数依赖集 F={AB→C,BC→AD,D→E,CG→B},求AB的闭包

    X = {A、B} {A、B}+ = Y ={A、B、C、D、E}

    由上可知,F逻辑蕴涵AB->D (因为D被{A、B}+包含)

    关系模式的候选码怎么求

    候选码:能唯一 完全函数依赖确定元组 的属性(或属性集合);候选码的闭包是全集U,没有冗杂

    对应R< U、F>(U是属性集,F是函数依赖集)

    • 如果有属性不在F中出现,那么它必须包含在候选码中
    • 如果有属性在所有函数依赖中一直存在于左边,则它必包含在候选码中;同理只在右边出现过的属性一定不属于候选码
    • 如果有属性或属性组能唯一标识元组,则它就是候选码

    先用前两条,都不满足就凭借最后一条一个一个找

    有时候选码不止一个,都细分一下

    范式判断

    • 候选码K:若K(属性或属性集合)可以完全函数依赖确定全部属性U,则K就是候选码
    • 主属性:候选码的子集
    • 1NF:【最基本的】 关系模式R的所有属性 域都是原子的(不可分的)
    • 2NF:不存在非主属性对候选码部分函数依赖(也就是说非主属性完全函数依赖于候选码
    • 3NF:不存在非主属性对候选码传递依赖(第三范式又可描述为:表中不存在可以确定其他非主属性的非主属性)
    • BCNF:只要属性或属性组A能够决定任何一个属性B,则A的子集中必须有候选键(F的左侧包含超码)

    范式之间是包含关系,1NF>2NF>3NF>BCNF(这里>表示包含)

    数据库设计三大范式与BCNF,学习笔记

    分解成(无损连接的)BCNF范式

    对于R<U、F>

    • 初始化 result={R}
    • 找到R中的一个模式S不属于BCNF,且F+中存在一个 X->Y (Y不包含于X),X也不是S的候选码,则S就能分解为 {S1、S2}S1=XY,S2=(S-A)X ,用 {S1、S2} 代替result中的 {S}
    • 继续执行上面这步直到result中所有关系模式都是BCNF

    例:关系模式 R<U,F> ,其中 U={C,T,H,R,S,G}F={CS→G,C→T,TH→R,HR→C,HS→R},将其分解成BCNF并保持无损连接

    在这里插入图片描述
    图片引用自:四、转换成BCNF的保持无损连接的分解

    例:关系模式R<U,F>,其中:U={A,B,C,D,E}F={A→C,C→D,B→C,DE→C,CE→A},将其分解成BCNF并保持无损连接。

    result={ {A、C}、{B、D}、{A、B、E} }


    这是基于github的个人博客:Josonlee’s Blog
    更多SQL相关内容可在上面博客中找到

    展开全文
  • 最近刚接触asp.net,有很多地方不明白,还请大神给一一指点迷津。 项目背景:要做一个web网站,网站具备以下功能: ...2)我想采用MVC设计模式去构建,其逻辑关系应该是怎样(即数据库怎么同前端和后端连接?)
  • 也可扫下面的码直接关注哦~ 如果你觉得有帮助,想要打赏作者,那么可以通过这个收款码打赏我,金额不重要,心意最重要。主要是我可以通过这个打赏情况来看我的心血有没有价值,嘻嘻。 全网最低价...
  • 一、第三范式(3NF)——相对于BCNF,允许存在主属性对候选码的传递依赖和部分依赖定义:如果关系模式R∈2NF,且每个非主属性都不传递函数依赖于R主关系键,则称R属于第三范式,简称3NF。1、把一个关系模式分解成3NF...

    一、第三范式(3NF)——相对于BCNF,允许存在主属性对候选码的传递依赖和部分依赖

    定义:如果关系模式R∈2NF,且每个非主属性都不传递函数依赖于R的主关系键,则称R属于第三范式,简称3NF。

    1、把一个关系模式分解成3NF,使它具有保持函数依赖性

    算法如下:

    其中提到了最小函数依赖集,那么最小函数依赖集怎么求呢?方法如下:

    举个例子:在R(U,F)中,U=ABCDEG,F={B→D,DG→C,BD→E,AG→B,ADG→BC}

    1.1首先求最小依赖集

    (1)右部属性单一化,F={B→D,DG→C,BD→E,AG→B,ADG→B,ADG→C}

    (2)去掉左边多余属性,只针对非单属性

    DG→C,若去掉D,则(G)+=G不包含C,D保留(不冗余),若去掉G,(D)+=D不包含C,G保留

    BD→E,(D)+=D,(B)+=BDE包含E,则可以B→E代替此函数依赖

    AG→B,(G)+=G,(A)+=A

    ADG→B,(DG)+=DGC,(AG)+=AGB包含B,则可以由AG→B代替

    ADG→C,(DG)+=DGC包含C,则可以由DG→C代替

    所以最小依赖集F={B→D,DG→C,B→E,AG→B}

    (3)去掉多余的依赖

    去掉B→D,(B)+=BE,不包含D,则不冗余,不去掉

    去掉DG→C,(DG)+=DG,不包含C

    去掉B→E,(B)+=BD,不包含E

    去掉AG→B,(AG)+=AG,不包含B

    所以最小依赖集F={B→D,DG→C,B→E,AG→B}

    1.2R中所有属性都在最小依赖集中出现,转下一步

    1.3按照具有相同左部的原则分为:

    R1=BDE,R2=DGC,R3=AGB

    所以最终分解为ρ={R1(BDE),R2(DGC),R3(AGB)}

    2、把一个关系模式分解成为3NF,使它具有保持函数依赖且无损

    算法:step1,求F的规范覆盖Fc

    step2,初始化,置ρ={ }

    step3,逐个考察Fc中的每一个FD:X→Y,如果ρ中的每一个关系模式都不包含XY,则将XY加入ρ中

    step4,考察R的候选码,如果ρ中所有关系模式都不包含R的候选码,则将R的某个候选码加入ρ中

    2.1其中用到了规范覆盖,那么规范覆盖怎么求呢?如下:

    步骤1,合并函数依赖,将Fc中如α1→β1和α1→β2转换成α1→β1β2,得到新函数依赖集F1

    步骤2,去除无关属性,找出F1中α或β中含有无关属性的函数依赖α→β,去除无关属性后,代替原依赖集

    其中步骤2中的无关属性定义:

    有了无关属性的定义后,步骤2比较好解决了。

    举个例子:r(R)=r(A,B,C)和F={A→BC,B→C,A→B,AB→C}计算Fc

    合并:A→BC与A→B合并为A→BC,F1={A→BC,B→C,AB→C}

    去除无关属性(单属性不存在无关属性):

    对于AB→C,多属性在左边,去除AB中的A,r={AB}-{A}=B,(B)+=BC包含C,所以A无关,变为B→C,已存在,F1={B→C,A→BC}

    对于A→BC,多属性在右边,去除BC中的B,F2={B→C,A→C},计算(A)+=AC,不包含B,不无关

    去除BC中的C,F2={B→C,A→B},计算(A)+=AC,包含C,则BC中的C是无关属性

    变为F={B→C,A→B}

    最终规范覆盖Fc={B→C,A→B}

    继续以此题为例,求出候选码,为A,所以依次考察Fc中的BC,初始ρ={},将BC加入ρ中,ρ={R1(BC)}。再考虑AB,ρ中的关系模式不包含AB,则将AB加入ρ中,ρ={R1(BC),R2(AB)}因为候选码A已经在R2中,所以分解结束,最终分解为ρ={R1(BC),R2(AB)}。如果这里最终只有ρ={BC},那么要把候选码A加入进去,则ρ={R1(BC),R2(A)}。这里附上候选码的计算方法:

    二、BC范式——排除了任何属性(主、非主属性)对候选码的部分依赖和传递依赖,主属性之间的传递依赖

    定义:如果关系模式R∈1NF,且所有的函数依赖XY,决定因素X都包含了R的一个候选键,则称R属于BC范式。

    算法:将一个关系模式分解成BCNF

    (1)令ρ={R}

    (2)如果ρ中所有模式都是BCNF,则转(4)

    (3)如果ρ中有一个关系模式S不是BCNF,则S中必能找到一个函数依赖X→A且X不是S的候选键,且A不属于X,设S1=XA,S2=S-A,用分解{S1,S2}代替S,转(2)

    (4)分解结束,输出ρ

    举个例子:将R(A,B,C,D)规范到BCNF,候选键为AC和BC,F={A→B,B→A,AC→D,BC→D}

    令ρ={R(A,B,C,D)},分解为S1(AB),S2(ACD)

    三、第4范式(4NF)

    定义:

    其中涉及到多值依赖的定义,

    最终4NF的分解算法如下:

    ————————————————

    版权声明:本文为CSDN博主「星星,就酱」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

    原文链接:https://blog.csdn.net/yuyang_z/article/details/79115991

    展开全文
  • 3NF、BCNF和4NF基本概念和分解

    万次阅读 多人点赞 2018-01-20 19:28:13
    一、第三范式(3NF)——相对于BCNF,允许存在主属性对候选码的传递依赖和部分依赖 ...其中提到了最小函数依赖集,那么最小函数依赖集怎么求呢?方法如下: 举个例子:在R(U,F)中,U=ABCDEG,F={B→D,

    一、第三范式(3NF)——相对于BCNF,允许存在主属性对候选码的传递依赖和部分依赖

    定义:如果关系模式R∈2NF,且每个非主属性都不传递函数依赖于R的主关系键,则称R属于第三范式,简称3NF。

    1、把一个关系模式分解成3NF,使它具有保持函数依赖性

    算法如下:

    其中提到了最小函数依赖集,那么最小函数依赖集怎么求呢?方法如下:

    举个例子:在R(U,F)中,U=ABCDEG,F={BD,DGC,BDE,AGB,ADGBC}

    1.1首先求最小依赖集

    (1)右部属性单一化,F={BD,DGC,BDE,AGB,ADGB,ADGC}

    (2)去掉左边多余属性,只针对非单属性

    DGC,若去掉D,则G+=G不包含C,D保留(不冗余),若去掉G,(D+=D不包含C,G保留

    BDE,(D+=D,(B+=BDE包含E,则可以BE代替此函数依赖

    AGB,G+=G,(A+=A

    ADGB,(DG+=DGC,(AG+=AGB包含B,则可以由AGB代替

    ADGC,(DG+=DGC包含C,则可以由DGC代替

    所以最小依赖集F={BD,DGC,BE,AGB}

    (3)去掉多余的依赖

    去掉BD,(B+=BE,不包含D,则不冗余,不去掉

    去掉DGC,(DG+=DG,不包含C

    去掉BE,(B+=BD,不包含E

    去掉AGB,AG+=AG,不包含B

    所以最小依赖集F={BD,DGC,BE,AGB}

    1.2R中所有属性都在最小依赖集中出现,转下一步

    1.3按照具有相同左部的原则分为:

    R1=BDE,R2=DGC,R3=AGB

    所以最终分解为ρ={R1(BDE),R2(DGC),R3(AGB)}

    2、把一个关系模式分解成为3NF,使它具有保持函数依赖且无损

    算法:step1,求F的规范覆盖Fc

      step2,初始化,置ρ={ }

      step3,逐个考察Fc中的每一个FD:XY,如果ρ中的每一个关系模式都不包含XY,则将XY加入ρ

       step4,考察R的候选码,如果ρ中所有关系模式都不包含R的候选码,则将R的某个候选码加入ρ

    2.1其中用到了规范覆盖,那么规范覆盖怎么求呢?如下:

    步骤1,合并函数依赖,将Fc中如α1→β1α1β2转换成α1→β1β2,得到新函数依赖集F1

    步骤2,去除无关属性,找出F1αβ中含有无关属性的函数依赖α→β,去除无关属性后,代替原依赖集

    其中步骤2中的无关属性定义:

    有了无关属性的定义后,步骤2比较好解决了。

    举个例子:r(R)=r(A,B,C)和F={ABC,BC,AB,ABC}计算Fc

    合并:ABC与AB合并为ABC,F1={ABC,BC,ABC}

    去除无关属性(单属性不存在无关属性):

    对于ABC,多属性在左边,去除AB中的A,r={AB}-{A}=B,(B+=BC包含C,所以A无关,变为BC,已存在,F1={BC,ABC}

    对于ABC,多属性在右边,去除BC中的B,F2={BC,AC},计算(A+=AC,不包含B,不无关

                                                 去除BC中的C,F2={BC,AB},计算(A+=AC,包含C,则BC中的C是无关属性

    变为F={BC,AB}

    最终规范覆盖Fc={BC,AB}

    继续以此题为例,求出候选码,为A,所以依次考察Fc中的BC,初始ρ={},将BC加入ρ中,ρ={R1(BC)}。再考虑AB,ρ中的关系模式不包含AB,则将AB加入ρ中,ρ={R1(BC),R2(AB)}因为候选码A已经在R2中,所以分解结束,最终分解为ρ={R1(BC),R2(AB)}。如果这里最终只有ρ={BC},那么要把候选码A加入进去,则ρ={R1(BC),R2(A)}。这里附上候选码的计算方法:

    二、BC范式——排除了任何属性(主、非主属性)对候选码的部分依赖和传递依赖,主属性之间的传递依赖

    定义:如果关系模式R∈1NF,且所有的函数依赖XY,决定因素X都包含了R的一个候选键,则称R属于BC范式。

    算法:将一个关系模式分解成BCNF

    (1)令ρ={R}

    (2)如果ρ中所有模式都是BCNF,则转(4)

    (3)如果ρ中有一个关系模式S不是BCNF,则S中必能找到一个函数依赖XA且X不是S的候选键,且A不属于X,设S1=XA,S2=S-A,用分解{S1,S2}代替S,转(2)

    (4)分解结束,输出ρ

    举个例子:将R(A,B,C,D)规范到BCNF,候选键为AC和BC,F={AB,BA,ACD,BCD}

    ρ={R(A,B,C,D)},分解为S1(AB),S2(ACD)

    三、第4范式(4NF)

    定义:

    其中涉及到多值依赖的定义,

    最终4NF的分解算法如下:

    展开全文
  • asp.net知识库

    2015-06-18 08:45:45
    2分法-通用存储过程分页(top max模式)版本(性能相对之前not in版本极大提高) 分页存储过程:排序反转分页法 优化后通用分页存储过程 sql语句 一些Select检索高级用法 SQL server 2005中新增排序函数及应用 ...
  • 1.2.8 对大数据平台中元数据管理是怎么理解,元数据收集管理体系是怎么,会对大数据应用有什么样影响 1.2.9 你理解常见如阿里,和友商大数据平台技术体系差异以及发展趋势和技术瓶颈,在存储和计算两...
  • 软件设计规范

    2015-03-11 11:57:50
    须知,经过培训,莫尔司码的电报发报可以比说话语速还快!因此,计算机语言前途迷茫;实际上也确实迷茫,历史上语言层出不穷本身就说明了问题,至今仍然如此。在当今,必须建立这样观点:语言是因人而异;...
  • WIN XP蓝屏代码大全

    2013-08-08 12:29:21
    KMODE_EXCEPTION_NOT_HANDLED ***其中错误第一部分是停机(Stop Code)也就是STOP 0x0000001E, 用于识别已发生错误类型, 错误第二部分是被括号括起来四个数字集, 表示随机开发人员定义参数(这个参数对于...
  • C#微软培训教材(高清PDF)

    千次下载 热门讨论 2009-07-30 08:51:17
    7.4 关系操作符和关系表达式.65 <<page 2>> page begin==================== 7.5 逻辑操作符和逻辑表达式.68 7.6 位 运 算 .69 7.7 其它特殊操作符 .72 7.8 小 结 .77 第八章 流 程 控 制 .79 8.1 ...
  • C#微软培训资料

    2014-01-22 14:10:17
    7.4 关系操作符和关系表达式.65 <<page 2>> page begin==================== 7.5 逻辑操作符和逻辑表达式.68 7.6 位 运 算 .69 7.7 其它特殊操作符 .72 7.8 小 结 .77 第八章 流 程 控 制 .79 8.1 ...
  • 最新Java面试宝典pdf版

    热门讨论 2011-08-31 11:29:22
    53、线程基本概念、线程基本状态以及状态之间的关系 34 54、简述synchronized和java.util.concurrent.locks.Lock异同 ? 34 55、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序...
  • Java面试宝典-经典

    2015-03-28 21:44:36
    53、线程基本概念、线程基本状态以及状态之间的关系 34 54、简述synchronized和java.util.concurrent.locks.Lock异同 ? 34 55、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序...
  • Java面试宝典2010版

    2011-06-27 09:48:27
    53、线程基本概念、线程基本状态以及状态之间的关系 54、简述synchronized和java.util.concurrent.locks.Lock异同 ? 55、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 ...
  • java面试宝典2012

    2012-12-16 20:43:41
    53、线程基本概念、线程基本状态以及状态之间的关系 37 54、简述synchronized和java.util.concurrent.locks.Lock异同 ? 38 55、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序...
  • Java面试宝典2012版

    2012-12-03 21:57:42
    53、线程基本概念、线程基本状态以及状态之间的关系 34 54、简述synchronized和java.util.concurrent.locks.Lock异同 ? 34 55、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出...
  • 53、线程基本概念、线程基本状态以及状态之间的关系 34 54、简述synchronized和java.util.concurrent.locks.Lock异同 ? 34 55、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序...
  • Java面试宝典2012新版

    2012-06-26 19:20:00
    53、线程基本概念、线程基本状态以及状态之间的关系 34 54、简述synchronized和java.util.concurrent.locks.Lock异同 ? 34 55、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序...
  • Java面试笔试资料大全

    热门讨论 2011-07-22 14:33:56
    53、线程基本概念、线程基本状态以及状态之间的关系 34 54、简述synchronized和java.util.concurrent.locks.Lock异同 ? 34 55、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序...
  • JAVA面试宝典2010

    2011-12-20 16:13:24
    53、线程基本概念、线程基本状态以及状态之间的关系 34 54、简述synchronized和java.util.concurrent.locks.Lock异同 ? 34 55、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序...
  • 53、线程基本概念、线程基本状态以及状态之间的关系 34 54、简述synchronized和java.util.concurrent.locks.Lock异同 ? 34 55、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序...
  • java 面试题 总结

    2009-09-16 08:45:34
    redirect就是服务端根据逻辑,发送一个状态,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求所有参数重新请求,所以session,request参数都可以获取。 20、EJB与JAVA BEAN区别? Java Bean 是可复用...
  • 3.8.3 用test命令表达式值 51 3.8.4 执行带命令行参数shell程序 52 3.8.5 分析shell脚本 52 3.8.6 Korn shell编程中流控制结构 53 3.9 管理UNIX进程 55 3.9.1 用ps命令收集进程信息 55 3.9.2 ...
  • 1 理解计算机是怎么运行程序 2 运行一个已解释程序 3 运行一个已编译程序 4 C++在哪里 5 理解Visual c++中程序文件 6 创建源代码文件 7 理解并创建头文件 第二章 结构和语法 8 理解计算机语言 9 理解计算机...
  • 1 理解计算机是怎么运行程序 2 运行一个已解释程序 3 运行一个已编译程序 4 C++在哪里 5 理解Visual c++中程序文件 6 创建源代码文件 7 理解并创建头文件 第二章 结构和语法 8 理解计算机语言 9 理解计算机...
  • 1 理解计算机是怎么运行程序 2 运行一个已解释程序 3 运行一个已编译程序 4 C++在哪里 5 理解Visual c++中程序文件 6 创建源代码文件 7 理解并创建头文件 第二章 结构和语法 8 理解计算机语言 9 理解计算机...

空空如也

空空如也

1 2
收藏数 39
精华内容 15
关键字:

关系模式的码怎么求