Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >数据库的范式(第一范式,第二范式,第三范式,BCNF范式)「建议收藏」

数据库的范式(第一范式,第二范式,第三范式,BCNF范式)「建议收藏」

作者头像
全栈程序员站长
发布于 2022-07-31 06:16:37
发布于 2022-07-31 06:16:37
1.4K0
举报

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

在了解范式之前我们先了解下数据库中关于码的概念

1.码

1.1 超码

能够唯一标识元组的某一属性或属性组,任何包含超码的超集也是超码,这里唯一标识元组可以简单的理解为根据某一个字段或几个字段的值,查询出某一行特定的数据

1.2 候选码

从超码中选出的最小的码,即其任何真子集都不能满足条件。即属性不可再删减。

1.3 主码

从候选码中选出一个作为主码。

2.范式(NF)

范式:符合某一种级别的关系模式的集合,简而言之就数据库表设计的标准级别,范式有1NF,2NF,3NF,BCNF,4NF等,通常高级别的范式包含低级别的范式。数据库的设计一般到BCNF即可,有时候为了性能要就也会

2.1 1范式(1NF)

1范式:关系中的表的属性不可再分割。 举个简单的例子,有个学生表,有以下字段,sid,sname,address,sid为主键,sname为学生姓名,address为地址,地址的数据可能包括省份,城市,街道之类的。日后可能我们需要单独统计有个城市有多少学生之类的,而将这么多信息合成一个属性,即不符合第1范式,属性应该分割成省份,城市等多个字段,来满足业务要求。

2.2 2范式(2NF)

2范式:消除非主属性对码的部分函数依赖。 函数依赖:简单的说,如果对于每个x属性或属性组都有对应的确切的y值与之对应,则称Y函数依赖于x。记做 x->y 完全函数依赖:有x->y,但对于x的任意真子集都不存在x’->y,称之为完全函数依赖。比如有一张成绩表,有若干字段,学号,课程,成绩。 (学号,课程)->成绩,任意(学号) !-> 成绩,(课程)!-》成绩,我们称成绩完全依赖于(学号,课程) 部分函数依赖:Y函数不完全依赖于x叫部分函数依赖,例如(学号,课程)->课程名),学号和课程名无关,即(课程)->课程名。

2.3 3范式(3NF)

3范式:消除非主属性对码的传递函数依赖 传递函数依赖: 一个关系R(U),X,Y,Z为属性集U上的子集,其中存在X→Y和Y→Z,但Y不决定X,即 Y!->X 同时Y不包含Z,则存在X→Z,即X传递函数决定Z,Z传递函数依赖于X。 例如:商品表:商品名->仓库,仓库!->商品,仓库->仓库管理员,仓库管理员 !->仓库(假定一个仓库可以有多个管理员) 。

2.4 BCNF范式(BCNF)

BCNF范式:消除主属性之间的间接函数依赖和传递函数依赖。

3.总结

一般我们数据库设计到3范式或BCNF范式即可,但是在实际项目中总是在性能和扩展性中做取舍。数据库设计标准越高,可扩展性越好,耦合性越低,但性能也会受损。所以有时候会到2范式,为了减少表与表之间的关联,加快查询速度,各种利弊还需自己权衡。

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

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
编辑精选文章
换一批
[数据库] 第一范式、第二范式、第三范式、BC范式
关键码 1) 超键:在关系中能唯一标识元组的属性或属性集称为关键模式的超键。 2) 候选键:不含有多余属性的超键称为候选键。也就是在候选键中在删除属性就不是键了。 3) 主键:用户选作元组标识的候选键称为主键。一般不加说明,键就是指主键。 4) 外键:如果模式R中属性K是其他模式的主键,那么K在模式R中称为外键。
全栈程序员站长
2022/08/31
8200
[数据库] 第一范式、第二范式、第三范式、BC范式
MySQL (4) 第一范式 第二范式 第三范式 BC范式
第一范式:所有属性都是不可分割的原子值。 也就是每个属性都是不可再分的。 例如下图就不符合第一范式的要求
全栈程序员站长
2022/08/31
1.2K0
MySQL (4) 第一范式 第二范式 第三范式 BC范式
第二范式和bcnf范式区别(bcnf范式通俗解释)
建立在第一范式的基础上,每一个非主属性要完全函数依赖于候选键(或者说是主键,任一个候选键都可以做主键)。即非主键列完全依赖于主键,而不能是依赖于主键的一部分,必须满足两个条件:
全栈程序员站长
2022/08/01
9410
数据库 部分函数依赖 完全函数依赖 传递函数依赖 第一范式、第二范式、第三范式、BCNF范式区别
数据库 部分函数依赖 完全函数依赖 传递函数依赖 第一范式、第二范式、第三范式、BCNF范式区别
全栈程序员站长
2022/08/31
2.4K0
数据库 部分函数依赖 完全函数依赖 传递函数依赖 第一范式、第二范式、第三范式、BCNF范式区别
第一范式,第二范式,第三范式,BCNF范式理解
实体:现实世界中客观存在并可以被区别的事物。比如“一个学生”、“一本书”、“一门课”等等。值得强调的是这里所说的“事物”不仅仅是看得见摸得着的“东西”,它也可以是虚拟的,比如说“老师与学校的关系”。
全栈程序员站长
2022/08/25
1.3K0
第一范式,第二范式,第三范式,BCNF范式理解
数据库系统的三大范式以及BCNF范式详细讲解 (很详细,很详细,很详细)
首先要明白”范式(NF)”是什么意思。按照教材中的定义,范式是“符合某一种级别的关系模式的集合,表示一个关系内部各属性之间的联系的合理化程度”。很晦涩吧?实际上你可以把它粗略地理解为一张数据表的表结构所符合的某种设计标准的级别。就像家里装修买建材,最环保的是E0级,其次是E1级,还有E2级等等。数据库范式也分为1NF,2NF,3NF,BCNF,4NF,5NF。一般在我们设计关系型数据库的时候,最多考虑到BCNF就够。符合高一级范式的设计,必定符合低一级范式,例如符合2NF的关系模式,必定符合1NF。
全栈程序员站长
2022/07/23
14.1K0
数据库系统的三大范式以及BCNF范式详细讲解 (很详细,很详细,很详细)
软考高级架构师:数据库的范式 1NF 、2NF 、3NF 和 BCNF
数据库范式是一系列规范条件的集合,这些规范条件定义了数据库表结构的合理性,以减少数据冗余和改善数据的逻辑结构。主要的范式包括第一范式(1NF)、第二范式(2NF)、第三范式(3NF)和巴斯-科德范式(BCNF)。每个高级范式都建立在前一个范式的基础上。
明明如月学长
2024/05/25
7400
软考高级架构师:数据库的范式 1NF 、2NF 、3NF 和 BCNF
关系模型的相关术语[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/106918.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/04
1.3K0
第一范式、第二范式和第三范式「建议收藏」
概念:设计数据库是,需要遵循的一些规范,要遵循后边的范式要求,必须遵循前边的所有范式要求
全栈程序员站长
2022/08/31
1.5K0
数据库-第一范式、第二范式、第三范式、BC范式、第四范式简析
在设计与操作维护数据库时,最关键的问题就是要确保数据能够正确地分布到数据库的表中。使用正确的数据结构,不仅有助于对数据库进行相应的存取操作,还可以极大地简化应用程序中的其他内容(查询、窗体、报表、代码等),按照“数据库规范化”对表进行设计,其目的就是减少数据库中的数据冗余,以增加数据的一致性。
全栈程序员站长
2022/08/31
7.6K0
数据库-第一范式、第二范式、第三范式、BC范式、第四范式简析
数据库系统概述——第六章 关系数据理论(知识点复习+练习题)
函数依赖的定义:设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等, 则称 “X函数确定Y” 或 “Y函数依赖于X”,记作X→Y。即只要 X 上的属性值相等,Y 上的值一定相等。
命运之光
2024/03/20
5860
数据库系统概述——第六章 关系数据理论(知识点复习+练习题)
关系规范化理论 | 数据库原理
这节课学习的内容在实践中基本不会用到这些概念, 不过感觉如果想深入了解数据库的底层特别是看数据库的底层数据操作函数源代码, 特别是想要了解其处理逻辑的原则, 那么这些概念应该还是很有参考性的.
h0cksr
2023/05/17
4970
数据库的规范化
一、基础概念 实体:现实世界中客观存在并可以被区别的事物。比如“一个学生”、“一本书”、“一门课”等。 属性:教科书上解释为:“实体所具有的某一特性”,由此可见,属性一开始是个逻辑概念,比如说,“性别”是“人”的一个属性。在关系数据库中,属性又是个物理概念,属性可以看作是“表的一列”。 元组:表中的一行就是一个元组。 分量:元组的某个属性值。 码:表中可以唯一确定一个元组的某个属性(或者属性组),如果这样的码有不止一个,那么大家都叫候选码,我们从候选码中挑一个出来做老大,它就叫主码。 全码:如果一个码包含了
用户1215536
2018/02/05
8690
数据库泛型(三范式)
数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息。
vv彭
2020/10/27
8410
数据库的第一范式,第二范式,第三范式,BCNF范式理解
所谓的第一范式就是数据库中的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性,如果出现重复的属性则需要重新构建实体,新的实体由重复的属性构成。 见图
全栈程序员站长
2022/08/31
9500
数据库的第一范式,第二范式,第三范式,BCNF范式理解
【MySQL】010-数据库设计的三大范式
范式,数据库设计范式,数据库的设计范式,是符合某一种级别的关系模式的集合。构造数据库必须遵循一定的规则。在关系数据库中,这种规则就是范式。关系数据库中的关系必须满足一定的要求,即满足不同的范式;
訾博ZiBo
2025/01/06
2810
数据库“三大范式”及“事务性”详解
在进行比较正规的项目开发的时候,通常会根据需求设计相应的数据库,而这些数据库则通常需要考虑数据库的冗余性和简洁性,数据库三大范式就是对关系数据库设计结构的一个规定。
灰小猿
2022/05/05
6880
关系数据理论
设R(U)是属性集U上的关系模式, X、Y是U的子集。(也就是说X、Y是Sno、Sname两个属性,U是这个属性组)
用户11097514
2024/05/30
1820
关系数据理论
数据库设计——关系数据理论(超详细)「建议收藏」
●关系型数据库逻辑设计: ➠针对一个具体问题应如何构造一个适合于它的数据模式,即应构造几个关系,每个关系由哪些属性组成等 eg:
全栈程序员站长
2022/11/07
1.1K0
数据库设计——关系数据理论(超详细)「建议收藏」
举例说明一下怎么算是第一范式、第二范式、第三范式?
数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息。
全栈程序员站长
2022/08/31
5610
推荐阅读
相关推荐
[数据库] 第一范式、第二范式、第三范式、BC范式
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档