三大范式

1、三大范式

1.1 第一范式(1NF)

确保每列的原子性,要求每列都是不可再分的最小数据单元。每个单一属性必须由基本的数据类型构成,如整数、字符串。

例如,这张表

编号

姓名

性别

联系电话

地址

1

王大宝

199000000

广东省广州市新华路tan90 号

问题:现实生活中每个人都有可能不止一个联系电话,而且地址可再分为省份和城市。不符合1NF

优化:

编号

姓名

性别

个人电话

家庭电话

省份

城市

详细地址

1

王大宝

15015246623

663323

广东

广州

新华路tan90 号

1.2 第二范式(2NF)

在1NF基础上,要求表中每列都和主键相关,除了主键之外全部列依赖于该主键。

例如,设计一个订单信息表,因为订单中可能会有多种商品,所以要将订单编号和商品编号作为数据库表的联合主键:

订单编号

商品编号

商品名称

数量

单位

商品单价

订单客户

所属单位

联系方式

0001

1

电风扇

5

99

王大宝

蓝翔技术

010-10086

问题:商品名称、单位与商品单价与订单编号主键无关,不符合2NF。

优化:

商品表

商品编号

商品名称

单位

商品单价

1

电风扇

99

订单项目表

订单编号

商品编号

0001

1

订单信息表

订单编号

订单客户

所属单位

联系方式

0001

王大宝

蓝翔技术

010-100086

1.3 第三范式(3NF)

确保每列都和主键列直接相关, 不可包含间接依赖。

例如,这张表:

课程编号

课程名字

上课时间

任课老师

老师电话

老师职位

101

马克思理论基础

8:00

Lily

18016253155

讲师

102

经济学

14:00

Lucy

18055231233

教授

问题:老师电话和老师职位是直接依赖于任课老师的,而不是直接依赖主键课程编号,是传递依赖,不符合3NF。

优化:

课程表

课程编号

课程名字

上课时间

任课老师

101

马克思理论基础

8:00

Lily

102

经济学

14:00

Lucy

教师表

任课老师

老师电话

老师职位

Lily

18016253155

讲师

Lucy

18055231233

教授

必须先满足第一范式才能满足第二范式,必须同时满足第一第二范式才能满足第三范式

满足三大范式的数据库E-R图实例:

5-200PG00302918

满足三大范式的数据库模型图:

img


桂ICP备2024024328号