数据库结构设计

 

第四章                                                  数据库结构设计

 

知识要点:

    (1)函数依赖及Armstrong公理系统

    (2)为什么要对模式进行分解,如何分解

    (3)如何判断关系模式达到几范式

    (4)如何求属性的闭包及如何求最小函数依赖集

    (5)判断分解后的关系模式是不是无损连接或保持函数依赖

(6)判断分解后的关系模式既无损连接又保持函数依赖

41模式设计

设计关系数据库模式时,特别是从面向对象的ODL设计或从E/R设计直接向关系数据库模式转换时,很容易出现的问题是冗余性,即一个事实在多个元组中重复。

造成这种冗余的最常见的原因是,企图把一个对象的单值和多值特性包含在一个关系中。

当我们企图把太多的信息存放在一个关系时,就会出现数据冗余和更新异常等问题。主要表现如下:

    1  数据冗余。

    2  修改异常。

    3  删除异常。

    4  插入异常。

关系的键码函数决定该关系的所有其它属性。由于键码能唯一确定一个元组,所以,也可以说关系的键码函数决定该关系的所有属性。一个关系中的所有属性都函数依赖于该关系的键码。不同的属性在关系模式中所处的地位和扮演的角色是不同的。把键码所在的属性称为主属性,而把键码属性以外的属性称为非主属性。

不同的属性对键码函数依赖的性质和程度是有差别的。有的属于直接依赖,有的属于间接依赖(通常称为传递依赖)。

当键码由多个属性组成时,有的属性函数依赖于整个键码属性集,而有的属性只函数依赖于键码属性集中的一部分属性。

4.2函数依赖

1.函数依赖及相关概念

    定义  R(U)是属性集U上的关系模式,XYU的子集。若对R(U)的任何一个可能的关系rr中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数决定YY函数依赖于X,记作:X Y

f

    (1) 完全函数依赖:在R(U)中,如果X Y,并且对于X的任何一个真子集X`,都有X`不能决定Y,则称YX完全函数依赖,记作: X Y

    给定一个学生选课关系SC(SnoCnoG),我们可以得到 F={(SnoCno) G},对(SnoCno)中的任何一个真子集SnoCno都不能决定G,所以,G完全依赖于SnoCno

p

    (2) 平凡的函数依赖:如果X Y,但Y不完全函数依赖于X,则称YX部分函数依赖,记作:X Y

    (3)传递依赖:在R(U)中,如果X Y(Y X)Y XY Z

f

      则称ZX传递依赖。

    (4)码:设KR(UF)中的属性的组合,若K U,则KR的候选码,若有多个候选码,选一个作为主码。

:  候选码也称候选关键字。

(5) 主属性和非主属性:包含在任何一个候选码中的属性叫做主属性,否则叫做非主属性。

    (6) 外码:若R(U)中的属性或属性组XR的码,但是另一关系的码,则称X为外码。

范式

     7)多值依赖

      定义  若关系模式R(U)中,XYZU的子集,并且ZUXY。当且仅当对R(U)的任何一个关系r,给定一对(xz) 值,有一组Y的值,这组值仅仅决定于x值而与z值无关,则称“Y 多值依赖于X”或“X多值决定Y”成立。记为:X Y

例:判断以下函数依赖的对错

1、 sno→sname, cno→cname,(sno,cno)→grade

2、 sname→sno, Sno→cno, sno→Cname        

补充:属性间的联系决定函数依赖关系

XY均是U的子集

1、 XY间联系是1:1,则X→Y,Y→X

2、 XY间联系是M:1, 则X→Y

3、 XY间联系是M:N,则XY间不存在函数依赖。

例:STUDENTS(SNO,SNAME,SSEX,SAGE,SDEPT,SPLACE)

          X                      Y

        SNO   → (SNAME,SSEX,SAGE)

        SNO   →  SPLACE

SPLACE → SDEPT

  SSEX → SDEPT

 

 

例:设关系X,Y,W为关系R中的三个属性组,属性关系如下图所示,问X→Y, X→W, W→Y

 

 

 

 

2.函数依赖的公理系统

Armstrong公理系统:设关系模式R(UF),其中U为属性集,FU上的一组函数依赖,那么有如下推理规则:

    (1)A1自反律:若Y X U,则X YF所蕴涵;

    (2)A2增广律:若X YF所蕴涵,且Z U,则XZ YZF所蕴涵;

(3)A3传递律:若X YY ZF所蕴涵,则X ZF所蕴涵。

根据上述三条推理规则又可推出下述三条推理规则:

(1)合并规则:若X YX Z,则X YZF所蕴涵

(2)伪传递率:若X YWY Z,则XW ZF所蕴涵

(3)分解规则:若X YzZ Y,则X ZF所蕴涵。

引理:X AA1A2  A1成立的充分必要的条件是X Ai成立

I=123…,k

 

F

3.函数依赖的闭包F+及属性的闭包X +   

函数依赖的闭包

定义  关系模式R(UF)中为F所逻辑蕴含的函数依赖的全体称为F的闭包,记为:F+

X +

F

属性的闭包

X + 

F

X +

F

定义  F为属性集U上的一组函数依赖,X U   {A | X A能由F根据Armstrong公理导出},则称    为属性集X关于数依赖集F的闭包。

X +

F

求属性X的闭包X吉的算法

X +

F

算法  求属性的闭包 

输入  XF  

X +

F

输出 

步骤

(1)X(0)=Xi0

(2)BB{A |( v)( w)}(V W F  V X(i) A W)}

(3)X(i+1)B X(i)

(4)判断X(i+1)= X(i)

(5)若相等,或X(i)=U,则X(i)为属性集X关于函数依赖集F的闭包。且算法终止

(6)     不相等,则ii+1,返回第二步

1  已知关系模式R(UF)U{ABCDE)

    F{A BD CBC EAC B}

 (AD)+

F

 (AE)+

F

   

 (AE)+

F

             ,由上述算法,设X(0)=AE

    计算X(1): 逐一扫描F中的各个函数依赖,找到左部为AEAE的函数依赖,得到一个:A B。故有X(1)=AE B

计算X(2):逐一扫描F中的各个函数依赖,找到左部为ABEABE子集的函数依赖,因为找不到这样的函数依赖,所以,X(1)X(2)。算法终止,

 (AE)+

F

ABE

    (AD);,由上述算法,设XtO’=AD

    计算X‘”:逐一扫描F中的各个函数依赖,找到左部为ADAD的函数依赖,得到两个:A+BD--~C函数依赖。故有

    XCl’:ADUBC

    计算Xn:逐一扫描F中的各个函数依赖,找到左部为ADBCADBC子集的函数依赖,得到两个:BCEACB函数依赖。故有X2,:ABCDUE。所以,X(2:ABCDEU,算法终止, (AD)吉:ABCDE

      4.最小函数依赖集

     等价和覆盖

    定义  一个关系模式R(UF)上的两个依赖集FG,如果

  F’=G’,则称FG是等价的,记做FG

    FG,则称GF的一个覆盖,反之亦然。两个等价的函

  数依赖集在表达能力上是完全相同的。

       定义  如果函数依赖集F满足下列条件,则称F为最小函数

 依赖集或最小覆盖。;  (1)F中的任何一个函数依赖的右部仅含有一个属性;”  (2)F中不存在这样一个函数依赖XA,使得FF{X A}等价;扩  (3)F中不存在这样一个函数依赖XAX有真子集Z使得 F{XA}U{Z+A}F等价。;·  3.计算最小函数依赖集的算法。  算法  计算最小函数依赖集。

  输入  一个函数依赖集

  输出  F的一个等价的最小函数依赖集G

  步骤

  (1)用分解的规则,使F中的任何一个函数依赖的右部仅含有一个属性;  (2)去掉多余的函数依赖:从第一个函数依赖X+Y开始将其从F中去掉,然在剩下的函数依赖中求X的闭包X’,看X’是否包含Y,若是,则去掉XY;否则不能去掉,依次做下去。直到拽不到冗余的函数依赖;

    (3)去掉各依赖左部多余的属性。一个一个地检查函数依赖宏部非单个属性的依赖。例如XY+A,若要判Y为多余的,则以醑+A代替XY+A是否等价?AE(X)’,则Y是多余属性,可以去掉。

  

   3  已知关系模式R(UF)U{ABC}

    F{A+BBAB+CA+CCA}

    求最小函数依赖集。

    分析  此题可以有两种不同的答案,下面分别叙述如下。

    答案1  BA是冗余的,将其从F中去掉,看能否根据,Armstrong公理系统的推理规则导出。

        B--~CCA    (已知)

        BA    (传递律)

    B-,-A是冗余的,将其从F中去掉,得n

    F1{A+BB--~CA+CC+A}

    又设AC为冗余,将其从F1中去掉    ·

        ABB--~C    (已知)·        AC    (传递律)

    A+C是冗余的,将其从n中去掉,得Fm为:…    FM,={ABB+CG+A}。’    因为在FM,中的其它函数依赖是非冗余的,所以,FMl为最小函数依赖集。

    答案2  BC是冗余的,将其从F中去掉,看能否根据、Armstrong公理系统的推理规则导出。:        BAA+C    (已知)

        BC    (传递律)

    B+C是冗余的,将其从F中去掉,得FM2

    FM2{ABB+CACCA}。:i    因为在Fm中的其它函数依赖是非冗余的,所以,FM2为最小

 函数依赖集。

从上分析我们可以得到两个最小函数依赖集Fh4,和Fht。,因此,F的最小函数依赖集不是惟一的。

 

4.3 关系规范化

  1.主码、主属性、非主属性、全码、外码定义

定义5.4 KRUF〉中的属性或属性组合,若K → UKR的候选码。

主码:若候选码多于一个,则选定其中的一个为主码(Primary key

主属性:包含在任何一个候选码中的属性,叫做主属性(Prime attribute)

非主属性:不包含在任何码中的属性称为非主属性(Nonprime attribute)

 

最简单的情况:单个属性是码。

最极端的情况:整个属性组是码,称为全码(All-key)

例:关系模式R(P,W,A),属性P表示演奏者,W表示作品,A表示听众。假设一个演奏者可以演奏多个作品,某一作品可被多个演奏者演奏。听众也可以欣赏不同演奏者的不同作品,这个关系模式的码为(P,W,A),All-key

 

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

 

主码与外部码提供了一个表示关系间联系的手段。

 

 

2.关系范式

 

关系模式满足的确定约束条件称为范式,根据满足约束条件的级别不同,范式由低到高分为1NF,2NF,3NF,BCNF,4NF,5NF等。不同的级别范式性质不同。满足最低要求的叫第一范式,简称lNF。在第一范式中满足进一步要求的为第二范式,其余以此类推。

R为第几范式就可以写成R∈xNF

对于各种范式之间的联系有5NF 4NF BCNF 3NF 2NF lNF成立。

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

一、第一范式(1NF)

关系模式的的每一个属性都是不可再分的,则该关系模式称为第一范式。

 

1:

 

 

 

 

      

  2:工资(工号,姓名,工资(基本工资,年绩津贴,煤电补贴))

不满足1NF的关系称为非规范化关系。

关系数据模型不能存储上两个例子(非规范化关系)

   在关系数据库中不允许非规范化关系的存在。      

 

 

 

 

二、第二范式  R∈lNF,且每一个非主属性完全函数依赖于码,R∈2NF       

                                                                  

例:关系模式 S-L-C(SNOSDEPTSLOCCNOG) SLOC为学生的住处,并且每个系的学生住在同一个地方。

 

这里主码为(SNO,CNO)。函数依赖有:

(SNO,CNO) →G )

SNO→SDEPT      (SNO,CNO)    SDEPT

SNO→SLOC       (SNO,CNO) SLOC,

一个关系模式R不属于2NF,就会产生插入异常(如没有选课的学生记录插不进去)、删除异常(删除选课记录会将学生信息删除)、冗余度大(如系、地址都重复存放)。

分析上面的例子,可以发现问题在于有两种非主属性。一种如G,它对码是完全函数依赖。另一种如SDEPTSLOC对码不是完全函数依赖。解决的办法是用投影分解把关系模式S-L-C分解为两个关系模式。

SC(SNO,CNO,G)

S-L(SNO,SDEPT,SLOC)

关系模式SC的码为(SNO,CNO), 关系模式S-L的码为SNO,这样就使得非主属性对码都是完全函数依赖

 

 

 

 

 

三、第三范式

    关系模式RU,F〉中若不存在这样的码X,属性组Y及非主属性Z(ZY)使得X→Y,Y XY→Z,成立,即如果R的任何一个非主属性都不传递依赖于它的任何一个侯选关键字,则称RUF∈3NF

 

可以证明,R∈3NF,则每一个非主属性既不部分依赖于码也不传递依赖于码。

 

 

在关系模式SC没有传递依赖,

关系模式S-L存在非主属性对码传递依赖。在S-L,SNO→SDEPT,SDEPT SNO,SDEPT→SLOC,可得SNO SLOC。因此SC∈3NF,S-L 3NF

一个关系模式R若不是3NF,就会产生插入异常、删除异常、冗余度大等问题。

解决的办法同样是将S-L分解为:

         S-D(SNO,SDEPT)

 D-L(SDEPT,SLOC)

分解后的关系模式S-DD-L中不再存在传递依赖。

 

 

四、BCNF范式

关系模式RU,F∈1NF。若X→YYËXX必含有码,RU,F> ∈BCNF。也就是说,关系模式RU,F〉中,若每一个决定因素都包含码,RU,F> ∈BCNF                                   

                                                          

BCNF的定义可以得到以下结论:

一个满足BCNF的关系模式有
1.
所有非主属性对每一个码都是完全函数依赖。

2.
所有的主属性对每一个不包含它的码,也是完全函数依赖。

3.
没有任何属性完全函数依赖于非码的任何一组属性。(此条排除了3NF

由于
RBCNF,按定义排除了任何属性对码的传递依赖与部分依赖,所以R3NF。但是若R3NF,R未必属于BCNF

下面用几个例子说明属于3NF的关系模式有的属于BCNF,但有的不属于BCNF

l 关系模式SJP(S,J,P),S是学生,J表示课程,P表示名次。每一个学生选修每门课程的成绩有一定的名次,每门课程中每一名次只有一个学生(即没有并列名次)。由语义可得到下面的函数依赖:

(S,J)→P (J,P)→S

所以(S,J)(J,P)都可以作为候选码。这两个码各由两个属性组成,而且它们是相交的。这个关系模式中显然没有属性对码传递依赖或部分依赖。所以SJP∈3NF,而且除(S,J)(J,P)以外没有其它决定因素,所以SJP∈BCNF

2 关系模式STJ(S,T,J),S表示学生,T表示教师,J表示课程。每一教师只教一门课。每门课有若干教师,某一学生选定某门课,就对应一个固定的教师。由语义可得到如下的函数依赖。

                          S,J→T , (S,T) →J

是第三范式,但是存在 T→J,而T不是码,所以不是了BC范式。

 

44 关系模式的分解

 

1. 模式分解特点:

关系模式的规范化过程是通过对关系模式的分解来实现的。把低一级的关系模式分解为若干个高一级的关系模式。这种分解不是唯一的。

 

 

 

 

 

 

 

一个低级范式的关系模式,通过分解(投影)方法可转换成多个高一级范式的关系模式的集合,这种过程称为规范化。

规范化的方式是进行模式分解,模式分解的原则是与原模式等价,模式分解的标准是:

n          模式分解具有无损连接性

n          模式分解能够保持函数依赖

举例:关系规范化过程

第一范式(1NF):如果一关系模式,它的每一个分量是不可分的数据项,即其域为简单域,则此关系模式为第一范式。

例:将学生简历及选课等数据设计成一个关系模式STUDENT, 其表示为:

STUDENTSNO,SNAME,AGE,SEX,CLASS,DEPTNO,DEPTNAME,CNO,CNAME,SCORE,CREDIT

设该关系模式满足下列函数依赖:

F{SNO®SNAME, SNO®AGE, SNO®SEX, SNO®CLASS,CLASS®DEPTNO, DEPTNO®DEPTNAME, CNO®CNAME,SNO.CNO®SCORE, CNO®CREDIT}

由于该关系模式的每一属性对应的域为简单域,即其域值不可再分,符合第一范式定义,所以STUDENT关系模式为第一范式。

第二范式(2NF):若关系模式RÎ1NF,且每个非主属性完全函数依赖于码,则称RÎ2NF

分析一下关系模式STUDENT, 它是不是2NF

属性组(SNOCNO)为关系STUDENT的码。

例如:SNAME非主属性,根据码的特性具有:SNO.CNO¾ ®SNAME

根据STUDENT关系模式已知函数依赖集,下列函数依赖成立:SNO¾ ®SNAME

所以SNO.CNO¾ ®SNAME, SNAME对码是部分函数依赖。同样方法可得到除SCORE属性外,其它非主属性对码也都是部分函数依赖。所以STUDENT关系模式不是2NF

当关系模式R1NF而不是2NF的模式时,对应的关系有何问题呢?我们分析STUDENT关系模式,会有下列问题:

  •  
    • 存在大量的冗余数据:当一个学生在学习多门课程后,他的人事信息重复出现多次。
    • 根据关系模型完整性规则,主码属性值不能取空值。那么新生刚入学,还未选修课程时,该元组就不能插入该关系中。这种情况称为插入异常。
    • 同样还有删除异常,则会丢失信息

解决上述问题方法是将大的模式分解成多个小的模式,分解后的模式可满足更高级的范式的要求。

例如:将STUDENT中对码完全依赖的属性和部分函数依赖的属性分别组成关系。即将STUDENT关系模式分解成三个关系模式:

STUDENT1 SNOSNAMEAGESEXCLASSDEPTNODEPTNAME

COURSECNOCNAMECREDIT

SCSNOCNOSCORE

在分解后的每一个关系模式中,非主属性对码是完全函数依赖,所以上述三个关系模式均为2NF

第三范式(3NF:若关系模式R(U, F)为第一范式,不存在非主属性对码的传递依赖,则称R(U, F)3NF。其中U为关系模式的属性全集,F为关系模式所满足的函数依赖集。

分析关系模式STUDENT1,存在着下列函数依赖:SNO®CLASSCLASS®SNOCLASS®DEPTNO。所以关系模式STUDENT1属性间存在传递依赖,它不是3NF

如果关系模式R2NF而不是3NF。即存在数据冗余,插入和删除会出现异常。

a)    例如在STUDENT1关系中,对每一学生其DEPTNODEPTNAME将重复出现。

b)    当新成立一个系后,在尚未有学生时,该系的信息插入不到该关系中。

 

要消除上述问题,必须对模式分解,消除传递依赖。将STUDENT1分解为下列模式:

STUDENT2SNOSNAMEAGESEXCLASS

CLASS1CLASSDEPTNODEPTNAME

分解后的关系模式STUDENT2不再存在传递依赖,所以它是3NF。但CLASS1关系模式虽只有三个属性,但还存在传递依赖。

CLASS®DEPTNO,    DEPTNO®CLASS, DEPTNO®DEPTNAME

DEPTNAMECLASS为传递依赖。所以对CLASS1还要进行分解,分解为下列模式:

CLASS2CLASSDEPTNO

DEPARTMENTDEPTNODEPTNAME

关系模式STUDENT经过上述分解处理,分解成下列关系模式:

STUDENT2SNOSNAMEAGESEXCLASS

CLASS2CLASSDEPTNO

DEPARTMENTDEPTNODEPTNAME

COURSECNOCNAMECREDIT

SCSNOCNOSCORE

BCNF范式:BCNF是修正的第三范式。

设关系模式R(UF)Î1NF,若X®Y,而Y不包含在X中,那么X必含有码,则R(U, F)BCNF。换句话说,每个决定因素都包含有码,则关系模式为BCNF

3NF关系模式和BCNF的关系模式之间有下列关系:

如果RÎBCNF,则RÎ3NF,反之不成立

BCNF的定义消除了3NF模式中可能存在主属性对码的部分函数依赖和传递函数依赖。

模式分解

    2.模式分解原则:

    分解

    定义  (分解)关系模式R(UF)的一个分解是指,P{Rl

  (UlP1)R2(U2F2),…R(U。,F)},其中:

    n

    UUU,并且没有U(U1ijnEFU上的投影。

    其中Fi{XY[XYEF’八XYUi}

    对一个给定的模式进行分解,使得分解后的模式是否与原来的模式等价有三种情况:

    (1)分解具有无损连接性;

    (2)分解要保持函数依赖;

    (3)分解既要无损连接性;又要保持函数依赖。

    无损连接

    定义  (无损连接)P{R(U1F)R(U:,F2),…Rh(Uk Fk)}是关系模式R(UF)的一个分解,若对R(UF)的任何一个关系r均有rmP(r)成立,则成分解P具有无损连接性(简称无损分解)

    k

    其中,mP(r):冈丌R(r)

    定理  关系模式R(UF)的一个分解,P{R1(U:,F1)R

  (U2F)}具有无损连接的充分必要的条件是:

    UlU2UlU2EF’或

    UlU2+U2UlEF

    保持函数依赖

    ,其步骤如下:;    (1)R(UF)的函数依赖集F进行极小化处理(处理后的:结果仍记为F) i

     (2)找出不在F中出现的属性,将这样的属性构成一个关系

  模式。把这些属性从U中去掉,剩余的属性仍记为U

    (3)若有XAF,且XAU,则P{R>,算法终止;

    (4)否则,对F按具有相同左部的原则分组(假定分为k)

  每一组函数依赖Fi所涉及的全部属性形成一个属性集U。若U

  U(ire㈠就去掉U。由于经过了步骤(2),故

   {R(UlF1)R2(U2F2),…Rk(Uk

  Fk)}构成R(UF)的一个保持函数依赖的分解。并且,每个Ri

  (UiE)均属于3NF且保持函数依赖。

    4  关系模式R(UF),其中U{CTHISG)F{

  CSGC+TTHIHICHSI>,将其分解成3NF并保持

  函数依赖。

      根据算法2求解如下:

    (1)F已为最小函数依赖集;

    (2)R中的所有属性均在F中都出现,所以转(3)

    (3)F按具有相同左部的原则分为:R1CSGR2CT R3::THIR4:::HICR5:::HSR

    所以P{R1(CSG)R2(CT)R3(THl)R4(HIC)R5 (HSR)}

    算法3  将一个关系模式转换成3NF,使它既具有无损连接又保持函数依赖的分解。

    输入  关系模式RR的最小函数依赖集F

    输出  R(UF)的一个分解P{R1(U,,F1)R(U:,F),…,Rk(UkFk)},民为3NF,且P具有无损连接又保持函数依赖的分解。

    操作步骤如下:

    (1)根据算法2求出保持依赖的分解P{R1R。,…,R}

 ii  (2)判分解P是否具有无损连接性,若有,转(4)  (3)ppU{X),其中XR的候选关键字; (4)输出P。·

    算法4  将关系模式转换成BCNF,使它具有无损连接的分解。

    输入  关系模式R和函数依赖集F

    输出  R(UF)的一个分解P{R(U,,F1)R(U2F),… Rk(UkFk)},民为BCNF,且P具有无损连接的分解。

    操作步骤如下:

    (1)P{R}

    (2)P中的所有模式都是BCNF,则转(4)

    (3)P中有一个关系模式民不是BCNF,则民中必能找到一个函数依赖XA,且X不是民的候选键,且A不属于X,设 Rn(XA)Ri2(民一A),用分解{民,,Rn}代替民,转(2)

(5)输出F

 3.模式分解方法

关系模式分解的基础是键码和函数依赖。当我们对关系模式中属性之间的内在联系做了深入、准确的分析,确定了键码和函数依赖之后,模式分解因有章(规则)可循,有法(方法)可依而显得简单明了。

公共属性共享

    要把分解后的模式连接起来,公共属性是基础。若分解时模式之间未保留公共属性,则只能通过笛卡尔积相连,导致元组数量膨胀,真实信息丢失,结果失去价值。保留公共属性,进行自然连接是分解后的模式实现无损连接的必要条件。

相关属性合一

    把以函数依赖的形式联系在一起的相关属性放在一个模式中,从而使原有的函数依赖得以保持。这是分解后的模式实现保持依赖的充分条件。然而,对于存在部分依赖或传递依赖的相关属性则不应放在一个模式中,因为这正是导致数据冗余和更新异常的根源,从而也正是模式分解所要解决的问题。

 

      模式分解的三种方法

部分依赖归子集;完全依赖随键码。

    要使不属于第二范式的关系模式“升级”,就要消除非主属性对键码的部分依赖。解决的办法就是对原有模式进行分解。分解的关键在于:找出对键码部分依赖的非主属性所依赖的键码的真子集,把这个真子集与所有相应的非主属性组合成一个新的模式;对键码完全依赖的所有非主属性则与键码组合成另一个新模式。

基本依赖为基础,中间属性作桥梁

    要使不属于第三范式的关系模式“升级”,就要消除非主属性对键码的传递依赖。解决的办法非常简单:以构成传递链的两个基本依赖为基础形成两个新的模式,这样既切断了传递链,又保持了两个基本依赖,同时又有中间属性作为桥梁,跨接两个新的模式,从而实现无损的自然连接。

找违例自成一体,舍其右全集归一

      若发现仍有违例,再回首如法炮制

    要使关系模式属于BC范式,既要消除非主属性对键码的部分依赖和传递依赖,又要消除主属性对键码的部分依赖和传递依赖。

如果一个关系数据库中的所有关系模式都满足于BC范式,那么在函数依赖范畴内,它已实现了模式的彻底分解,达到了最高的规范化程度,消除了更新异常和信息冗余。

 

    第一范式是关系模式的基础,因此,即使未明确指出某关系模式属于第一范式,也应认为尽在不言中。

     对键码和函数依赖的分析是判别第二、第三和BC范式的基础。在分析函数依赖的基础上找出关系的键码,从而把属性分为主属性和非主属性。

第二、第三范式只检查非主属性与键码之间的函数依赖关系。

BC范式检查每个函数依赖,而不分主属性和非主属性。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值