数据库范式的定义和应用(有示例)

1、前言


        数据库设计中的范式是确保数据库结构合理、减少数据冗余和提高数据完整性的重要概念。范式越高,数据冗余越少,但查询效率可能会降低。以下是数据库设计中的前六种范式,以及它们之间的区别和应用场景。

1. 第一范式(1NF)

定义

第一范式要求数据库表中的每一列都是不可分割的基本数据项,即每个字段都包含原子值,不允许有重复的列。

下面是数据库中键和属性的定义

示例

假设有一个员工信息表,包含以下字段:

  • 员工ID
  • 员工姓名
  • 员工联系方式(包含多个电话号码)
  • 非1NF表

    员工ID员工姓名员工联系方式
    001张三123456789, 987654321
    002李四111222333

1NF规范化
将联系方式拆分为单个电话号码:

员工表

员工ID员工姓名
001张三
002李四

联系方式表

员工ID电话号码
001123456789
001987654321
002111222333

2. 第二范式(2NF)

定义

在满足1NF的基础上,第二范式要求非主键列必须完全依赖于主键,而不是部分依赖。

示例

假设有一个订单表,包含以下字段:

  • 订单ID(主键)
  • 产品ID
  • 产品名称
  • 产品价格

非2NF表

订单ID产品ID产品名称产品价格
001A01笔记本5000
002A02手机3000

2NF规范化
将产品信息拆分到单独的产品表中:

订单表

订单ID产品ID
001A01
002A02

产品表

产品ID产品名称产品价格
A01笔记本5000
A02手机3000

3. 第三范式(3NF)

定义

在满足2NF的基础上,第三范式要求非主键列之间不存在传递依赖。即非主键列不能依赖于其他非主键列。

示例

假设有一个学生表,包含以下字段:

  • 学生ID(主键)
  • 学生姓名
  • 班级ID
  • 班级名称

非3NF表

学生ID学生姓名班级ID班级名称
001张三C01一班
002李四C02二班

3NF规范化
将班级信息拆分到单独的班级表中:

学生表

学生ID学生姓名班级ID
001张三C01
002李四C02

班级表

班级ID班级名称
C01一班
C02二班

4. 巴斯-科德范式(BCNF)

定义

在满足3NF的基础上,BCNF进一步要求所有非平凡且非函数依赖的多值依赖都必须是超键。即每个决定因素都必须是一个候选键。

示例

假设有一个课程表,包含以下字段:

  • 课程ID(主键)
  • 教师ID
  • 教室ID

非BCNF表

 

课程ID教师ID教室ID
K01T01R01
K02T02R02

BCNF规范化
将课程和教师/教室关系拆分到单独的表中:

课程表

课程ID
K01
K02

教师表

教师ID课程ID
T01K01
T02K02

教室表

教室ID课程ID
R01K01
R02K02

5. 第四范式(4NF)

定义

在满足BCNF的基础上,4NF要求不允许有多值依赖关系存在。即表中的每个非平凡的多值依赖都必须依赖于整个主键。

示例

假设有一个学生选课表,包含以下字段:

  • 学生ID(主键)
  • 课程ID
  • 教师ID

非4NF表

学生ID课程ID教师ID
S01K01T01
S01K01T02
S02K02T02

4NF规范化
将学生和课程/教师关系拆分到单独的表中:

学生表

学生ID
S01
S02

选课表

学生ID课程ID
S01K01
S02K02

教师表

教师ID课程ID
T01K01
T02K01
T02K02

6. 第五范式(5NF)

定义

在满足4NF的基础上,5NF要求表中的每个连接依赖都必须表示一个有效关系。即表中的每个连接依赖都必须依赖于整个主键。

示例

假设有一个订单表,包含以下字段:

  • 订单ID(主键)
  • 产品ID
  • 客户ID

非5NF表

订单ID产品ID客户ID
O01P01C01
O02P02C02

5NF规范化
将订单、产品和客户关系拆分到单独的表中:

订单表

订单ID
O01
O02

产品表

产品ID订单ID
P01O01
P02O02

客户表

客户ID订单ID
C01001
C02002

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值