DBMNG数据库管理与应用

书籍是全世界的营养品。生活里没有书籍,就好像没有阳光;智慧里没有书籍,就好像鸟儿没有翅膀。

模式的规范化

模式的规范化用于数据库的设计过程中。一个好的数据库应该没有冗余、查询效率较高,其检验标准就是看数据库是否符合范式(normal formsNF)。范式可分为第一范式、第二范式和第三范式。在这三个范式中,以第一范式的要求为最低,第三范式的要求为最高。

1.4.1  第一范式

第一范式(1NF)规定了表中任意字段的值必须是不可分的,即每个记录的每个字段中只能包含一个数据,不能将两个或两个以上的数据“挤入”到一个字段中。例如,假设部分系办公室有两个电话号码,则表1.9是错误的。如果一些系确实需要两个电话,可以再增加一个字段保存第二个电话号码,如表1.10所示。注意两个电话号码的字段名不能相同。

            1.9  有错误的“系”表                     表1.10  修改后的“系”表

系编号

系  名

电  话

系编号

系  名

电话1

电话2

D01

计算机系

3435875034358751

D01

计算机系

34358750

34358751

D02

社科系

76853212

D02

社科系

76853212

D03

生物系

8623893113922449900

D03

生物系

86238931

13922449900

1.4.2  第二范式

仅仅满足第一范式是不够的,当一个表中所有非主键字段完全依赖于主键字段时,称该表满足第二范式(2NF)。观察表1.11所示的工作量表。

1.11  出现数据冗余的“工作量”表

职工号

工地编号

  

  

造价/万元

工作量

M01

HK03

临江花园

虹口

1500

 80

M01

PT17

兰亭小区

普陀

1800

 73

M02

HK03

临江花园

虹口

1500

103

M02

ZB21

桃源新苑

闸北

2100

 98

M02

PT17

兰亭小区

普陀

1800

 82

“工作量“表的主键由两个字段组合而成,表中的“名称”字段与“职工号”无关,它只依赖于“工地编号”,而不是依赖于主键“职工号+工地编号”,因此该表不符合第二范式的要求。可以想象,如果“临江花园”工地需要100名职工,则该数据将在表中出现100次,这是不该出现的数据冗余。解决这类问题的办法是将该表分解成“工作量”表与“工地”表,使得两个表中的非主键字段依赖各自的主键“职工号+工地编号”和“工地编号”,如表1.12和表1.13所示。

        表1.12  “工作量”表                             

职工号

工地编号

工作量

M01

HK03

 80

表1.13  “工地”表

M01

PT17

 73

工地编号

名称

位置

造价/万元

M02

HK03

103

HK03

临江花园

虹口

1500

M02

ZB21

 98

PT17

兰亭小区

普陀

1800

M02

PT17

 82

ZB21

桃源新苑

闸北

2100

当一个表的主键是由两个或两个以上字段组合而成的复合主键时,要特别注意该表是否满足第二范式。

1.4.3  第三范式

在满足第二范式的前提下,如果一个表的所有非主键字段均不传递依赖于主键,称该表满足第三范式。

假设表中有ABC三个字段,所谓传递依赖是指表中B字段依赖于主键A字段,而C字段依赖于B字段,称字段C传递依赖于字段A,这种情况应该避免。观察表1.14所示的“导师”表。

1.14  有传递依赖的“导师”表

导师编号

  

  

  

系编号

  

  

101

平林

教授

D02

社科系

76853212

102

李向明

副教授

D01

计算机系

34358750

103

马大可

研究员

D03

生物系

86238931

104

李小严

教授

D02

社科系

76853212

“导师”表的主键是“导师编号”,“系编号”等非主键字段均依赖于它,但“系名”和“电话”字段却与“导师编号”无关,而仅仅依赖于“系编号”,从而形成传递依赖,造成系名和电话数据的重复。解决方法是将该表分解成“导师”表与“系”表,如表1.15和表1.16所示。

                表1.15  “导师”表                              

导师编号

  

  

  

系编号

1.16  “系”表

101

平林

教授

D02

系编号

  

  

102

李向明

副教授

D01

D01

计算机系

34358750

103

马大可

研究员

D03

D02

社科系

76853212

104

李小严

教授

D02

D03

生物系

86238931

 

本站文章内容,部分来自于互联网,若侵犯了您的权益,请致邮件chuanghui423#sohu.com(请将#换为@)联系,我们会尽快核实后删除。
Copyright © 2006-2023 DBMNG.COM All Rights Reserved. Powered by DEVSOARTECH            豫ICP备11002312号-2

豫公网安备 41010502002439号