千恋*万花

  • 首页
  • 个人简历
  • 文章分类
    • 后端开发
    • 运维
    • 基础知识
    • 笔记
    • 工作运维记录
    • 随笔
    • 未分类文章
  • 管理
    • 后台管理
    • 登出
萌奈の笔记簿
分享我的努力,希望为你助力
  1. 首页
  2. 后端开发
  3. MySQL
  4. 正文

数据库的三范式

2021-01-16 2579点热度 1人点赞 0条评论

范式概念

在关系型数据库中,设计数据库时要考虑遵循一定的规则,这种规则就是范式。

实际上,数据库一共有六种范式,但一般设计数据库的时候,只需要遵守到3NF(第三范式)即可。
1NF 2NF 3NF BCNF 4NF 5NF

第一范式 1NF

第一范式主要强调原子性,即数据库的每一列都是一个不可再分割的基本数据项。

例:下表不满足第一范式

学号 姓名 家庭电话及住址
23333 马猴烧酒 166 xxxx xxxx,唐辛子星

修改后即可满足第一范式

学号 姓名 家庭电话 住址
23333 马猴烧酒 166 xxxx xxxx 唐辛子星

第二范式 2NF

第二范式主要强调唯一性,即数据表中每行都必须可以被唯一地区分,主要是为了防止数据重复,通常是使用一个主键来唯一标识一条记录。
满足第二范式就肯定满足第一范式。

  • 完全依赖、部分依赖:
    因为主键可以由多列共同组成,
    当且仅当该行数据由主键中所有列共同确定时,我们说这条数据完全依赖于主键。
    当该行数据仅需要主键中的部分列即可确定时,我们说这条数据部分依赖于主键。

例:完全依赖

学号(主键) 科目(主键) 分数
23333 数学 99

分数完全依赖于学号和科目,二者缺一不可。

例:部分依赖

学号(主键) 姓名(主键) 科目(主键) 分数
23333 张三 数据库原理及应用 88

分数部分依赖于上述三个主键,原因:学号就可以确定出某位学生的姓名,分数依赖于科目和(学号或姓名)在没有重名的情况下。

第三范式 3NF

非主属性之间不能相互依赖,必须直接依赖候选关键字。
例:下表不满足第三范式

学号(主键) 姓名 班级 学生电话 班主任姓名 班主任电话
23333 张三 985211 168 xxxx xxxx 李四 189 xxxx xxxx
23334 王五 985211 199 xxxx xxxx 李四 189 xxxx xxxx

班主任的姓名、班主任的电话跟主键学号没有直接的关系,只有间接的关系(可以通过学生的班级了解到班主任的姓名电话)。故该表的非主属性班主任姓名、班主任电话依赖该表的非主属性班级,且间接依赖关键字学号。

修改后满足第三范式:

学号(主键) 姓名 班级 学生电话
23333 张三 985211 168 xxxx xxxx
23334 王五 985211 199 xxxx xxxx
班级 班主任姓名 班主任电话
985211 李四 189 xxxx xxxx
  • 直接依赖、传递依赖(函数依赖、间接依赖):
    a依赖b,b依赖c,则a肯定依赖c,这就是传递依赖。

例:

学号 姓名 班级 班主任姓名
23333 张三 985211 李四

班主任姓名依赖于班级,班级依赖于学号,所以班主任姓名传递依赖学号,直接依赖班级。

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
标签: mysql 关系型数据库 学习心得 范式
最后更新:2022-10-27

初音萌奈

我是练习时长 一年半 的后端开发程序员 谢谢你参观我的博客! 本网站现已支持IPv6 ☞ 个人简历 ☜

点赞
< 上一篇
下一篇 >
文章目录
  • 范式概念
    • 第一范式 1NF
    • 第二范式 2NF
    • 第三范式 3NF

COPYRIGHT © 2023 HatsuneMona ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

晋ICP备17007130号-4