广告
返回顶部
首页 > 资讯 > 数据库 >数据库的三范式
  • 764
分享到

数据库的三范式

数据库的三范式 2022-02-13 02:02:14 764人浏览 绘本
摘要

简单来说可以把它粗略的理解为一张数据表的表结构所符合的某种设计标准的级别。就像英语46级,相对代表了英语水平的高低。 满足这些规范的数据库是简洁的,结构明晰的,同时,不会发生增删改操作异常。 数据库范式分为 1NF 2NF 3NF BC

数据库的三范式

简单来说可以把它粗略的理解为一张数据表的表结构所符合的某种设计标准的级别。就像英语46级,相对代表了英语水平的高低。

满足这些规范的数据库是简洁的,结构明晰的,同时,不会发生增删改操作异常。

数据库范式分为 1NF 2NF 3NF BCNF 4NF 5NF一般我们在设计数据库结构的时候最多只要满足到BCNF就可以了,符合高一级的范式必须符合第一级的范式。

一般设计数据库表的时候符合第三范式就很不错了。

1NF的定义:符合1NF的关系中的每个属性都不可以再分。

在使用数据库管理系统的时候比如Mysql,sqlServer等创建的数据表都满足1NF,如果不满足这个范式,是不能创建成功数据表的。属性不可再分割的意思是每一个字段都是最小的,不包含其他字段。不重复,原子性。

例如:字段:姓名 不包含其他字段:年龄。注意:这里说的是字段而不是字段的值!

下面是一个学生表!

这种就是错误的,性别不能包含班级,科目,老师

下面这种才是正确的1NF

1NF存在的问题:

数据冗余,插入异常,删除异常,修改异常的问题。

数据冗余:张三的很多信息都要重复很多次

插入异常:如果要新建一个班级,并且有班级主任。但是因为还没有学生开始学习,所以主键(id就是学号)是空的,肯定是不能插入的。

删除异常:如果要把某个班下面的学生都清空,那么这个老师也就不存在了。就是把主键id姓名年龄性别科目删掉,只剩下班级和老师,这个数据也是非法的不能这样操作。

修改异常:如果需要把学生进行老师交换,就需要把数据里面的班级和老师都修改才可以。就是张三要去二班需要更改班级和老师还有科目(每个班科目不一样)才可以。

 

所以有了下面的2NF(二范式)

2NF:在1NF基础上,消除了非主属性对于码的部分函数依赖。

码:一个表中,可以唯一决定一个元组的属性”集合”。假设K为表中的某个属性,如果可以在确定K的情况下,这个表里面的其他属性都可以确定,那么K就叫做候选码,也叫码。比如通过ID可以获得姓名,年龄,性别,但不可以确定班级,科目,老师。老师可以获取班级。

id--姓名,性别,年龄

老师--班级

(id,老师)这个属性组就叫做码。

码不一定是主键,但是主键一定是码。码可以确定一行数据,比如常见的user表根据用户的身份证号也可以确定这条数据但是身份证号并不是主键ID。身份证号也可以叫做码。

非主属性:非主属性就是对于主属性来说的,上面说到的码就是主属性,比如id和课名。不是主属性的就是非主属性包括姓名,年龄,性别,班级,老师。

函数依赖: 函数 y=f(x) 代表给定一个x的值可以确定y的值。在数据表中,在属性x确定情况下必定能确定Y的值,那就说Y函数依赖于X写作X--Y。比如:在表中给定一个学号,必定能得到一个唯一的姓名。那就是说姓名依赖于学号,写作:学号--姓名

完全函数依赖:在一张表中,如X-Y,且对于X的任何一个真子集(假如属性组X包含超过一个属性的话),X-Y不成立,那么我们称Y对于X完全函数依赖,记做XF-Y。比如:(班级,老师)-- 学生,班级和老师都是X的真子集,班级是一个真子集,老师是一个真子集,但是如果只有班级,或者只有老师,是不能的到一个唯一学生的。也就是说需要两个值确定另外一个值,不然就不能叫完全函数依赖。满足完全函数依赖要求,所以    所以Y完全函数依赖于X。

部分函数依赖:如果Y函数依赖于X,但是Y不完全函数依赖于X,那就叫做部分函数依赖。这个例子再加一条 [2 李四 22 女 数学 二班]的数据。比如:(学号,课名)-- 姓名。由学号可以得到唯一的姓名,但是由课命不能得到唯一的姓名。所以姓名不完全依赖于id和课名。所以称为Y部分函数依赖X。

判断是否符合2NF,就是看数据表中是否存在非主属性对于码的部分函数依赖。若存在,则数据表最高只符合1NF要求,若不存在,则符合2NF的要求。

步骤如下:

找出数据表中所有的码。

根据第一步所的到的码,找出主属性。id和课名。

数据表中,除去所有的主属性,剩下的都是非主属性了。姓名,班级,年龄,性别,教师。

查看是否存在非主属性属性对于码的部分函数依赖。上面的表就不符合2NF的范式标准,姓名可以通过课命和id两个数据定位,所以要符合2NF就要进行表拆分。

符合2NF的表如下:

先找码,表里面的码就是id和课名,分数是非主属性。只有课名和id一起用,此案能确定分数。分数完全依赖于课命和id的组合,所以是不存在部分依赖的。分数不可以通过id和课命单独来确定的。所以这个是符合2NF的。

第一个表里面的码只有ID一个,非主属性就是姓名,班主任,班级,他们完全依赖主属性。这个是符合2NF要求的。

 

2NF解决了,数据冗余。

插入异常,以上面表为例新建一个班级没有学生,id还是空的肯定也不行。

删除异常,删除某个班级的学生信息,id和姓名。这个班级也就不存在了,肯定也不行。

修改异常,学生姓名进行更换还是需要修改班级和老师。

 

数据库第三范式

这样就出现3NF 就是基于2NF的基础消除了非主属性对于码的传递函数依赖,也就是说,如果非主属性对于码的传递函数依赖,则不符合3NF的要求。

传递函数依赖:Y依赖于X,Z又依赖于Y,那就是说Z依赖与X。比如班级名依赖于学号,班主任又依赖于班名,那么班主任传递依赖于学号。不满足3NF。

第一个表不存在传递函数依赖,分数需要ID和课名来确定,第二个表通过ID确定姓名和班级。最后一个也不存在传递函数依赖。

解决问题:插入异常,原来新建立一个班级是有异常的,现在没有问题,现在可单独插入班级。删除异常,把某个班级下面的学生清空也是没有问题的。

区分:

第一范式:属性不可再拆分

第二范式:消除了非主属性对于码的部分函数依赖

第三范式:消除传递函数依赖

 

实战经验:如果严格执行三范式那么会对查询造成一定的麻烦,所以在真正工作的时候我们是允许进行一些数据冗余的。一范式一定要符合,二范式尽量符合,3范式看具体情况。这个只是一个规范不是一个死的东西,还是看需求是否需要三范式。

您可能感兴趣的文档:

--结束END--

本文标题: 数据库的三范式

本文链接: https://www.lsjlt.com/news/4876.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 数据库的三范式
    简单来说可以把它粗略的理解为一张数据表的表结构所符合的某种设计标准的级别。就像英语46级,相对代表了英语水平的高低。 满足这些规范的数据库是简洁的,结构明晰的,同时,不会发生增删改操作异常。 数据库范式分为 1NF 2NF 3NF BC...
    99+
    2022-02-13
    数据库的三范式
  • 数据库三范式:
    第一范式(1NF):字段具有原子性,不可再分。所有关系型数据库系统都满足第一范式)   数据库表中的字段都是单一属性的,不可再分。例如,姓名字段,其中的姓和名必须作为一个整体,无法区分哪部分是姓,哪部分是名,如果要区分出姓和名,必须设计成两...
    99+
    2015-12-14
    数据库三范式:
  • 数据库的三大范式
    1.为什么需要数据库设计2.范式(Normal Formal)2.1范式概述2.2键和相关属性的概念2.3第一范式(1NF)2.4第二范式(2NF)2.5第三范式(3NF)2.6范式的优缺点 3.反范式化3.1概述3.2 反...
    99+
    2023-08-16
    数据库 设计规范 mysql
  • 数据库范式:三大范式、BC范式和反范式化
    一、什么是数据库范式 无规矩不成方圆,同理范式是数据表设计的一些约束和规范。为了让各个属性间的关系更加合理,减少数据冗余。 一般来说,主要满足 3NF 就可以了,因为范式过高,虽然对数据关系有更好的约束,可也会导致数据表的增加,从而让数据库...
    99+
    2015-06-13
    数据库范式:三大范式 BC范式和反范式化
  • 精讲数据库三范式
    1NF:字段不可分; 例:表1、用户ID姓名地区1小明广东省广州市2小红江苏省南京市地区字段可分为:省、市如下:表2、用户ID姓名省份城市1小明广东省广州市2小红江苏省南京市表1不符合第一范式,表...
    99+
    2022-10-18
  • SqlServer 数据库 三大范式
    1 概述 一般地,在进行数据库设计时,应遵循三大原则,也就是我们通常说的三大范式,即第一范式要求确保表中每列的原子性,也就是不可拆分;第二范式要求确保表中每列与主键相关,而不能只与主键的某部分相关(主要针对...
    99+
    2022-10-18
  • 数据库三范式和反范式是什么
    这篇文章主要介绍了数据库三范式和反范式是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在日常开发过程中,我们需要对Mysql数据库进行操...
    99+
    2022-10-18
  • 数据库三范式是什么?
    关系数据库中的关系是需要一定的要求的,满足不同程度要求的为不同范式。范式是向下包含的,即满足第二范式必须满足第一范式。第一范式(1NF):满足最要求的叫第一范式。第一范式要求所有的字段都有意义,具有原子性,...
    99+
    2022-10-18
  • 什么是数据库三范式
    这篇文章主要讲解了“什么是数据库三范式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“什么是数据库三范式”吧!书上讲了好多, 归结起来3句话: 1NF:字段不...
    99+
    2022-10-18
  • 数据库第一范式,第二范式,第三范式详解
    数据库第一范式,第二范式,第三范式详解 基础知识 实体:现实世界中客观存在并可以被区别的事物。比如“一个学生”、“一本书”、“一门课”等等。值得强调的是这里所说的“事物”不仅仅是看得见摸得着的“东西”...
    99+
    2023-09-30
    数据库 mysql 大数据
  • Mysql数据库设计三范式的用法
    这篇文章主要讲解了Mysql数据库设计三范式的用法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。三范式1NF:字段不可分;2NF:有主键,非主键字段依赖主键;3NF:非主键字段...
    99+
    2022-10-18
  • 数据库三大范式包含哪些
    1、第一范式(1NF) 所谓第一范式(1NF)是指在关系模型中,对于添加的一个规范要求,所有的域都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项。即实体中的某个属性有多个值时,必须拆分为不...
    99+
    2023-10-29
    范式 三大 数据库
  • 数据库范式第一第二第三范式有什么区别
    这篇文章主要讲解了“数据库范式第一第二第三范式有什么区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“数据库范式第一第二第三范式有什么区别”吧!数据库范式第...
    99+
    2022-10-18
  • 如何进行数据库三大范式的分析
    这篇文章将为大家详细讲解有关如何进行数据库三大范式的分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一: 引言     &n...
    99+
    2022-10-19
  • 数据库——范式
    范式 范式简介 在关系型数据库中,关于数据表设计的基本原则、规则就称为范式。可以理解为,一张数据表的设计结构需要满足的某种设计标准的级别。要想设计一个结构合理的关系型数据库,必须满足一定的范式。 范式...
    99+
    2023-09-27
    数据库 mysql java
  • 你还记得数据库三范式吗? - 熊泽
    前言 “学长,SqlServer数据库三范式可以简单帮我理解一下吗?”。 学妹的一句话把我问蒙了,因为三范式的概念早就丢到外太空去了。 但是呢,我不能直接说我忘记了,为了不影响在学妹心目中的形象(你懂的),我还特意去百度查了一下。 然后...
    99+
    2019-12-11
    你还记得数据库三范式吗? - 熊泽
  • Mysql数据库设计三范式实例解析
    三范式 1NF:字段不可分; 2NF:有主键,非主键字段依赖主键; 3NF:非主键字段不能相互依赖; 解释: 1NF:原子性 字段不可再分,否则就不是关系数据库; 2NF:唯一性 一个表只说明一个事物; 3NF:每列...
    99+
    2022-06-01
    Mysql 数据库 三范式
  • 数据库设计的范式规范
    关系型数据库的设计遵循六大范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。 第一范式 1NF 1NF,即数...
    99+
    2022-10-18
  • 数据库的范式详解
      关系数据库设计之时是要遵守一定的规则的。尤其是数据库设计范式 现简单介绍1NF(第一范式),2NF(第二范式),3NF(第三范式)和BCNF,另有第四范式和第五范式留到以后再介绍。   在你设计数据库之时,若能符合这几个范式,你就是数...
    99+
    2018-11-21
    数据库的范式详解
  • MySQL系列数据库设计三范式教程示例
    目录一、数据库设计三范式相关知识说明1、什么是设计范式?2、为什么要学习数据库的三个范式?3、三范式都有哪些?二、数据库表的经典设计方案一对一怎么设计?一、数据库设计三范式相关知识说...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作