现在的位置: 首页 > 综合 > 正文

数据库范式浅解

2011年02月16日 ⁄ 综合 ⁄ 共 1115字 ⁄ 字号 评论关闭

这学期滥竽充数教授学生oracle数据库,很多学生被我忽悠的希望考数据库工程师,他们在备考的时候都遇到数据库设计范式的概念问题,定义看不明白,用抽象的关系数学描述更不明白。

我也查阅了很多资料,基本也都是理论来理论去,没有阐述清楚范式规范在实际数据库设计中的意义和应用。

目前关系数据库有六种范式:第一范式1NF)、第二范式2NF)、第三范式3NF)、第四范式(4NF)、第五范式(5NF)和第六范式(6NF)。满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多要求的称为第二范式(2NF),其余范式以次推。一般说来,数据库只需满足第三范式(3NF)就行了。下面我们举例介绍第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。

我试图这样解释前三范式:

第一范式(1NF): 对于表中的每一行,必须且仅仅有唯一的行值;在一行中的每一列仅有唯一的值并且具有原子性。

这个概念的第一句话很好理解,任何人也不会在一张表中存在两个一模一样的记录。关键是第二句话:在一行中的每一列仅有唯一的值并且具有原子性,看如下示例:

比如有一张学生的基本资料表,如下图所示:

学号

学生姓名

学生系部

学生班级

性别

电话

510073238

卜峰

信息工程系

计媒0523

’025858432511381541911013813000000

510073232

姚丽萍

信息工程系

计媒0523

 

510601114

杨雯雯

信息工程系

软件0515

0523-8377089213770525646

410022206

桑旭娟

信息工程系

信管0424

025-8587466213601468109

410022207

王玫

信息工程系

信管0424

0513-8844046013851989926

410022209

张露丽

信息工程系

信管0424

025-85874662

410032231

谭浩

信息工程系

影视0424

51988041182

这个表不符合1NF,因为“电话”字段中的值有多个,可以分割成多个值,不具有原子性,这样带来的问题维护、查询、统计该字段的值很麻烦。

我们通过把重复的字段的值放到独立的表中,把这些表通过一对多关系关联起来消除重复值。可以把上面的表改造成以下两张表,以符合第一范式:

学号

学生姓名

学生系部

学生班级

性别

510073238

卜峰

信息工程系

计媒0523

510073232

姚丽萍

信息工程系

计媒0523

510601114

杨雯雯

信息工程系

软件0515

410022206

桑旭娟

信息工程系

信管0424

410022207

王玫

信息工程系

信管0424

410022209

张露丽

信息工程系

信管0424

410032231

谭浩

信息工程系

影视0424

抱歉!评论已关闭.