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

数据库的第一范式,第二范式,第三范式,BCNF范式理解

作者头像
全栈程序员站长
发布2022-08-31 20:48:37
7080
发布2022-08-31 20:48:37
举报

大家好,又见面了,我是你们的朋友全栈君。

第一范式 属性的原子性

所谓的第一范式就是数据库中的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性,如果出现重复的属性则需要重新构建实体,新的实体由重复的属性构成。 见图

在这里插入图片描述
在这里插入图片描述

分析图: 在进货和销售中 有两个重复的属性(数量和单价),并且进价和销售是可以再分割的,不满足原子性,即不满足第一范式,可以修改为下面的两个实体

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第二范式 属性完全依赖于主键

第二范式是在第一范式的基础上建立起来的,即满足第二范式必须先满足第一范式,第二范式要求数据库的每个实例或行必须可以被唯一的区分,即表中要有一列属性可以将实体完全区分,这个属性就是主键,即每一个属性完全依赖于主键,在员工管理中,员工可以通过员工编号进行唯一区分, 完全依赖概念:即非主属性不能依赖于主键的部分属性,必须依赖于主键的所有属性。

第三范式

满足第三范式必须先满足第二范式,第三范式要求一个数据库表中不包含已在其他表中已包含的非主关键字信息, 例如 存在一个课程表,课程表中有课程号(Cno),课程名(Cname),学分(Ccredit),那么在学生信息表中就没必要再把课程名,学分再存储到学生表中,这样会造成数据的冗余, 第三范式就是属性不依赖与其他非主属性,也就是说,如果存在非主属性对于码的传递函数依赖,则不符合第三范式

在这里插入图片描述
在这里插入图片描述

这个例子就是典型的非3NF 两个非主属性 属性不依赖与其他非主属性,则不符合第三范式 ——–选修课程名—->选修课程号(非主属性) 如果存在非主属性对于码的传递函数依赖,则不符合第三范式 理解为 ——–选修课程名—->选修课程号——> 学号(传递依赖) 不是第三范式

BCNF 范式

满足BCNF范式的条件如下:

  1. 所有的非主属性对每一个码都是完全函数依赖 (暗含 主关键字里面可能有多个码可以将实体区分)
  2. 所有的主属性对每一个不包含它的码也是完全函数依赖(即所选码与未选择的码之间也是完全函数依赖的)
  3. 没有任何属性完全函数依赖于非码的任何一组属性(即非主属性之间不能函数依赖)

解释: 例如关系模式 S(Sno,Sname,Sdept,Sage) 假设 Sname具有唯一性 解释条件1:非主属性 (Sdept,Sage) 不仅依赖于Sno,而且依赖于Sname,因为不仅可以通过学号知道学生的信息,还可以通过姓名知道学生的信息。 解释条件2:Sno 与Sname之间也是完全函数依赖关系 解释条件3:没有任何一个属性函数依赖于Sdept和Sage

感谢涛声依旧的博客

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/142231.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

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