首页 百科知识 关系规范化理论

关系规范化理论

时间:2022-10-21 百科知识 版权反馈
【摘要】:E.F.Codd提出了规范化的问题,并给出范式的概念。关系模式的规范化就是逐步消除数据依赖中的不合理部分,使模式中的各个关系达到某种范式。关系模式规范化的过程如图1-6。是否规范化的程度越深越好?所以规范化的程序应该适宜于具体的应用需要。

1.3.4 关系规范化理论

关系数据库的规范化理论用于指导如何构造一个好的数据库模式。

首先,通过一个实例来评价数据库模式设计的好坏。设需设计一个学生数据库D。它有属性:S#(学号)、SN(姓名)、SA(年龄)、D#(系科代号)、DN(系名)、DT(系办电话),还有一些学生选修的课程细节C#(课程号)、CN(课程名)、G(成绩)、PC#(先修课号)。要将这10个属性构造成一些合适的关系模式,从而构成一个关系数据库,可能有多种数据库模式。我们来看以下两种数据库模式:

1.只有1个关系模式

D(S#、SN、SA、D#、DN、DT、C#、CN、PC#、G)

2.有3个关系模式

S(S#、SN、SA、D#)

C(C#、CN、PC#)

SC(S#、C#、G)

比较这两种设计方案,第一种设计可能有下述问题:

(1)数据冗余:如果学生选修了多门课程,则每选修一门课程必须存储一次学生细节。同样,当一门课程由多个学生选修时,也必须重复存储该门课程的细节。

(2)修改异常:由于数据冗余,当修改某些数据项(如课程名称)时,可能有一部分有关元组被修改,而另一部分有关元组却没被修改。

(3)插入异常:当开设了一门新课,而这门课程还没有被任何一个学生选修,则该课程的细节将无法进入数据库中。因为在D关系模式中,(S#、C#)是主键,此时S#为空值,实体完整性约束不允许主键为空或部分为空的元组在关系中出现,因此,该课程的细节不能在数据库中存储。

(4)删除异常:如果某个学生选修的课程都删除了,那么,此学生的细节也一起被删除了。

第二种设计就不存在上述问题,数据冗余消除了。不仅如此,即使学生在不选任何课程时,他的细节也仍然保存在关系S中。然而,还有另外一些问题,如使用上述模式时,为找到选修课程名为“数据结构”的学生姓名时,则需进行3个关系的连接操作,代价很高。相比之下,使用D关系则直接选择、投影即可,显然代价较低。

那么,对于上述4类问题,是否能在第二种设计中完全消除?如何能找到一个好的数据库模式?这正是数据库设计理论也即关系规范化理论所研究的问题。

关系规范化理论主要包括3个方面的内容:数据依赖、范式和数据库模式设计方法,其中数据依赖起核心作用。

一、关系中的函数依赖

数据依赖中最基本的是函数依赖。函数依赖讨论关系中属性间的联系,它普遍地存在于现实生活中,比如,描述一个学生的关系,可以有学号(S#)、姓名(SN)、年龄(SA)等几个属性。由于一个学号只对应一个学生,一个学生只有一个姓名和一个年龄。因而,当“学号”值确定之后,姓名和年龄的值也就被惟一地确定了,就像自变量x确定之后,相应的函数值f(x)也就惟一地确定了一样,所以说S#函数决定SN和SA,或者说SN、SA函数依赖于S#。

1.函数依赖的定义

设X,Y为关系R中的两个属性集,若对于X中的每一个属性值,在Y中只有一个值与之对应,则称“X函数决定Y”或“Y函数依赖于X”,记作X→Y,并称X为决定因素。

2.关系数据库中函数依赖的分类

(1)完全函数依赖和部分函数依赖:设X→Y是一个函数依赖,且对于X的任一真子集X′,X′→Y都不成立,则称X→Y是一个完全函数依赖。反之,如果X′→Y成立,则称X→Y是部分函数依赖。

(2)传递函数依赖:设X,Y,Z是关系R中3个属性集,若存在X→Y,Y→X且Y→Z,则函数依赖X→Z也成立,但它不是直接的函数依赖,而是通过传递而使X→Z成立的,称Z传递函数依赖于X。

二、关系模式的范式

E.F.Codd提出了规范化的问题,并给出范式的概念。关系数据库中的关系要满足一定要求,满足不同程度要求的为不同范式。下面给出范式的定义。

1.第一范式

如果关系模式R的每一个属性都是不可分解的,则称R为第一范式的模式,记为R∈1NF模式。

1NF是关系数据库的关系模式应满足的最起码的条件。

2.第二范式

如果关系模式R是第一范式,且每个非主属性都是完全函数依赖于关键字,则称R为第二范式的模式,记为R∈2NF模式。

3.第三范式

如果关系模式R是第二范式,且没有一个非主属性是传递函数依赖于关键字,则称R为第三范式的模式,记为R∈3NF模式。

4.扩充的第三范式

如果关系模式R是第三范式,且没有一个主属性是部分函数依赖或传递函数依赖于关键字,则称R为扩充第三范式模式,记为R∈BCNF模式。

三、关系模式的规范化

关系模式的规范化就是逐步消除数据依赖中的不合理部分,使模式中的各个关系达到某种范式。关系模式规范化的过程如图1-6。

是否规范化的程度越深越好?这要根据需要决定,因为“分离”越深,产生的关系越多,关系过多,连接操作越频繁,而连接操作是最费时间的。特别对以查询为主的数据库应用来说,频繁的连接会影响查询速度。所以规范化的程序应该适宜于具体的应用需要。

img8

图1-6 关系模式规范化过程

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈