[ 大道至简系列 ] 三分钟理解-1NF,2NF,3NF

️前言

用最短的文章,理解最复杂的概念
笔试的时候被问到了2NF和3NF的区别,喵喵的,忘得干干净净所以赶紧来恶补一下
但是把csdn翻烂,我都没明白,没一个能说的通俗易懂的.
顾书此文章,以供老铁们用快的方式理解这玩意

概念

注 : 这里可以不用看,看了也不白看,看了一些大佬的文章中的晦涩难懂的名词你就可以理解了

  • 候选码

    就是表中一堆属性,如果用哪个属性可以唯一确定别的属性,那么它就是一个候选码
    比如 一个表中有身份证号,学生id,学生姓名,学生年龄,那身份证号,学生id就是候选码

  • 主属性

    和候选码一个意思

  • 函数依赖
    • 完全依赖

      {A,B,C}唯一的确定D,但是ABC子集不能确定D,那也就称D完全依赖{A,B,C}

    • 部分依赖

      {A,B,C}唯一的确定D,但是ABC子集能确定D,那也就称部分依赖{A,B,C}

    • 传递依赖

      A可以唯一决定B,B又可以唯一决定C,那B和C之间就传递依赖了
      再简单点,我的学号可以唯一的确定我的年级,我的年级又可以唯一的确定一个年级主任,那么年级和年级主任之间就传递依赖了

1NF

一句话 :原子性,每个字段都不可再分

例子:
[ 大道至简系列 ] 三分钟理解-1NF,2NF,3NF_第1张图片

这个商品就不符合1NF

2NF

一句话 : 一个表只做一件事,非主键要完全依赖主键,也就是通过主键可以完全确定每个非主键

例子 :
这个不用例子了吧,上面都是大白话了

3NF

一句话 : 消除传递依赖,非主键不要唯一决定其他属性

例子:
学号(主键),年级,年级主任
以上三个字段放一个表就错了,因为年级(非主键)唯一决定了年级主任(非主键),不满足3NF
分开放
表1 : 学号(主键),年级
表2 : 年级(主键),年级主任

BCNF,4NF,5NF

别问,问就是不会(不常用)
以后可能会写更多类似的文章,帮助大家用最简单的方式理解一些复杂的概念.
之前写了很多文章,大多是笔记,一直在寻找一种自己写作的风格,那就从这篇文章开始吧✈️✈️✈️

你可能感兴趣的:(大道至简系列,mysql,数据库范式,1NF,2NF,3NF)