1
管理信息系统
1.3.4.1 2.4.1 第一范式

2.4.1 第一范式

如果关系R的每一个属性值都是基本的、不可再分的数据项,则称R是第一范式的关系,记为1NF。从形式上来看,1NF即要求表格式简单表,具有平坦的数据结构。如图2-13,在表一中,由于“学生基本信息”一栏还可以再细分为“学号、姓名、年龄三个数据项”,因此不符合1NF的要求。

转化为第一范式的方法很简单,只需将可以再分的数据项分解成若干个基本的数据项即可。图2-13中的表二就是转换为1NF后的结果。

第一范式存在的问题

尽管如此,这张表格还存在一些问题,会使得“增、删、改和查询”出现异常。

首先确定主键(关键字)。根据前面关键字的定义——唯一标识一条记录的字段。不难发现,学号不能作为关键字,因为某一学号的同学所修课程不同时,会引起学号的重复,即学号不能唯一标识该表中的一条记录。同样,课程号也不能作为关键字,因为当不同学号的同学修某一课程时,会导致课程号的重复,所以,课程号也不能唯一标识该表中的一条记录。因此,只能采用组合关键字,即用两个字段作为关键字——“学号+课程号”。

img28

图2-13 第一范式

根据关键字不能为空的原则,每一条录入该表的记录,都必须同时具有“学号+课号”。那么,我们将无法录入任何一名暂时没有成绩的同学,即引起了“插入异常”。同样,如果老师在录选修课成绩的时候,把某一门课的成绩给了没有上过这门课的熊小炎同学,这时,如果该老师要删掉熊小炎这门课的成绩,那么就会一并把熊小炎同学的基本信息(学号、姓名、年龄)全部删掉,即引起了“删除异常”。

部分依赖

为了弄清楚引起上述问题的根源,这里引入一个新的概念——部分依赖。假设ABC分别是同一个数据结构R中的三个元素或分别是R中若干个数据元素的集合。C依赖于AB的真子集,则称C部分依赖于AB。否则,称为C完全依赖于AB。

在上例中,“姓名”、“年龄”只依赖于“学号”而与“课程号”无关,存在着部分依赖。正是因为部分依赖关系的存在,才使得“增、删、改”出现上述异常。