前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据库范式

数据库范式

原创
作者头像
玖叁叁
发布2023-04-27 10:52:19
4091
发布2023-04-27 10:52:19
举报
文章被收录于专栏:玖叁叁

数据库范式是指设计数据库时遵循的一系列规范,目的是消除数据冗余,确保数据的一致性和完整性,提高数据存储和检索的效率。范式分为一般范式和特殊范式两种,一般范式分为第一范式、第二范式、第三范式、BC范式和第四范式。

第一范式(1NF)

第一范式要求关系数据库中的每个属性都不可再分,即每个属性都是原子性的,不可再分为更小的数据项。例如,一个包含姓名和地址的表,如果地址字段中包含了多个城市和街道的信息,则不符合第一范式。符合第一范式的表如下所示:

姓名

城市

街道

张三

北京

朝阳

李四

上海

浦东

第二范式(2NF)

第二范式要求数据库表中每个非主属性都完全依赖于主键。如果一个表中存在多个主键,则每个非主属性都应该完全依赖于这些主键的组合。例如,一个包含订单号、商品编号和商品价格的表,如果商品价格只与商品编号有关,则不符合第二范式。符合第二范式的表如下所示:

订单号

商品编号

数量

价格

001

001

2

10

001

002

3

20

002

001

1

10

第三范式(3NF)

第三范式要求一个表中的所有非主属性都不传递依赖于主键。如果一个表中存在传递依赖,则需要拆分成多个表来消除这种依赖关系。例如,一个包含订单号、客户姓名和客户地址的表,如果客户地址依赖于客户姓名,则不符合第三范式。符合第三范式的表如下所示:

订单号

客户编号

数量

001

001

2

001

002

3

002

001

1

客户编号

客户姓名

客户地址

001

张三

北京市

002

李四

上海市

BC范式(BCNF)

BC范式要求一个表中的每个属性都完全依赖于主键,即不存在部分依赖和传递依赖。如果一个表不符合BC范式,则需要进一步拆分表格以消除这些依赖关系。BC范式是第三范式的加强版,目的是消除数据冗余和不一致性。例如,一个包含学生编号、课程编号和成绩的表,如果存在课程依赖于学生编号,则不符合BC范式。符合BC范式的表如下所示:

学生编号

课程编号

成绩

001

001

90

001

002

80

002

001

85

课程编号

课程名称

001

数学

002

英语

第四范式(4NF)

第四范式要求一个表中不存在多值依赖关系。如果一个表中存在某个属性与其他多个属性相关,则需要将其拆分成多个表格。例如,一个包含订单号、产品和尺寸的表,如果一个订单包含多个产品和尺寸,则不符合第四范式。符合第四范式的表如下所示:

订单号

产品编号

001

001

001

002

002

001

产品编号

产品名称

尺寸

001

手机

5.5

002

电脑

13

反规范化

反规范化是指通过增加冗余数据来提高数据的查询效率。在某些情况下,为了避免查询时进行多个表格的联结操作,可以将数据冗余存储在一个表格中。例如,一个包含订单号、产品编号和产品价格的表,如果每次查询订单时都需要联结产品表格,可以将产品价格冗余存储在订单表格中。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第一范式(1NF)
  • 第二范式(2NF)
  • 第三范式(3NF)
  • BC范式(BCNF)
  • 第四范式(4NF)
  • 反规范化
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档