数据库三范式
所有的管理信息都是基于数据库技术的,一个良好的数据组织结构会提高管理信息系统软件的运行效率,是衡量
系统开发工作好坏的主要指标之一。
一,数据设计的任务
数据库设计是再数据字典的基础上进行的,但由于数据字典是系统分析阶段的结果,它距离计算机的实现还是有
一段距离的,需要在本阶段对这些资料进行规范化整理。因此数据的主要任务可以分为:
二.数据库设计步骤
三,数据三范式
有人说,数据按照规定设计出来了就可以了,怎么还要弄一个数据库设计三范式呢,麻烦啊,我想回答他说,现
在确实是有点麻烦,以后就不互那么麻烦了。如果现在不麻烦,以后就会更加麻烦。下载我们来看一个例子,数据库
表如下所示:
注意观察这张表,至少存在了四个最基本的问题:
1.数据冗余:在这里面有重复的数据,例如,有些系主任的名字重复出现,重复次数与该系所有学生的所有课程,所
有课程成绩出现次数是相同,这就会极大的浪费存储空间。
数据冗余:指一个数据在一个或者多个数据文件中重复存储.在SQL Server中,一个数据库对应一个数据库文件。产
生的原因是因为数据依赖。
2.更新异常:由于数据容易,当更新数据库中的数据时,系统要付出很大的代价来维护数据库的完整性,否则就会面
临数据不一致的危险,例如,信息与计算科学析要把张宝雷老师更换掉,系统必须修改与该系学生有关的记录。
3.插入异常:如果有个移动通信系要建立,由于是刚建立,还没有学生那么就无法把这个系及其系主任的信息存入数
据库。
4.删除异常:如果信息与计算科学系的08届学生全部毕业了,在删除该系学生的同时也把这个系和期系主任的信息删
除。
从上述的例子可以看出来,如果还是按照上面的结构存储数据的画,开发的管理信息系统将会出现大量的数据冗
余,可能会发生插入异常,删除异常和更新异常等现象,这样的管理信息系统是很难满足用户要求。
不满足用户要求的系统开发得再好也是垃圾,只有满足了用户要求的系统才是一个好的系统,设计一个好的系统
就离不开数据库的设计,数据库的设计以第三范式为基准。下面我们来看看数据库三范式:
第一范式(First Normal Form):设一个关系为R,如果它的每个属性都是不可再分的,则称这个关系是符合
第一范式的,简称1NF。
第二范式(Second Normal Form):设一个关系为R,它是满足第一范式的,若R中不存在非主属性对主键的
部分函数依赖,则称该关系是符合第二范式的,简称2NF。
这个表的关系是符合第一范式,但是没有符合第二范式,一般可通过关系分解的方法,消除部分函数依赖,达到第二范
式.对应学生选课关系,可不断地分解成以下三个关系:
学生=(学生号 ,姓名,性别,专业)
课程=(学生号,课程号,成绩)
选课=(课程号,课程名,课程学分)
从上表中可以看出,着三个关系均不存在部分函数依赖,但是他们之间还是存在传递关系的,如何消除传递关系
呢,就要考虑考虑第三范式。
第三范式(Third Normal Form):设一个关系为R,它是满足第二范式的,若R中不存在非主属性对主键的传
递函数依赖,则称该关系是符合第三范式,简称为3NF。
上述的表关系不符合第三范式,消除关系中也是通过不断的关系分解的方法来实现,对学生住宿关系进行分解得
到一下三个关系:
系=(系号,系名,系地址,系电话)
宿舍=(宿舍号,宿舍电话)
学生=(学号,姓名,型别,籍贯,系号,宿舍号)
虽然说没有冗余的数据库设计可以做到,但是没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,
就必须降低范式标准,适当保留冗余数据。同时,为了提高数据的运行效率,常常需要降低范式标准;适当增加冗
余,达到以空间换时间的目的。
数据库三范式只是一种规则而已,不一定适合自己的系统,如果数据库三范式适合自己的系统是最好的,如果不
符合就适当的加入一些数据冗余,何尝有不可呢?
学习也是一样,每个人都有自己的学习方法,学习方法可以相互借鉴,但是不一定完全适合自己的,就如米老师
常常对我们所说的那样,世界没有一成不变的,只有变才是不变的。