用最短的文章,理解最复杂的概念
笔试的时候被问到了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
一句话 : 一个表只做一件事,非主键要完全依赖主键,也就是通过主键可以完全确定每个非主键
例子 :
这个不用例子了吧,上面都是大白话了
一句话 : 消除传递依赖,非主键不要唯一决定其他属性
例子:
学号(主键),年级,年级主任
以上三个字段放一个表就错了,因为年级(非主键)唯一决定了年级主任(非主键),不满足3NF
分开放
表1 : 学号(主键),年级
表2 : 年级(主键),年级主任
别问,问就是不会(不常用)
以后可能会写更多类似的文章,帮助大家用最简单的方式理解一些复杂的概念.
之前写了很多文章,大多是笔记,一直在寻找一种自己写作的风格,那就从这篇文章开始吧✈️✈️✈️