数据库三范式

来源:互联网 发布:战无不胜天罡进阶数据 编辑:程序博客网 时间:2024/05/02 02:44

    所有的管理信息都是基于数据库技术的,一个良好的数据组织结构会提高管理信息系统软件的运行效率,是衡量

 

系统开发工作好坏的主要指标之一。

 

,数据设计的任务

 

   数据库设计是再数据字典的基础上进行的,但由于数据字典是系统分析阶段的结果,它距离计算机的实现还是有

 

一段距离的,需要在本阶段对这些资料进行规范化整理。因此数据的主要任务可以分为:

 

.数据库设计步骤

 

 

,数据三范式

 

   有人说,数据按照规定设计出来了就可以了,怎么还要弄一个数据库设计三范式呢,麻烦啊,我想回答他说,现

 

在确实是有点麻烦,以后就不互那么麻烦了。如果现在不麻烦,以后就会更加麻烦。下载我们来看一个例子,数据库

 

表如下所示:

 

注意观察这张表,至少存在了四个最基本的问题:

 

1.数据冗余:在这里面有重复的数据,例如,有些系主任的名字重复出现,重复次数与该系所有学生的所有课程,所

 

有课程成绩出现次数是相同,这就会极大的浪费存储空间。

 

   数据冗余:指一个数据在一个或者多个数据文件中重复存储.SQL Server中,一个数据库对应一个数据库文件。产

 

生的原因是因为数据依赖。

 

2.更新异常:由于数据容易,当更新数据库中的数据时,系统要付出很大的代价来维护数据库的完整性,否则就会面

 

临数据不一致的危险,例如,信息与计算科学析要把张宝雷老师更换掉,系统必须修改与该系学生有关的记录。

 

3.插入异常:如果有个移动通信系要建立,由于是刚建立,还没有学生那么就无法把这个系及其系主任的信息存入数

 

据库。

 

4.删除异常:如果信息与计算科学系的08届学生全部毕业了,在删除该系学生的同时也把这个系和期系主任的信息删

 

除。

 

   从上述的例子可以看出来,如果还是按照上面的结构存储数据的画,开发的管理信息系统将会出现大量的数据冗

 

 

余,可能会发生插入异常,删除异常和更新异常等现象,这样的管理信息系统是很难满足用户要求。

 

   不满足用户要求的系统开发得再好也是垃圾,只有满足了用户要求的系统才是一个好的系统,设计一个好的系统

 

就离不开数据库的设计,数据库的设计以第三范式为基准。下面我们来看看数据库三范式:

 

 

第一范式(First Normal Form):设一个关系为R,如果它的每个属性都是不可再分的,则称这个关系是符合

 

第一范式的,简称1NF

第二范式(Second Normal Form):设一个关系为R,它是满足第一范式的,若R中不存在非主属性对主键的

 

部分函数依赖,则称该关系是符合第二范式的,简称2NF

   这个表的关系是符合第一范式,但是没有符合第二范式,一般可通过关系分解的方法,消除部分函数依赖,达到第二范

 

.对应学生选课关系,可不断地分解成以下三个关系

 

学生=(学生号 ,姓名,性别,专业)

 

 

课程=(学生号,课程号,成绩)

 

 

选课=(课程号,课程名,课程学分)

   从上表中可以看出,着三个关系均不存在部分函数依赖,但是他们之间还是存在传递关系的,如何消除传递关系

 

呢,就要考虑考虑第三范式。

 

第三范式(Third Normal Form):设一个关系为R,它是满足第二范式的,若R中不存在非主属性对主键的传

 

递函数依赖,则称该关系是符合第三范式,简称为3NF

 

   上述的表关系不符合第三范式,消除关系中也是通过不断的关系分解的方法来实现,对学生住宿关系进行分解得

 

到一下三个关系:

 

=(系号,系名,系地址,系电话)

 

宿舍=(宿舍号,宿舍电话)

 

学生=(学号,姓名,型别,籍贯,系号,宿舍号)

   虽然说没有冗余的数据库设计可以做到,但是没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,

 

就必须降低范式标准,适当保留冗余数据。同时,为了提高数据的运行效率,常常需要降低范式标准;适当增加冗

 

余,达到以空间换时间的目的。

 

   数据库三范式只是一种规则而已,不一定适合自己的系统,如果数据库三范式适合自己的系统是最好的,如果不

 

符合就适当的加入一些数据冗余,何尝有不可呢?

 

   学习也是一样,每个人都有自己的学习方法,学习方法可以相互借鉴,但是不一定完全适合自己的,就如米老师

 

常常对我们所说的那样,世界没有一成不变的,只有变才是不变的。