浅析关系数据库规范化与数据库设计

2017-12-26 11:56汤小波
商情 2017年42期
关键词:范式规范化数据库

汤小波

[摘要]本文介绍了在实际开发过程中如何应用数据库规范化理论指导数据库设计,谈到了基本概念函数依赖及三种基本的范式要求,并运用其规划设计数据库,最终达到一个合格的数据库模式。

[关键字]函数依赖 范式 规范化

1.函数依赖

数据依赖是通过一个关系中属性问值的相等与否体现出来的数据间的相互关系,是现实世界属性间联系和约束的抽象,是数据内在的性质,是语义的体现。函数依赖则是一种最重要、最基本的数据依赖。什么是函数依赖呢?

函数依赖:设R(u)是属性集u上的关系模式,X、Y是U的子集。若对R(U)的任何一个可能的关系r,r中不可能存在两个元组在X上的属性相等,而在Y上的属性值不等,则称X函数决定Y或Y函数依赖于X,记作X一一>Y。

2.规范化

关系数据库设计的为方法之一就是设计满足适当范式的模式,通常可以通过判断分解后的模式达到几范式来评价模式规范化的程度。范式有1NF、2NF、3NF、BCNF、4NF和5NF,其中1NF级别最低,通过分解,可以将一个低一级范式的关系模式转换成若干个高一级范式的关系模式,这种过程叫做规范化。

(1)1NF(第一范式)。若关系模式R的每一个分量是不可再分的数据项,则关系模式R属于第一范式,例如:有这样一张数据表FIRST它表示供应者和它所提供的零件信息。

此关系模式的函数依赖集F如下:

F={snO-->Sname,Sno-->Status,Status-->City,(snO,Pno)-->Qty},从上表可以看出,每一个分量都是不可再分的数据项,所以它是1NF。但是,它存在4个问题:

其一、冗余度大。例如,每个供应者的Sno、Sname,Status和City要与其供应的零件种类一样多。如S1、S2与S3相关的多条记录均具有相同的供应者的名字、状态和城市,造成了数据冗余。

其二、引起修改操作的不一致性。例如,供应者s1从“天津”搬到“上海”,若稍不注意,就会使一些数据被修改,另一些数据没有被修改,导致数据修改的不一致。

其三、插入异常。关系模式First的主码Sno、Pno,按照关系模式实体完整性规定,主码不能取空值或部分取空值。这样,当某个供应者的某些信息未提供时(如Pno),则不能进行插入操作,这就是所谓的插入异常。

其四、删除异常。若供应商S4的P2零件销售完了,并且以后不再销售P2零件,那么应删除该元组。这样,在基本关系First找不到s4,可s4又客观存在的。

(2)2NF(第二范式)

定义:若关系模式R属于1NF,且每一个非主属性完全依赖于码,则关系模式R属于2NF。换句话说,当1 NF消除了非主属性对码的部分函数依赖,则称为2NF。例如,在上述关系First中的码是Sno、Pno,而Sno-->Status,因此非主属性Status部分函数依赖于码,故非2NF的。对于上述关系可以作如下分解,将其分解为Firstl(sn口,Sname,Status,c时)和First2(Sno,Pno,Qty)。这样分解后,关系模式Firstl的码为Sno,非主属性Sname、Status、City完全依赖于码Sno,所以属于2NF;关系模式First2的码为Sno、Pno非主属性Qty完全依赖于码,所以也属于2NF。经过这样分解后,两数据表如下:

通过对关系First分解成Firstl和First2两个关系后,可以发现1NF中出现的数据冗余问题解决了,引起修改操作的不一致性的隐患也消除了,删除异常可解决了,确实2NF在数据库设计中具有很强的现实意义和可操作性。

(3)3NF(第三范式)。若关系模式R(U,F)中若不存在这样的码X,属性组Y及非主属性Z(Z不属性Y)使得X-->Y,Y-->Z成立,则关系模式R属于3NF。即当2NF消除了非主属性对码的传递函数依赖,则称为3NF。

在关系Firstl中,存在这样的问题,Sno-->Status,而Status-->City,存在着非主属性City传递依赖于码Sno。若将Firstl继续分解如下:

First1(sno,Sname,Status),First2(status,City)这样就消除了City对Sno的传递依赖关系,此时就达到了3NF。按照此思想設计改写上述数据库设计,将关系First分解为三个关系,每个关系满足3NF。关系表如下:

关系Firstl(sn0,Sname,Status)

关系First2(Status,c时)

关系First3(sn0,Pno,Qty)同上。

3、总结

在数据库设计过程中,我们要求每张表均达到3NF,对于非3NF的1NF、2NF其性能弱,一般不宜作为数据库模式,通常要将它们变换成3NF或更高级别的范式。将这个变换过程称为“关系模式的规范化处理”,关系数据库规范化理论,它对于指导我们进行数据库设计具有现实的意义,在实际开发中将有意识地应用这一理论,设计出高质量的数据库,它是我们项目开发成功的先决条件。

猜你喜欢
范式规范化数据库
重症疾病患者抢救中应用规范化急救护理的价值
规范化产科超声检查对胎儿先天畸形的诊断价值
基于SCP范式的贵州省食用菌产业分析
规范化护理告知在产科新生儿护理中的应用
谨言慎行
从教师视角谈“读思达”课堂范式——以“百分数的认识”为例
工商银行与第四范式正式签约共建银行AI核心系统
数据库
数据库
数据库