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

数据库设计第三范式

2013年10月08日 ⁄ 综合 ⁄ 共 1393字 ⁄ 字号 评论关闭

一、数据库设计范式及其意义和不足

数据库的设计范式是数据库设计所需要满足的规范,数据库的规范化是优化表的结构和优化把数据组织到表中的方式,这样使数据更明确,更简洁。实践中,通常把一个数据库分成两个或多个表并定义表之间的关系以做到数据隔离,添加、删除和修改某个字段只需要在一个表中进行,接着可以通过定义的关系传递到数据库中剩余的表中(和分层思想的意义所在很相似)。这样我们可以消除很多错误或垃圾数据出现的机会并减轻更新信息所必要的工作量。

目前,主要有六种范式:第一范式、第二范式、第三范式、BC范式、第四范式和第五范式。满足最低要求的叫第一范式,简称1NF。在第一范式基础上进一步满足一些要求的为第二范式,简称2NF。其余依此类推

事物往往具有多面性,设计范式也会带来一定的麻烦:操作困难,因为需要联系多个表才能得到所需要数据,而且范式越高性能就会越差。所以使用多高的范式需要权衡利弊,一般在项目中,使用到第三范式也就足够了,性能好而且方便管理数据

 

二、下面我们来举例介绍一下数据库设计三范式

说明:实例采用《学校机房收费系统》的“学生信息表”,“学生上下机记录表”的部分字段

 

1、第一范式1NF

定义:数据库表中的字段都是单一属性的,不可再分。

简单的说,每一个属性都是原子项,不可分割。

 

1NF是关系模式应具备的最起码的条件,如果数据库设计不能满足第一范式,就不称为关系型数据库。也就是说,只要是关系型数据库,就一定满足第一范式。

 

我们先来看一张不符合1NF的表1-1

CardNo

StudentNo

StudentName

Sex

Department

CardCash

UserID

UserLevel

Time

001

021101

小明

教育学院,心理系,1

100

Operator

操作员

2011/10/030900

 

之所以说这张表不符合1NF,是因为DepartmentTime字段可以再分,所以应该更改为表1-2

CardNo

StudentNo

StudentName

Sex

Academy

Major

class

CardCash

UserID

UserLevel

Date

Time

001

021101

小明

教育学院

心理系

1

100

Operator

操作员

2011/10/03

09:00

 

2、第二范式2NF

定义:数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖,即符合第二范式。

 

《注:什么是函数依赖,详见百度百科(http://baike.baidu.com/view/40008.htm)

如果一个表中某一个字段A的值是由另外一个字段或一组字段B的值来确定的,就称为A函数依赖于B。》

2NF可以减少插入异常,删除异常和修改异常。

 

简单的说,一方面,第二范式肯定要满足第一范式,否则就没有必要谈第二范式。

另一方面,当某张表中的非主键信息不是由整个主键函数来决定时,即存在依赖于该表中不是主键的部分或者依赖于主键一部分的部分时,通常会违反2NF

 

我们再来看上面的满足1NF的表1-2

CardNo

StudentNo

StudentName

Sex

Academy

Major

class

CardCash

UserID

UserLevel

Date

Time

001

021101

小明

教育学院

心理系

1

100

Operator

操作员

2011/10/03

09:00

 

我们看到,在这张表中,通过CardNoStudentNo就可以确定

抱歉!评论已关闭.