关系模式的规范化

   今天来介绍数据库中的几种范式。

一、常用的几个范式

1、第一范式(1NF

   定义:在关系模式R中,当且仅当所有域值包含原子值,即每个分量都是不可再分的数据项,则称关系模式R属于1NF。

   用自己的话来形容:1NF即原子性。

举例:

供应者和它所提供的两件信息表

Sno

Sname

Status

City

Pno

Qty

S1

精益

20

天津

P1

200

S1

精益

20

天津

P2

300

S1

精益

20

天津

P3

480

S2

盛锡

10

北京

P2

168

S2

盛锡

10

北京

P3

500

S3

东方

30

北京

P1

300

S3

东方

30

北京

P2

280

S4

泰达

40

上海

P2

460

关系模式R和函数依赖集F如下:

R(Sno,Sname,Status,City,Pno,Qty

F={Sno→Sname,Sno→Status,Status→City,(Sno,Pno) →Qty}

每个分量都是不可再分的数据项,因此关系模式R∈1NF

   1NF存在缺点:(1)冗余度大;(2)引起修改操作的不一致性;(3)插入异常;(4)删除异常。

2、第二范式(2NF

   定义:若关系模式R属于1NF,且每个非主属性完全依赖于码(即主键),则关系模式R属于2NF。

  用自己的话来形容:R∈1NF,且组合主键中的某一个能推出某一字段。

  举例:

  将关系模式R分解成R1(Sno,Sname,Status,Ciy)和R2(Sno,Pno,Qty)后,R1,、R2都属于2NF,将1NF分解成2NF,解决了非主属性对码的“部分依赖”。

3、第三范式(3NF

   定义:若关系模式R(U,F)中不存在这样的码X,属性组Y及非主属性Z使得X→Y,Y→Z且X函数不依赖与Y成立,则关系模式R属于3NF。

   用自己的话来形容:R∈2NF,且主键能推出所有列。

   举例:

   将关系模式R1分解成R11(Sno,Sname,Status)和R22(Status,City)后,R11、R22都属于3NF,将2NF分解成3NF,解决了非主属性对码的“传递依赖”。

   总结:由此可知,通过分解,可以将一个低一级范式的关系模式转换成若干个高一级范式的关系模式。

二、扩展的范式

1、巴克斯范式(BCNF

  定义:设关系模式R<U,F>∈1NF,如果对于R的每个函数依赖X→Y,若Y不属于X,则X必含有候选码,那么R∈BCNF。当3NF消除了主属性对码的部分和传递依赖,则称为BCNF。

  用自己的话来形容:R∈3NF,且组合主键不能互相可以退出。

  举例:
  仓库管理表(仓库ID,存储物品ID,管理员ID,数量)

  F={(仓库ID,存储物品ID) →(管理员ID,数量),(管理员ID,存储物品ID) → (仓库ID,数量)}

  由此可知,(仓库ID,存储物品ID)和(管理员ID,存储物品ID)都是仓库管理表的候选关键字,表中的唯一非关键字段为数量,它是符合第三范式的。但是,由于存在如下决定关系:

(仓库ID) → (管理员ID)
(管理员ID) → (仓库ID)
即存在关键字段决定关键字段的情况,所以其不符合BCNF范式。
分解表为:
仓库管理(仓库ID,管理员ID);
仓库(仓库ID,存储物品ID,数量)。
这样数据库表就符合BCNF范式了。

2、第四范式(4NF

   关系模式R<U,F>∈1NF,如果对于R的每个非平凡多值依赖X→→Y(Y不属于X),X都含有候选码,则R∈4NF。4NF是限制关系模式的属性间不允许有非平凡且非函数的多指依赖。

  想了解4NF,请点击

  最后一个范式(5NF),不常用,不做讲解。1NF、2NF、3NF、BCNF、4NF、5NF这几种范式,级别依次升高。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 20
    评论
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值