3nf算法
Ⅰ 数据库系统系统原理,关系模式方面问题
Q1:问第三题具体是该如何实现的?
A1:第三题可采用保持函数依赖的分解算法。
Q2:第三题问题将R分解成等价的3NF,是不是说R分解出来的所有关系模式都必须是3NF的?
A2:可以说模式分解后的关系模式一定是3NF的,其中:
1.保持函数依赖的分解一定是3NF,但不一定是BCNF。
2.既保持函数依赖又有无损连接性的分解一定是3NF,但不一定是BCNF。
3.具有无损连接性的分解,一定可达到4NF。
Q3:第一范式,第二范式都能理解,那么第三范式是在第二范式的基础上,增加了什么条件?
A3:第三范式是在第一模式的基础上,消除了每一个非主属性与码的传递依赖,比如X→Y,Y→Z,这里就是Z传递依赖于X。
Q4:以R1(Sno, Cno, G)为例,由于(Sno,Cno)-->G,但是并不能确定G就一定不能决定(Sno,Cno),所以R1就是第三范式。这样理解对不对?
A4:以R1(Sno, Cno, G)为例,由于(Sno,Cno)-->G,这里只有(Sno,Cno)决定G这一个函数依赖,此例G完全依赖于(Sno,Cno),并不存在传递依赖,决定因素也只有码(Sno,Cno)一个,所以R1是BCNF范式,自然也是第三范式。(ps:4NF多值依赖这一块我还在理解,如果仅仅R(Sno,Cno,G),F={(Sno,Cno)-->G}这个条件的话我认为是属于4NF的,等我理解了再来补答~)
Ⅱ 设有关系R如下表所示,则该关系R最高为哪一级范式 A.1NF B.2NF C.3NF D.BCNF
解:1、在函数依赖集F中,未被函数决定的属性有:CE,必包含于码中。∵(CE)+=CEDBA=U∴候选码只有:CE∵E→D属性D部分依赖与码CE,∴R是1NF2、依赖集F已经是极小依赖集,且所有属性都在依赖中出现,根据保持函数依赖地转换成3NF的算法,将每个函数依赖中包含的属性组成一个关系模式,得到分解:{AD,ED,DB,BCD,ACD}因为AD包含于ACD中,去掉AD得:{ED,DB,BCD,ACD}因为AD包含于ACD中,去掉AD得:再并上一个候选码{CE}得到即保持函数依赖又有无损连接性的分解:{ED,DB,BCD,ACD,CE}3、∵码是CE,F={A→D,E→D,D→B,BC→D,DC→A}R不是BCNF。任选一不符合BCNF要求的函数依赖:A→D进行分解得:R1(AD)F1={A→D}码是A,该模式是BCNFR2(ABCE)F2={CE→A,A→B}码是CE,该模式不是BCNF,继续分解选A→B分解得:R21(AB)F21={A→B}码是A,该模式是BCNFR22(ACE)F22={CE→A}码是CE,该模式是BCNF具有无损连接性的BCNF分解为:{R1,R21,R22}4、根据推理规则,从FD导出MVD,得R的MVD集合:{A→→D,E→→D,D→→B,BC→→D,DC→→A}R不是4NF。任选一不符合4NF要求的MVD:A→→D进行分解得:R1(AD)M1={A→→D}码是A,该模式是4NFR2(ABCE)M2={CE→→A,A→→B}码是CE,该模式不是4NF,继续分解选A→→B分解得:R21(AB)M21={A→→B}码是A,该模式是4NFR22(ACE)M22={CE→→A}码是CE,该模式是4NF具有无损连接性的4NF分解为:{R1,R21,R22}
Ⅲ 对一个关系R,如何实现3NF分解~教材讲的并不能看懂
简单通俗讲就是 只要关系中不存在 部分函数依赖以及传递依赖就是满足3NF的。
给你一道例题,不管你通过什么方式,问老师或者网络也好直接看答案也好,把它认真理解到了,这个问题就解决了。
有关系模式R(A,B,C,D),R上的函数依赖集F={A->C, C->A, B->AC, D->AC}
1.求F的最小等价依赖集Fm
2.求R的关键字
3.R属于第几NF
4.将R分解成3NF,并保持无损连接性和函数依赖保持性。
Ⅳ 转换成3NF的保持函数依赖的分解
算法:
ρ={R1<U1,F1>,R2<U2,F2>,...,Rk<Uk,Fk>}是关系模式R<U,F>的一个分解,U={A1,A2,...,An},F={FD1,FD2,...,FDp},并设F是一个最小依赖集,记FDi为Xi→Alj,其步骤如下:
① 对R<U,F>的函数依赖集F进行极小化处理(处理后的结果仍记为F);
② 找出不在F中出现的属性,将这样的属性构成一个关系模式。把这些属性从U中去掉,剩余的属性仍记为U;
③ 若有X→A F,且XA=U,则ρ={R},算法终止;
④ 否则,对F按具有相同左部的原则分组(假定分为k组),每一组函数依赖Fi所涉及的全部属性形成一个属性集Ui。若Ui Uj(i≠j),就去掉Ui。由于经过了步骤②,故
,于是构成的一个保持函数依赖的分解。并且,每个Ri(Ui,Fi)均属于3NF且保持函数依赖。
例1:关系模式R<U,F>,其中U={C,T,H,I,S,G},F={CS→G,C→T,TH→I,HI→C,HS→I},将其分解成3NF并保持函数依赖。
解:根据算法进行求解
(一)计算F的最小函数依赖集
① 利用分解规则,将所有的函数依赖变成右边都是单个属性的函数依赖。由于F的所有函数依赖的右边都是单个属性,故不用分解。
② 去掉F中多余的函数依赖
A.设CS→G为冗余的函数依赖,则去掉CS→G,得:
F1={C→T,TH→I,HI→C,HS→I}
计算(CS)F1+:
设X(0)=CS
计算X(1):扫描F1中各个函数依赖,找到左部为CS或CS子集的函数依赖,找到一个C→T函数依赖。故有X(1)=X(0)∪T=CST。
计算X(2):扫描F1中的各个函数依赖,找到左部为CST或CST子集的函数依赖,没有找到任何函数依赖。故有X(2)=X(1)。算法终止。
(CS)F1+= CST不包含G,故CS→G不是冗余的函数依赖,不能从F1中去掉。
B.设C→T为冗余的函数依赖,则去掉C→T,得:
F2={CS→G,TH→I,HI→C,HS→I}
计算(C)F2+:
设X(0)=C
计算X(1):扫描F2中的各个函数依赖,没有找到左部为C的函数依赖。故有X(1)=X(0)。算法终止。故C→T不是冗余的函数依赖,不能从F2中去掉。
C.设TH→I为冗余的函数依赖,则去掉TH→I,得:
F3={CS→G,C→T,HI→C,HS→I}
计算(TH)F3+:
设X(0)=TH
计算X(1):扫描F3中的各个函数依赖,没有找到左部为TH或TH子集的函数依赖。故有X(1)=X(0)。算法终止。故TH→I不是冗余的函数依赖,不能从F3中去掉。
D.设HI→C为冗余的函数依赖,则去掉HI→C,得:
F4={CS→G,C→T,TH→I,HS→I}
计算(HI)F4+:
设X(0)=HI
计算X(1):扫描F4中的各个函数依赖,没有找到左部为HI或HI子集的函数依赖。故有X(1)=X(0)。算法终止。故HI→C不是冗余的函数依赖,不能从F4中去掉。
E.设HS→I为冗余的函数依赖,则去掉HS→I,得:
F5={CS→G,C→T,TH→I,HI→C}
计算(HS)F5+:
设X(0)=HS
计算X(1):扫描F5中的各个函数依赖,没有找到左部为HS或HS子集的函数依赖。故有X(1)=X(0)。算法终止。故HS→I不是冗余的函数依赖,不能从F5中去掉。即:F5={CS→G,C→T,TH→I,HI→C,HS→I}
③ 去掉F5中各函数依赖左边多余的属性(只检查左部不是单个属性的函数依赖)
没有发现左边有多余属性的函数依赖。故最小函数依赖集为:。。。。。。。。。。。。。。
F={CS→G,C→T,TH→I,HI→C,HS→I}
(二)由于R中的所有属性均在F中都出现,所以转下一步。
(三)对F按具有相同左部的原则分为:R1=CSG,R2=CT,R3=THI,R4=HIC,R5=HSI。所以ρ={R1(CSG),R2(CT),R3(THI),R4(HIC),R5(HSI)}。
Ⅳ 1、R(A,B,C,D,E) F={A →D,E →D,D →B,BC →D,DC →A} (1)求侯选码,该关系最高到达几范式
解:
1、在函数依赖集F中,未被函数决定的属性有:CE,必包含于码中。
∵(CE)+=CEDBA=U ∴ 候选码只有:CE
∵E →D 属性D部分依赖与码CE,∴ R是1NF
2、依赖集F已经是极小依赖集,且所有属性都在依赖中出现,根据保持函数依赖地转换成3NF的算法,将每个函数依赖中包含的属性组成一个关系模式,得到分解:
{AD,ED,DB,BCD,ACD} 因为 AD包含于ACD中,去掉AD得:
{ED,DB,BCD,ACD} 因为 AD包含于ACD中,去掉AD得:
再并上一个候选码{CE}得到即保持函数依赖又有无损连接性的分解:
{ED,DB,BCD,ACD,CE}
3、
∵码是CE,F={A →D,E →D,D →B,BC →D,DC →A}
R不是BCNF。
任选一不符合BCNF要求的函数依赖:A →D 进行分解得:
R1(AD) F1={A →D} 码是A,该模式是BCNF
R2(ABCE) F2={CE→A,A→B} 码是CE,该模式不是BCNF,继续分解
选A→B分解得:
R21(AB) F21={A→B} 码是A,该模式是BCNF
R22(ACE) F22={CE→A} 码是CE,该模式是BCNF
具有无损连接性的BCNF分解为:
{R1,R21,R22}
4、根据推理规则,从FD导出MVD,得R的MVD集合:
{A →→D,E →→D,D →→B,BC →→D,DC →→A}
R不是4NF。
任选一不符合4NF要求的MVD:A →→D 进行分解得:
R1(AD) M1={A →→D} 码是A,该模式是4NF
R2(ABCE) M2={CE→→A,A→→B} 码是CE,该模式不是4NF,继续分解
选A→→B分解得:
R21(AB) M21={A→→B} 码是A,该模式是4NF
R22(ACE) M22={CE→→A} 码是CE,该模式是4NF
具有无损连接性的4NF分解为:
{R1,R21,R22}
Ⅵ 请问如何求3nf和bcnf
p保持函数依赖的3NF范式分解:算法1
⑴对R<U,F>中的F进行最小化处理
⑵不在F中出现的属性组成一个关系模式,并从U中去掉这些属性
⑶若存在X->A</F, 有XA=U, 则r={R}, 终止算法
⑷否则,对于具有相同左部的函数依赖分成一组,假设有K组,记为F1,F2,…,Fk, Fi的所有属性构成Ui, 若UiÍUj(i¹j), 则去掉Ui,
⑸这样得到的一个分解r={R1<U1,F1>, R2<U2,F2>, …, Rk<Uk,Fk>}构成了R<U,F>的一个保持函数依赖的分解
p具有无损连接性和保持函数依赖的3NF范式分解:算法2
⑴设X是关系模式R<U,F>的关键字
⑵通过算法1得到一个分解r
⑶t= r U {R*<X, Fx>}
⑷若存在一个Uj, 有XÍUj, 则将R*<X, Fx>从t中去掉
⑸t是一个具有无损连接和保持函数依赖的3NF分解
p具有无损连接性的BCNF范式分解:算法3
⑴r={R<U,F>}
⑵检查r中的每个关系模式是否为BCNF,若是算法终止
⑶设r中Ri<Ui,Fi>不属于BCNF, 那么必存在X->A<Fi+(A</X), X不是Ri的关键字,对Ri进行分解:s={S1,S2}, Us1=XA, Us2=Ui-{XA}, 以代替Ri<Ui,Fi>, 返回第二步
你这题的结果
关键字A,CF
3NF
R1(BGC) R2(ABGD) R3(ACF) R4(ACG) R5(ADEF)R6(ACB)
BCNF
上面 R2(ABGD) 中有 ABG->D,A->G 所以 R22(AG),R21(ABD)
R3(ACF)中 CF->A,A->C,所以R31(AC),R32(CF)
最终结果
R1(BGC) R22(AG),R21(ABD)R31(AC),R32(CF)R4(ACG) R5(ADEF)R6(ACB)
以上结果我也拿不太准,只供参考
Ⅶ 函数依赖AB- >C,B->A 算不算传递函数依赖算不算最小函数依赖集(A,B,C)满不满足3NF
不满足3nf ,只要表中的某一项的值要依赖其它项来确定,都算传递依赖,如:有三列:a,b,c;c=a+b;c依赖a和b,就不满足第三范式;
Ⅷ 请问,如何将如图所示的这张数据库表分割成符合第三范式(3NF)的几张表
1,范式
7大范式:1NF,2NF,3NF,BCNF,4NF,5NF,6NF
什么是标准化?非规范化?
规范化数据库的规范化,非规范化数据库的非规范化。
关键的一步是在设计,操作和维护的数据库,以确保数据正确分布到数据库表中。使用正确的数据结构不仅是简单的数据库访问操作,和其他应用程序内容(查询,窗体,报表,代码等)可以大大简化。正确的表设计的正式名称是“数据库规范化”。目的:为了减少数据库中的数据冗余,提高了数据的一致性。
范式的概念:
1)1NF的目标是为每一个列的表是不可分割的;
2)2NF:我们的目标是在每一行表被识别。前提是要满足1NF。关键字单场,你必须满足2NF。当关键字组合字段(即,多个字段),可以不存在确定的非键的一部分的字段中的关键字的组合中的一个领域。非部分地依赖于主磁场的主要领域,即,非键字段必须依赖于关键字的组合,而不是组合的一部分的关键字。
3)3NF:目标是不依赖于非键列的表内表的所有列。前提,以满足2NF,不存在非键字段决定另一个非键字段。即:有没有非关键属性传递依赖(X-> Y->非键属性Z)
4)BCNF:前提是要满足,2NF不存在非键字段决定另一个非关键字关键领域。也没有决定等重点领域的重点领域。 :3NF的基础上加上约束条件:这里有一个关键领域确定的另一个重要领域。
1第一范式(1NF)
任何关系数据库中,第一范式(1NF)是关系模型的基本要求,不符合第一范式(1NF)的数据库不是一个关系数据库。所谓第一范式(1NF)是基本的数据条目的数据库表的每一列是不可分割的,不能有一个以上的值在同一列中,这是一个实体的属性不能有一个以上的值或不能重复的属性。复制的属性,您可能需要定义一个新的实体,新的实体由重复的属性的新实体与原实体之间的一个一对多的关系。第一范式(1NF)表,每行只包含一个实例的信息。例如,图3-2中的员工信息表,不能在展会之一的员工信息,也可以两个或多个列中显示,员工信息表中的每一行代表一个员工信息,员工信息中只出现一次表。总之,第一范式是不重复的列。
第二范式(2NF)
第二范式(2NF)建立的第一范式(1NF),即满足第二范式(2NF)的基础上,必须满足第一范式(1NF )。第二范式(2NF)要求数据库表中的每个实例或行必须是唯一能够分辨。一般需要被添加到该表来实现的列之间的区别,唯一地标识每个实例来存储。图3-2(EMP_ID)的雇员数列中的员工信息表,因为每个员工的员工号是唯一的,因此每个员工都可以只区分。唯一的属性列被称为主键或主键,主码。第二范式(2NF)要求实体的属性完全依赖于主键。所谓完全依赖不能只依赖于主键属性的一部分,如果存在的话,那么这个属性,这部分应该被分离出来,形成一个新的实体,新实体与原实体的主键是一个一对多的关系。一般需要被添加到该表来实现的列之间的区别,唯一地标识每个实例来存储。总之,第二范式的非主属性部分依赖于主键。
3第三范式(3NF)
满足第三范式(3NF)必须满足第二范式(2NF)。简而言之,第三范式(3NF)请求不包含一个非主键信息包含在一个数据库表中的其他表。例如,有一个部门信息表,其中每个部门都有一个的部门编号(在DEPT_ID“),本部门,本部门的简要信息的名称。所以在部门列出的电话号码表中的图3-2中的员工可以不再被相关部门的信息部门名称,部门简要的员工信息表。部门信息表不存在,根据第三范式(3NF)应该构建它,否则会有大量的数据冗余。简而言之,第三范式就是属性不依赖于非主属性。例如:
第一范式(1NF):数据库表中的字段都是单一的财产,不能进行细分。单个属性由基本类型包括整数,实数,字符,逻辑型,日期型。
例如,数据库表是符合第一范式:场1场2场3场
这不符合第一范式的数据库表是不符合第2场3场1个字场4场31场32
显然,在任何关系型数据库管理系统(S),一个傻子不能让第一范式的数据库,因为这些S不会让你把一个数据库表,然后再除以分成两列或多列。因此,你要设计不符合第一范式的数据库,是不可能在现有的S.
第二范式(2NF):有没有非键字段在数据库表中的一部分,任何候选人函数依赖(部分函数依赖的存在为关键字段决定关键字的组合),即是一些领域的关键领域,所有的非键字段是完全依赖于任意一组候选关键字。
假定选课关系表中的SS(学号,姓名,年龄,课程名称,成绩,学分),关键字为组合关键字(学号,课程名称),因为存在之间的关系以下决定:
(学号,课程名称) - >(姓名,年龄,成绩,学分)
数据库表不符合第二范式,因为存在之间的关系如下决定: BR />(课程名称)→(学分)
(学号)→(姓名,年龄)
中的关键字的字段决定非关键字的组合。
一个学生选修,因为他们不符合2NF,这个选课关系表中有以下问题:1)数据冗余:同一门课程由n个学生选修,“学分”重复n-1次;课程名称和年龄对反复-1。 2)更新异常:调整课程的学分,数据表中的值的所有行的“学分”?必须更新,否则会出现同一门课程学分。 3)插入异常:假设你想创建一个新的课程,没有一门选修课。还没有“学号”关键字,课程名称和信用记录到数据库中。 4)删除异常:假设一组学生已完成课程选修记录应该从数据库表中删除。然而,在同一时间,也将被删除的过程名和信用信息。显然,这将导致插入异常。
选修的关系表SS变更为以下三个表:
学生们:锡(学号,姓名,年龄);
课程设置:(课程名称,学分);
选修关系:SS(学号,课程名称,成绩)。
这个数据库表是符合第二范式的,消除了数据冗余,更新异常,插入异常和删除异常。
所有单关键字的数据库表第二范式,因为有可能是一个组合关键字。
第三范式(3NF):在第二范式的表中的数据的基础上,如果没有非键字段的任何候选人相关传递函数符合第三范式的重点领域。所谓的传递函数依赖,指的决定“A→→”关系存在,则传递函数依赖于A.,所以,第三范式的数据库表中应该不存在依赖关系如下:非键字段,重点领域→X→Y
非键字段假定学生关系表锡(学号,姓名,年龄,其中[]学院[],读大学学院电话),关键字为单一关键字“研究“,因为存在之间的关系如下决定:
(学号)→(姓名,年龄,其中[]学院这个数据库是一致的[]学院[]的位置,[]学院[]电话)
2NF,但不符合3NF,因为一项决定存在以下关系:
(学生证)→(其中[]学院[])→([]学院[]位置[]学院[]电话)
非键字段“[]学院[]位置”,“[]学院[]电话”依赖“研究”的重点领域传递函数。
它也存在数据冗余,更新异常,插入异常和删除异常读者自己分析表明。
学生关系表分为以下两个表:
学生们:(学号,姓名,年龄,其中[]学院[]);
[]学院[]:([学院[],位置,电话)。
这个数据库表是符合第三范式的,消除了数据冗余,更新异常,插入异常和删除异常。
·博伊斯 - 科范式(BCNF):第三范式的基础上,数据库表中不存在任何领域的任何相关的传递函数的一个候选关键领域,到满足BCNF的
The>的假设仓库管理关系表Ssanag(仓库,存储物品,管理员,数量),管理员只在一个仓库工作,仓库可以存放各种物品。数据库中的表存在以下关系:一项决定
(仓库,存储物品)→(管理员)
(管理员,存储项目)→(仓库,数量)
所以, (仓库,储存项目)和(管理员,存储资料)Ssanag候选键,唯一的非键字段的表的数量,它是在第三范式。然而,由于存在之间的关系如下决定:
(仓库)→(管理员)
(管理员)→(仓库)
存在的关键领域确定重点领域,其不符合BCNF范式。它会出现以下异常:1)删除异常:当仓库是空的,所有储存的项目“和”数量“信息被删除的同时,”仓库“和”管理员“也被删除。2)插入一个例外:管理员可以分配到仓库,当仓库没有存储任何物品。3)更新异常:如果该存储库的管理员,管理员必须表中的所有行。
仓库管理关系表分解为两个关系表:
仓库管理:Ssanag(仓库管理员);
仓库:SS(仓库,储存项目,数量)。
这是在数据库表BCNF范式的,消除删除异常,插入异常和更新异常。
在短的五个最大的数据库范式:
第一范式:对于表中的每一行,必须和唯一的价值线唯一的值吗?成一排,每列和原子操作。
(第一范式是重复的组,每个单独的表,这些表的联系,通过这种方式来消除重复组的一个to-many关联)</第二范式:第二范式要求非主键列是主键的一个子集,非主键列活动必须完全依赖于整个主键,主键必须有一个独特的电阻元件,主键所组成的一个或多个唯一值。一旦创建后,不能更改主键,外键与主键的表。与手段 - 许多关系的主外键(Delete(删除)第二范式处理问题。冗余数据表中的信息时,通常违反了第二范式取决于以外的主键的一部分)
第三范式:第三范式要求非主键的表中的列列是相互依存的。(第三范式规则查找以消除第一范式和第二范式的表中不直接依赖于主键的属性,我们没有相关的所有信息的表的主键建??立一个新的每个新表的表从源表中保存的信息,它们依赖于主键)
第四范式:第四范式禁止主键列和非主键列一对多关系不受约束的 BR />第五范式:第五范式的表被划分成尽可能小的块,以排除多余的表格。
Ⅸ 关系模式的分析算法的准则有哪些
关系模式分解的目的是解决数据冗余的问题,但要考虑多方面的问题。如原关系模式中信息是否丢失,函数依赖关系是否保持等,要研究这方面的问题就要涉及关系模式分解算法的具体准则。
关系模式的分解算法中有以下几方面的准则:((1)若要求分解具有无损连接性,则模式分解一定可以达到第四范式(4NF)。
(2)若要求分解保持函数依赖性,则模式分解可以达到第三范式(3NF),但不一定能达到巴斯−科德范式(BCNF)。
(3)若要求分解既具有无损连接性,又保持函数依赖性,则模式分解可以达到第三范式(3NF),但不一定能达到巴斯−科德范式(BCNF)。
1.二元分解的无损连接性判断二元分解是关系模式分解中最简单的一种分解方式。二元分解是将原关系模式分解成两个子关系模式。如将关系模式R分解成关系模式集ρ,ρ中包含两个关模式R1、R2,即ρ={R1,R2},则ρ是R的二元分解。
当关系模式分解是最简单的二元分解(ρ={R1
Ⅹ 数据库问题
1.设R(U)是一个属性集U上的关系模式,X和Y是U的子集。 若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等, 则称 “X函数确定Y” 或 “Y函数依赖于X”,记作X→Y。
注意的几点:
1). 函数依赖不是指关系模式R的某个或某些关系实例满足的约束条件,而是指R的所有关系实例均要满足的约束条件。
2). 函数依赖是语义范畴的概念。只能根据数据的语义来确定函数依赖。 例如“姓名→年龄”这个函数依赖只有在不允许有同名人的条件下成立 3). 数据库设计者可以对现实世界作强制的规定。例如规定不允许同名人出现,函数依赖“姓名→年龄”成立。所插入的元组必须满足规定的函数依赖,若发现有同名人存在, 则拒绝装入该元组。
例子:
Student(Sno, Sname, Ssex, Sage, Sdept)
假设不允许重名,则有:
Sno → Ssex, Sno → Sage , Sno → Sdept,
Sno ←→ Sname, Sname → Ssex, Sname → Sage
Sname → Sdept
但Ssex -\→ Sage
若 X → Y,并且 Y → X, 则记为 X ←→ Y。
若 Y 不函数依赖于 X, 则记为 X -\→ Y。
2.最小函数依赖集
定义:如果函数依赖集F满足下列条件,则称F为最小函数依赖集或最小覆盖。 ① F中的任何一个函数依赖的右部仅含有一个属性;
② F中不存在这样一个函数依赖X→A,使得F与F-{X→A}等价;
③ F中不存在这样一个函数依赖X→A,X有真子集Z使得F-{X→A}∪{Z→A}与F等价。
3.范式:
1).第一范式(1NF)
在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。
所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。在第一范式(1NF)中表的每一行只包含一个实例的信息。例如,对于图3-2 中的员工信息表,不能将员工信息都放在一列中显示,也不能将其中的两列或多列在一列中显示;员工信息表的每一行只表示一个员工的信息,一个员工的信息在表中只出现一次。简而言之,第一范式就是无重复的列。
2 ).第二范式(2NF)
第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被唯一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。如图3-2 员工信息表中加上了员工编号(emp_id)列,因为每个员工的员工编号是唯一的,因此每个员工可以被唯一区分。这个唯一属性列被称为主关键字或主键、主码。
第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。简而言之,第二范式就是非主属性非部分依赖于主关键字。
3). 第三范式(3NF)
满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。例如,存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那么在图3-2的员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有大量的数据冗余。简而言之,第三范式就是属性不依赖于其它非主属性。
不知道您说的F+和拆分是什么意思,
我只知道关系模式规范化,关系模式分解。
希望对您有帮助。