对于不含孤立属性的对于Student表而言:

{sno,sname,ssex,sage,sdept,cno,cname,cpno,Ccredit,Grade}

令A=Sno, B=Sname, C=Ssex, D=Sage, E=Sdept,F=Cno,G=Cname,H=Cpno, I=Ccredit, J=Grade

根据相对应的属性关系,我们可以得到以下模式:

F={(A→B,A→C, A→D, A→E, F→G, FG→H,FG→I, AF→J)}

第一步:首先按照算法6.3进行3NF,保持依赖的分解:

1.求最小依赖集:

●右单: {A→B,A→C, A→D, A→E, F→G, FG→H,FG→I, AF→J}
●去多余依赖:{A→B,A→C, A→D, A→E, F→G, FG→H,FG→I, AF→J}
●去左多余属性:{A→B,A→C, A→D, A→E, F→G, FG→H,FG→I, AF→J}
●求得最小依赖集为F={A→B,A→C, A→D, A→E, F→G, FG→H,FG→I, AF→J}

2.找出不在F中出现的属性:不存在

3.若有X→A∈F,且XA=U,不成立(因为此时的属性集U中有多个码,不能找到一个唯一的码X,使X→A∈F,且XA=U成立)

4.①按左部分类:U1={A,B,C,D,E}  U2={F,G}  U3={F,G,H,I}  U4={A,F,J}

②合并:U2∈U3,去掉U2

5.若有X→A∈F,且XA=U,则ρ={R},此处应该分别检验U1、U2、U3,

对于U1,X=A,A=B、C、D、E

对于U2,X=F,A=F、G、H、I

对于U3,X=AF,A=J

成立,算法结束

∴所求ρ={R1<U1(A,B,C,D,E),F{A→B,A→C, A→D, A→E}>,

R2<U2(F,G,H,I)>,F{F→G, FG→H,FG→I},R3<U3(A,F,J),F{AF→J}>}

第二步:接下来,按照算法6.4进行既无损连接又保持依赖的分解:

1.求候选码:某一属性组的值能够唯一标识一个元组而其子集不能

需要注意的是,此处需采用全局观念,既要对算法6.3中分解的每一个子模式Ui进行讨论,又要对全局的大模式U进行讨论

对于R1<U1(A,B,C,D,E),F{A→B,A→C, A→D, A→E}>   其码为A

对于R2<U2(F,G,H,I)>,F{F→G, FG→H,FG→I}               其码为F

对于R3<U3(A,F,J),F{AF→J}>}                                       其码为AF

对于全集R<U(A,B,C,D,E,F,G,H,I,),F{...}>而言               其码为AF

2.判断:若有某个Ui,X∈Ui,将R*<X,Fx>从T中去掉,或者Ui∈X,将R*<Ui,Fx>从r中去掉

τ 1=p U{R*<X,Fx>}=p U{R*<{A},{A→B,A→C, A→D,A→E}}

A∈U1={A,B,C,D,E} 满足A=X,X=U1 ,去掉R*<X,Fx>

② τ 2= p U{R*<X,Fx>}=p U{R*<{F},{F→ G,FG→ H,FG→I}>}

F=U2={F,G,H,I} 满足F=X,X∈U2 ,去掉R*<X,Fx>

τ 3=p U{R*<X,Fx>}=p U{R*<{AF},{AF→J}>}

F∈U3={A,F,J} 满足AF=X,X∈U3 ,去掉R*<X,Fx>

τ 4=p U{R*<X,Fx>}=p U{R*<{AF},{∅}>},存在F∈U3={A,F,J} ,去掉R*<X,Fx>

第三步:

结论∶ τ =ρ=R1<U1(A,B,C,D,E),F{A→B, A→C, A→D, A→E}>

R2<U2(F,G,H,I)>,F{F→G, FG→H, FG→l},R3<U3(A,F,J),F{AF→J}>},R4<U4(AFP),∅>}

回代∶

(1)Student<{Sno, Sname,Ssex,Sage, Sdept},{Sno→ Sname, Sno→ Ssex,

Sno→ Sage, Sno→Sdept}>

(2)Course<{Cno, Cname,Cpno, Ccredit},{Sno→ Cname,(Cno,Cname)→Cpno,

(Cno, Cname)→ Ccredit} >

(3)SC<{Sno, Cno, Grade},{(Sno, Cno)→ Grade}>

对于含孤立属性的对于Student表而言:

{sno,sname,ssex,sage,sdept,cno,cname,cpno,Ccredit,Grade,P}

令A=Sno, B=Sname, C=Ssex, D=Sage, E=Sdept,F=Cno,G=Cname,H=Cpno, I=Ccredit, J=Grade

第一步:我们采取跟不含孤立属性相同的方式进行操作,先进行算法6.3的分解:

1.求最小依赖集:

●1.右单: {A→B,A→C, A→D, A→E, F→G, FG→H,FG→I, AF→J}
●2.去多余依赖:{A→B,A→C, A→D, A→E, F→G, FG→H,FG→I, AF→J}
●3.去左多余属性:{A→B,A→C, A→D, A→E, F→G, FG→H,FG→I, AF→J}
●求得最小依赖集为F={A→B,A→C, A→D, A→E, F→G, FG→H,FG→I, AF→J}

2.找出不在F中出现的属性:P,记作U0={P},U=U-U0={A,B,C,D,E,F,G,I,J}

3.若有X→A∈F,且XA=U,不成立

4.①按左部分类:U1={A,B,C,D,E}  U2={F,G}  U3={F,G,H,I}  U4={A,F,J}

②合并:U2∈U3,去掉U2

5.若有X→A∈F,且XA=U,则ρ={R},此处应该分别检验U1、U2、U3,成立,算法结束

∴所求ρ={R1<U1(A,B,C,D,E),F{A→B,A→C, A→D, A→E}>,

R2<U2(F,G,H,I)>,F{F→G, FG→H,FG→I},R3<U3(A,F,J),F{AF→J}>}∪R0<U0(P),∅>

与不含孤立属性的分解不同之处在于,属性集F中未出现的元素P,再最后分解的模式中要加上

第二步:再6.3的基础上进行6.4的分解

1.求候选码:某一属性组的值能够唯一标识一个元组而其子集不能

对于R1<U1(A,B,C,D,E),F{A→B,A→C, A→D, A→E}>   其码为A

对于R2<U2(F,G,H,I)>,F{F→G, FG→H,FG→I}            其码为F

对于R3<U3(A,F,J),F{AF→J}>}                                其码为AF

对于全集R<U(A,B,C,D,E,F,G,H,I,P),F{...}>而言,其候选码必包括孤立属性P

因此,对于全集R而言,其码应为AFP

2.判断:若有某个Ui,X∈Ui,将R*<X,Fx>从T中去掉,或者Ui∈X,将R*<Ui,Fx>从r中去掉

1. τ 1=p U{R*<X,Fx>}=p U{R*<{A},{A→B,A→C, A→D,A→E}}

A∈U1={A,B,C,D,E}满足A=X,X=U1 ,去掉R*<X,Fx>

2. τ 2= p U{R*<X,Fx>}=p U{R*<{F},{F→ G,FG→ H,FG→I}>}

F=U2={F,G,H,I}满足F=X,X∈U2 ,去掉R*<X,Fx>

3. τ 3=p U{R*<X,Fx>}=p U{R*<{AF},{AF→J}>}

F∈U3={A,F,J}满足AF=X,X∈U3 ,去掉R*<X,Fx>

4. τ 4=p U{R*<X,Fx>}=p U{R*<{AFP},{∅}>}不存在Ui,

需要新建一个模式将码AFJ存入

5. τ 0=p U{R*<X,Fx>}=p U{R0<{P},{∅}>},存在码X=AFP,使U0=P∈X,去掉R0

因为对于属性集AFJ而言,模式中必须有码才能表示此模式是无损连接保持依赖的,如果没有码存在,只能达到保持依赖的三范式

第三步:

结论:τ =R1<U1(A,B,C,D,E),F{A→B, A→C, A→D, A→E}>,R2<U2(F,G,H,I)>,F{F→G, FG→H, FG→l},R3<U3(A,F,J),F{AF→J}>},R4<U4(AFP),∅>}

回代∶

(1)Student<{Sno, Sname,Ssex,Sage, Sdept},{Sno→ Sname, Sno→ Ssex,

Sno→ Sage, Sno→Sdept}>

(2)Course<{Cno, Cname,Cpno, Ccredit},{Sno→ Cname,(Cno,Cname)→Cpno,

(Cno, Cname)→ Ccredit} >

(3)SC<{Sno, Cno, Grade},{(Sno, Cno)→ Grade}>

(4)NEW<{Sno,Cno,P},{∅}>

数据库分解-含孤立属性的三范式无损连接保持依赖分解——以S-T表为例相关推荐

  1. 数据库设计的三范式超详细详解

    目录 写在前面 第一范式(1NF):原子性(存储的数据应该具有"不可再分性") 第二范式(2NF):唯一性 (消除非主键部分依赖联合主键中的部分字段)(一定要在第一范式已经满足的情 ...

  2. 数据库冗余字段的设计以及三范式

    在开发时,很多时候都需要使用空间换时间,而数据库设置冗余字段就是这个出发点,首先我们就需要知道什么是冗余字段 什么是冗余字段? 就是数据表中存在多余的字段 例如:文章表:article_id和arti ...

  3. 数据库的三范式详细解释

    1.定义 三范式是数据库的规范化的内容,所谓的数据库三范式通俗的讲就是设计数据库表所应该遵守的一套规范,如果不遵守就会造成设计的数据库不规范,出现数据库字段冗余,数据的查询,插入等操作等问题. 注意: ...

  4. bcnf分解算法_【数据库】转换成BCNF的保持无损连接的分解

    转换成BCNF的保持无损连接的分解 算法1: 例3:关系模式R,其中U={C,T,H,R,S,G}, F={CS→G,C→T,TH→R,HR→C,HS→R},将其分解成BCNF并保持无损连接. 例4: ...

  5. 无损连接和模式分解题型

    一.判别一个分解的无损连接性 方法一:无损连接定理 关系模式R(U,F)的一个分解ρ={R1<U1,F1>,R2<U2,F2>}具有无损连接的充分必要条件是: U1∩U2→U1 ...

  6. 四、转换成BCNF的保持无损连接的分解

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

  7. 转换成BCNF的无损连接分解

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

  8. 数据库三范式 无重复列 完全依赖主键 属性不依赖非主属性

    参考:http://www.cnblogs.com/xrq730/p/5100442.html 细说数据库三范式 2.1 第一范式(1NF)无重复的列,保证每列的原子性,即每一列的各个属性值之间不能有 ...

  9. python学习笔记 day44 数据库三范式

    参考自 https://www.cnblogs.com/wangfengming/articles/7929118.html 1. 数据库三范式概念: 为了建立减少冗余,结构合理的数据库,涉及数据库时 ...

最新文章

  1. Unknown property 'mybatis-plus' yml文件报错
  2. 2013_nanjing_onsite
  3. 部署GitLab代码托管仓库
  4. java中递归与回调函数_如何将递归回调函数转换为异步等待格式
  5. 浅谈管理软件的功能与作用-—以Nvisual综合布线可视化运维管理平台和进销存管理软件为例
  6. 九宫格数独模型设计(随机生成题目)
  7. 云计算基础之如何学习云计算?
  8. 数学之英文写作——基本中英文词汇(一般术语、算术与代数的常用词汇)
  9. centos 安装 janus
  10. 基于多传感器的学生课堂掌握程度评估系统和方法
  11. GoogleHacking 语法篇
  12. 【C语言】通过C语言实现简单的三子棋
  13. python 表示图论_python与图论的桥梁——igraph
  14. 使用Apache MXNet进行商标检测
  15. 【数据结构与算法】初识二叉树(下)
  16. 用pymysql制作一个同学录小程序
  17. 微信小程序实现不定长文字步骤条+气泡框
  18. misc 工具 mp3stego的使用
  19. Java xml字符串转json
  20. 学习嵌入式如何越挫越勇?

热门文章

  1. ios美颜 调研 GPUImage GPUImageBeautifyFilter BeautifyFaceDemo[转]
  2. PS2022下载链接分享
  3. MTD层次、MTD设备驱动接口、Nor Flash/Nand Flash驱动
  4. 人工智能数据集(资源篇)(更新于2020.11.27)
  5. Asp.net WebAPI Attribute Rout
  6. IEEE754标准中的4种舍入模式
  7. 数据采集及部分数据标注平台工具说明
  8. GitHub快速访问
  9. 企业邮箱如何登录手机邮箱?
  10. MPB:上海交大王风平组-​海洋沉积物样品细胞提取及荧光显微镜计数法