“学长,SqlServer数据库三范式可以简单帮我理解一下吗?”。
学妹的一句话把我问蒙了,因为三范式的概念早就丢到外太空去了。
但是呢,我不能直接说我忘记了,为了不影响在学妹心目中的形象(你懂的),我还特意去百度查了一下。
然后整理了一下,大家如果有和我一样忘记了的可以看一下(概念+举例),浅显易懂。
一般地,在进行数据库设计时,应遵循三大原则,也就是我们通常说的三大范式,即第一范式要求确保表中每列的原子性,也就是不可拆分;
第二范式要求确保表中每列与主键相关,而不能只与主键的某部分相关(主要针对联合主键),主键列与非主键列遵循完全函数依赖关系,也就是完全依赖;
第三范式确保主键列之间没有传递函数依赖关系,也就是消除传递依赖。
1. 必须保证数据库设计的合理性
2. 如何是合理的数据库
3. 如何才能保证数据库设计水平
4. 什么是范式(NF,NormalForm)
1. 要求
2. 示例
1. 要求
2. 示例
在上面第一范式示例表中的数据看出,这不符合第二范式,所以进行拆分如下,
第一张主键相关为(学号、课程名称),第二张表为(学号),它们都是完全依赖的,因此符合第二范式。
1. 要求
2. 示例
注意看第二范式的学生表:存在系主任依赖于系名 (系名---> 系主任),所以不符合第三范式,继续进行拆分如下:
我们看到,第三范式规则查找以消除没有直接依赖于第一范式和第二范式形成的表的主键的属性。
我们为没有与表的主键关联的所有信息建立了一张新表。
每张新表保存了来自源表的信息和它们所依赖的主键。
数据库设计规范化能让我们更好地适应变化,使你能够改变业务规则、需求和数据而不需要重新构造整个系统。