MySQL学习之三大范式详解小白篇

目录
  • 1.范式基础
    • 1.1范式的概念
  • 2.三大范式
    • 2.1三大范式概念
    • 2.2三大范式举例
      • 1.进行第一范式的改造
      • 2.进行第二范式的改造
      • 3.进行第三范式的改造

1.范式基础

1.1范式的概念

设计数据库的时候需要遵从的一些规范,目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。

当然正常情况下我们满足前三个范式就可以设计一个比较规范的数据库

要遵循后边的范式,就必须先遵循前面的范式要求,比如第二范式就必须先遵循第一范式的,第三范式必须先遵循第二范式,以此类推

2.三大范式

2.1三大范式概念

第一范式(1NF):每个列都不可以再拆分。
第二范式(2NF):在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分。
第三范式(3NF):在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键。

2.2三大范式举例

比如我们有一个表,以后的例子会对这个表进行三大范式的改造,然后把他变成规范的表:

1.进行第一范式的改造

第一范式(1NF):每个列都不可以再拆分

我们可以看到表中有一列可以再分,那就是系,所以把他进行第一范式的改造就变成了:

2.进行第二范式的改造

第二范式(2NF):在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分。

这第二范式不好理解,那么我们先了解几个概念:

1.函数依赖:如果通过A属性(属性组),可以确定唯一B属性的值,那么B依赖于A。比如上图的姓名,完全依赖于学号
2.完全函数依赖:如果A是一个属性组,则B属性值的确定需要依赖于A属性组中的所有的属性值。属性组是指多个字段,那么比如我们要想知道一个分数,就必须依赖于学号和课程名称两个属性才能确定一个分数,其他的属性是不能确定某一个分数的
3.部分函数依赖:如果A是一个属性组,则B属性值的确定需要依赖A属性组的某一些字段即可,例如学号和课程名称为一个属性组,那么学生姓名其实就只需要学号就可以确定
4.传递函数依赖:如果A属性(属性组),可以确定唯一个B属性的值,再通过B属性的值又可以唯一确定C属性的值,例如一个学号确定一个系名,一个系名对应一个系主任
5.主键:在一张表中,一个属性或者属性组,被其他所有属性完全依赖,则称这个属性为该码的表,比如上图的学号和课程名称组成的属性组

其实第二范式就是还可以理解为

在第一范式的基础上消除非主键对主键的部分依赖

那么我们上图的主键为学号加课程名称组成的属性组,对于上图,我们可以看到,除了分数其他的都对主键是部分依赖,那么我们可以按照下图的方式进行改正:

经过第二范式的改造把一个表分成两个表,那么我们发现其实第二范式为我们消除了很多冗余的部分,比如改造前张无忌的姓名系名系主任在表中出现了三次,而改造后在两表才出现一次

3.进行第三范式的改造

第三范式(3NF):在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键。

根据第二点我们说的概念,修改后变成:

以上就是MySQL学习之三大范式详解小白篇的详细内容,更多关于MySQL三大范式的资料请关注我们其它相关文章!

(0)

相关推荐

  • MySQL之范式的使用详解

    一.范式 范式的英文名称是Normal Form,它是英国人E.F.Codd(关系数据库的老祖宗)在上个世纪70年代提出关系数据库模型后总结出来的.范式是关系数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法.目前有迹可寻的共有8种范式,依次是:1NF,2NF,3NF,BCNF,4NF,5NF,DKNF,6NF.通常所用到的只是前三个范式,即:第一范式(1NF),第二范式(2NF),第三范式(3NF). 第一范式(1NF) 第一范式其实是关系型数据库的基础,即任何关系型数据

  • 详解MySQL 数据库范式

    前言: 关于数据库范式,时常有听说过,一直没有详细去了解.一般数据库书籍或数据库课程会介绍范式相关内容,范式也经常出现在数据库考试题目中.不清楚你是否对范式有比较清晰的了解呢?本篇文章我们一起来学习下数据库范式吧. 1.数据库范式简介 为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中这种规则就称为范式.范式是符合某一种设计要求的总结.要想设计一个结构合理的关系型数据库,必须满足一定的范式. 范式的英文名称是 Normal Form ,简称 NF .它是英国人

  • 数据库 三范式最简单最易记的解释

    书上讲了好多, 归结起来3句话: 1NF:字段不可分; 2NF:有主键,非主键字段依赖主键; 3NF:非主键字段不能相互依赖; 解释: 1NF:原子性 字段不可再分,否则就不是关系数据库; 2NF:唯一性 一个表只说明一个事物; 3NF:每列都与主键有直接关系,不存在传递依赖; 不符合第一范式的例子(关系数据库中create不出这样的表): 表:字段1, 字段2(字段2.1, 字段2.2), 字段3 ...... 存在的问题: 因为设计不出这样的表, 所以没有问题; 不符合第二范式的例子: 表:

  • 数据库设计三大范式简析

    为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中这种规则就称为范式.范式是符合某一种设计要求的总结.要想设计一个结构合理的关系型数据库,必须满足一定的范式.       在实际开发中最为常见的设计范式有三个: 1.第一范式(确保每列保持原子性) 第一范式是最基本的范式.如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式. 第一范式的合理遵循需要根据系统的实际需求来定.比如某些数据库系统中需要用到"地址"这个属性,本来直接将

  • MySQL学习之三大范式详解小白篇

    目录 1.范式基础 1.1范式的概念 2.三大范式 2.1三大范式概念 2.2三大范式举例 1.进行第一范式的改造 2.进行第二范式的改造 3.进行第三范式的改造 1.范式基础 1.1范式的概念 设计数据库的时候需要遵从的一些规范,目前关系数据库有六种范式:第一范式(1NF).第二范式(2NF).第三范式(3NF).巴斯-科德范式(BCNF).第四范式(4NF)和第五范式(5NF,又称完美范式). 当然正常情况下我们满足前三个范式就可以设计一个比较规范的数据库 要遵循后边的范式,就必须先遵循前面

  • MySQL学习之数据库操作DML详解小白篇

    目录 1.插入语句 1.1插入一行 1.2插入多行 1.3插入查询语句 2.修改语句 2.1修改单表记录 2.2修改多表记录 3.删除语句 3.1方式1使用delete删除 3.2方式2使用truncate删除 3.3使用truncate和delete删除的区别 1.插入语句 1.1插入一行 有两种: 1.以小括号的形式 这里注意:如果表名后边不加小括号对应内容,那么默认就是添加所有列 2.以set形式 insert into + 表名 set 表中的某一个字段=要插入的值,表中的某一个字段=要

  • MySQL学习之数据库表五大约束详解小白篇

    目录 1.约束概念和分类 2.五大约束的添加和删除 2.1添加约束的六种方法 2.2三种删除约束的方式 2.3五大约束分别对应的添加删除方式(序号对应2.1和2.2) 2.4对于创建约束的总结 2.5对于主键和唯一的区别 3.自增长列 3.1概念 3.2在创建表的时候添加主键约束,并且完成主键自增长的例子 3.3自增长的添加和删除 3.4设置自增长步长 1.约束概念和分类 1.1约束的概念: 对表中的数据进行限定,保证数据的正确性,有效性,完整性 1.2约束分类 1.主键约束(primary k

  • MySQL学习之数据库备份详解

    目录 1.DB,DBMS,SQL 2.数据库的特点 3.SQL分类 4.mysql两种启动关闭方式 5.mysql的登录方式() 6.SQL语言规范 7.navicat常用快捷键 8.数据库的备份和还原 1.DB,DBMS,SQL 1.DB(数据库):存储数据和管理数据的仓库,保存一系列有组织的数据 2.DBMS(数据库管理系统):数据库是通过DBMS创建和操作的容器 3.SQL(结构查询语言):专门用来与数据库通信的语言 形象化的举一个例子:DB是一个仓库,DBMS是对仓库进行操控的工作人员,

  • MySQL学习之数据更新操作详解

    目录 UPDATE 语句 UPDATE 语句练习① UPDATE 语句练习② UPDATE 语句练习③ UPDATE 语句的表连接 UPDATE 语句练习④ UPDATE 语句 UPDATE 语句用于修改表的记录,语法如下 UPDATE IGNORE 表名 SET 字段1=值1, 字段2=值2, 字段3=值3, ...... WHERE 条件1 ...... ORDER BY ...... LIMIT ......; -- 注意:IGNORE - 是可选条件,使用后,会针对有冲突的修改记录忽略

  • IDEA社区版下载安装流程详解(小白篇)

    本人一直使用的是Eclipse作为开发工具的,不过现在IDEA非常的受推崇,所以决定上手试一试.网上有很多旗舰版的文章,我没有仔细看,我这次是决定使用社区版的IDEA,虽然功能会少一些,作为练手用完全够用了. IDEA官网地址:https://www.jetbrains.com/idea/download/ 下载社区版后,点击安装,就进行傻瓜式的安装了. 以上两个步骤中有一个点击next的时候时间会稍稍有点久,耐心等待一下就好了. 点击安装,IDEA社区版就安装完成了,安装好之后打开IDEA工具

  • C语言编程数据结构基础详解小白篇

    目录 数据结构的基本信息 数据结构 逻辑结构 1,集合结构 2,线性结构 3,树结构 4,图结构或网结构 存储结构 顺序储存结构 链式储存结构 抽象数据类型 介绍 数据结构的基本信息 数据:是客观事物的符号表示,是所有能输入到计算机中并被计算机程序处理的符号的总称.如:字符串,实数整数.... 数据元素:是数据的基本单位,在计算机中通常被作为一个整体进行考虑与处理.如组成通讯录的每一个人的信息,数据元素可以完整的描述一个对象. 数据项:是组成数据元素的,具有独立意义的,不可分割的最小单位(也就是

  • MySQL数据库学习之查询操作详解

    目录 1.示例表内容 2.简单查询 3.给列起别名 4.列运算 5.条件查询 1.示例表内容 dept表: +--------+------------+----------+ | DEPTNO | DNAME | LOC | +--------+------------+----------+ | 10 | ACCOUNTING | NEW YORK | | 20 | RESEARCH | DALLAS | | 30 | SALES | CHICAGO | | 40 | OPERATIONS

  • MySQL数据库学习之分组函数详解

    目录 1.分组函数 极值 求和 平均值 列数和 2.分组查询 3.小练习 4.大BOSS 1.分组函数 极值 示例表内容见此篇文章 找出最高工资: mysql> select max(sal) from emp; +----------+ | max(sal) | +----------+ | 5000.00 | +----------+ 1 row in set (0.00 sec) 找出最低工资: mysql> select min(sal) from emp; +----------+

  • 用 Python 连接 MySQL 的几种方式详解

    尽管很多 NoSQL 数据库近几年大放异彩,但是像 MySQL 这样的关系型数据库依然是互联网的主流数据库之一,每个学 Python 的都有必要学好一门数据库,不管你是做数据分析,还是网络爬虫,Web 开发.亦或是机器学习,你都离不开要和数据库打交道,而 MySQL 又是最流行的一种数据库,这篇文章介绍 Python 操作 MySQL 的几种方式,你可以在实际开发过程中根据实际情况合理选择. 1.MySQL-python MySQL-python 又叫 MySQLdb,是 Python 连接 M

随机推荐