什么是数据库三大范式,它们是做什么的

设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。

一、第一范式(1NF)

所谓第一范式(1NF)是指在关系模型中,对于添加的一个规范要求,所有的域都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项。即实体中的某个属性有多个值时,必须拆分为不同的属性。在符合第一范式(1NF)表中的每个域值只能是实体的一个属性或一个属性的一部分。简而言之,第一范式就是无重复的域。

二、第二范式(2NF)

在1NF的基础上,非码属性必须完全依赖于候选码(在1NF基础上消除非主属性对主码的部分函数依赖)

第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或记录必须可以被唯一地区分。选取一个能区分每个实体的属性或属性组,作为实体的唯一标识。例如在员工表中的身份证号码即可实现每个一员工的区分,该身份证号码即为候选键,任何一个候选键都可以被选作主键。在找不到候选键时,可额外增加属性以实现区分,如果在员工关系中,没有对其身份证号进行存储,而姓名可能会在数据库运行的某个时间重复,无法区分出实体时,设计辟如ID等不重复的编号以实现区分,被添加的编号或ID选作主键。(该主键的添加是在ER设计时添加,不是建库时随意添加),第二范式(2NF)要求实体的属性完全依赖于主关键字。

三、第三范式(3NF)

在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)

第三范式(3NF)是第二范式(2NF)的一个子集,即满足第三范式(3NF)必须满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个关系中不包含已在其它关系已包含的非主关键字信息。例如,存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那么在员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有大量的数据冗余。简而言之,第三范式就是属性不依赖于其它非主属性,也就是在满足2NF的基础上,任何非主属性不得传递依赖于主属性。

来源:https://blog.csdn.net/weixin_46329056/article/details/125452643

延伸阅读

什么是jOOQ

jOOQ(Java Object Oriented Querying)是一个用于Java编程语言的数据库查询构建器,它提供了一种类型安全、面向对象的方式来构建和执行SQL查询。jOOQ允许开发人员使用Java代码来构建复杂的数据库查询,而无需直接编写SQL语句。

类型安全的查询构建:jOOQ使用Java API来构建查询,它提供了类型安全的方法和操作符,以避免编写错误的SQL语句。开发人员可以利用Java编译器的类型检查功能,减少在编写查询时的错误。

对象关系映射(ORM):jOOQ提供了对象关系映射(ORM)功能,可以将数据库结果集映射为Java对象。通过定义表和对象之间的映射关系,可以更方便地使用查询结果,并在应用程序中进行对象操作。

支持多种数据库:jOOQ支持多种主流数据库,包括MySQL、Oracle、SQL Server、PostgreSQL等。它提供了数据库特定的功能和语法支持,以满足不同数据库的要求。

复杂查询和表达式:jOOQ支持复杂的查询操作,包括连接(JOIN)、子查询、聚合函数、排序、分页等。它提供了丰富的表达式和函数,以构建灵活和复杂的查询条件。

SQL代码生成:jOOQ提供了SQL代码生成工具,可以根据数据库模式自动生成相关的Java类和代码。这样可以减少手动编写SQL和映射代码的工作量,并提高开发效率。

支持原生SQL:除了查询构建器,jOOQ还支持直接执行原生SQL语句,以满足一些特殊的需求。

文章标题:什么是数据库三大范式,它们是做什么的,发布者:E.Z,转载请注明出处:https://worktile.com/kb/p/53817

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
E.ZE.Z认证作者
上一篇 2023年6月4日
下一篇 2023年6月4日

相关推荐

  • 聚类算法有哪些

    聚类算法有:1、K-means;2、层次聚类;3、DBSCAN;4、GMM(高斯混合模型);5、谱聚类。聚类算法是无监督学习的一种,目的是将数据分为多个类或簇,K-means是最常用的聚类算法之一,通过迭代的方式将数据分为K个簇。 1、K-means 概述: K-means是最常用的聚类算法之一,通…

    2023年7月30日
    89000
  • 编程优先学什么

    编程语言、编程基础、算法与数据结构、项目经验是学习编程的四个核心要素。对于大多数初学者而言,选择一种广泛使用的编程语言如Python或JavaScript作为起点是理想的选择。这是因为这些语言的学习门槛相对较低,社区支持广泛,能够快速上手。此外,掌握这些语言后,你将有能力解决实际问题,甚至参与开源项…

    2024年5月2日
    1000
  • oa离职在哪里

    OA离职流程涉及多个环节:1、提交离职申请、2、部门主管审批、3、交接工作、4、人力资源部审批、5、财务结算、6、企业文化建设。 其中,提交离职申请为第一个也是至关重要的一步。员工需要明确自己的离职意愿,通常会通过公司内部的在线办公自动化(OA)系统提交离职申请。该环节是整个离职流程的启动点,也是确…

    2024年1月11日
    58900
  • 为什么女生需要学编程

    编程作为21世纪最具前景和变革性的技能之一,对个人发展和职业生涯都具有极其重要的意义。对于女性而言,掌握编程技能不仅拓展了职业发展的可能性,还能增强其在数字时代的竞争力,促进性别平等。尤其在如今技术快速发展的背景下,编程已成为一个重要的通用技能,就像读写能力一样,它逐渐成为了获取信息、进行沟通和表达…

    2024年4月27日
    3300
  • 编程是考什么

    编程主要考察的是逻辑思维能力、问题解决能力、编程语言掌握和算法应用四个方面。其中,逻辑思维能力尤为重要,因为编程本质上是一种解决问题的工具,效果如何取决于如何用逻辑分解和组织问题。逻辑思维能力强的人能够更好地理解和分析问题,从而找到更有效的解决方案。 一、逻辑思维能力 在编程领域,逻辑思维能力是核心…

    2024年5月2日
    600
  • 编程 =什么意思

    编程是通过编写指令序列,来使计算机能够执行特定任务的过程。在编程中,程序员使用编程语言来创建程序,这些程序指挥计算机执行操作。编程语言包括不同的语法和语义规则,它们确定了如何组织代码以及如何为计算机指定任务。 编程是一个创造性的过程,它涉及问题解决、逻辑构建、以及系统设计等多个方面。一项成功的编程任…

    2024年5月2日
    1000
  • 板卡编程叫什么

    板卡编程通常称为嵌入式编程。此领域专注在特定硬件(如板卡)上实现软件解决方案,以控制和增强其功能。嵌入式编程涉及直接与硬件接口互动,包括微控制器、传感器和其他周边设备,这样做的目的是为了实现系统级的集成和优化。在嵌入式系统中,软件通常专为运行在有限资源(如处理能力和内存)的环境下而设计。这要求开发者…

    2024年5月2日
    700
  • 西门子编程中什么是字节

    西门子编程中的字节是基本的数据单位,用于存储和处理信息。 在西门子PLC编程里,一个字节通常由8位(bit)组成,是许多数据类型的构建基础。字节不仅用于表示数字,也用于控制指令、字符存储和信号处理。由于西门子PLC遵循IEC标准,这确保了数据处理的一致性和兼容性。 例如,在西门子的S7-1200/1…

    2024年4月28日
    3900
  • 培训编程什么好

    学习Python对初学者来说是一个较好的选择,因为Python的语法简洁明了,有利于新手理解和快速上手。它是一种高级、解释性的编程语言,由于其简单易读的代码特点,极大地降低了编程的复杂性。Python在数据科学、机器学习、网络开发等多个领域都有广泛的应用,因此学习Python能够为初学者提供广泛的职…

    2024年5月2日
    600
  • 互联网前端编程用什么软件

    互联网前端编程主要依赖三个核心工具:1、代码编辑器;2、版本控制系统;3、浏览器的开发者工具。 其中,代码编辑器是前端开发的根本,它不仅需要具备基本的文本编辑功能,还要支持语法高亮、代码补全、错误提示等多种开发辅助功能。一款优秀的代码编辑器可以极大提高开发效率。 一、代码编辑器 在前端开发的世界里,…

    2024年4月27日
    3000

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部