数据库
首页 > 数据库> > 你还记得数据库三范式吗?

你还记得数据库三范式吗?

作者:互联网

前言

“学长,SqlServer数据库三范式可以简单帮我理解一下吗?”。

学妹的一句话把我问蒙了,因为三范式的概念早就丢到外太空去了。

但是呢,我不能直接说我忘记了,为了不影响在学妹心目中的形象(你懂的),我还特意去百度查了一下。

然后整理了一下,大家如果有和我一样忘记了的可以看一下(概念+举例),浅显易懂。

数据库三范式

  1. 第一范式(1NF):第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。
  2. 第二范式(2NF):第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被惟一的区分。
  3. 第三范式(3NF):满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。

一般地,在进行数据库设计时,应遵循三大原则,也就是我们通常说的三大范式,即第一范式要求确保表中每列的原子性,也就是不可拆分;

第二范式要求确保表中每列与主键相关,而不能只与主键的某部分相关(主要针对联合主键),主键列与非主键列遵循完全函数依赖关系,也就是完全依赖;

第三范式确保主键列之间没有传递函数依赖关系,也就是消除传递依赖。

1. 必须保证数据库设计的合理性

2. 如何是合理的数据库

3. 如何才能保证数据库设计水平

4. 什么是范式(NF,NormalForm)

 

举例说明

第一范式(概念+举例)

1. 要求

2. 示例

第二范式(概念+举例)

1. 要求

2. 示例

 

在上面第一范式示例表中的数据看出,这不符合第二范式,所以进行拆分如下,

 

第一张主键相关为(学号、课程名称),第二张表为(学号),它们都是完全依赖的,因此符合第二范式。

 

         

第三范式(概念+举例)

1. 要求

 2. 示例

注意看第二范式的学生表:存在系主任依赖于系名 (系名---> 系主任),所以不符合第三范式,继续进行拆分如下:

    

总结

我们看到,第三范式规则查找以消除没有直接依赖于第一范式和第二范式形成的表的主键的属性。
我们为没有与表的主键关联的所有信息建立了一张新表。
每张新表保存了来自源表的信息和它们所依赖的主键。 


数据库设计规范化能让我们更好地适应变化,使你能够改变业务规则、需求和数据而不需要重新构造整个系统。

参考文献

三范式:百度百科

三大范式:https://zhuanlan.zhihu.com/p/28528655

数据库设计三大范式:https://www.cnblogs.com/linjiqin/archive/2012/04/01/2428695.html#undefined

 

  欢迎关注订阅微信公众号【熊泽有话说】,更多好玩易学知识等你来取
作者:熊泽-学习中的苦与乐
公众号:熊泽有话说
出处: https://www.cnblogs.com/xiongze520/p/15433197.html
您可以随意转载、摘录,但请在文章内注明作者和原文链接。  

 

 

 

标签:范式,记得,数据库,第二,表中,设计,主键
来源: https://www.cnblogs.com/xiongze520/p/15433197.html