三范式的依赖,小小的知识,大大的学问

前端之家收集整理的这篇文章主要介绍了三范式的依赖,小小的知识,大大的学问前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

三范式使得数据库的设计变得有据可依,数据库的冗余大大减少。然而,三范式的定义,却不那么让人省心,一堆文字外加数学知识,让人着实有点小蒙。

虽然说完全按照三范式设计数据库并不可取,但是要想设计一个好的数据库,三范式的知识是必不可少的。

要想更好理解三范式的定义,那么了解依赖是必不可少的,了解了这几种依赖,那么理解起来三范式将会变的很容易。

首先,来说下最最基本的概念——函数依赖

专业术语:若对于R(U)的任意两个可能的关系r1、r2,若r1[x]=r2[x],则r1[y]=r2[y],或者若r1[x]不等于r2[x],则r1[y]不等于r2[y],称X决定Y,或者Y依赖X。

其实很简单,就是说知道X就可以知道Y:


函数依赖的三种类型:

1、平凡与非平凡函数依赖

还是先看专业术语:若属性x->y(决定),但是y不是x的子集(主键的一部分),则称为x->y是非平凡依赖。否则是平凡依赖。(关于一些特性的东西不再多说)

1)平凡函数依赖


2)平凡函数依赖


2、部分与完全函数依赖

专业术语:属性y依赖属性x中的部分属性x‘,也就是说只要一个x’就可以决定y,那么称为y部分依赖x,否则成为完全依赖。

1)部分依赖


2)完全依赖


3、传递依赖、函数依赖

专业术语:若x->y和y->z,并且x不依赖y,则x->z,这种现象称传递依赖。

若是x->y和y->z,并且y->x,则x->z是直接的函数依赖,而不是传递依赖。

1)传递依赖


2)函数依赖


以上几种依赖的关系:


而第二范式和第三范式分别要求消除部分依赖和传递依赖,因为都用自增id或者uuid这样的来当做主键,那么非平凡函数依赖也可以消除,通过删减,就成了这样的图:


而平凡函数依赖和完全函数依赖的图又是一样一样的,所以最后就成了这样的一个图:


这些图从简单演变到复杂,最后又删减到最简单,我个人感觉通过这些图理解了三种依赖,那么理解三范式就不成什么问题了,因为映像中,三范式的概念貌似就是这几个范式来回倒腾。

最后在恭喜一下你顺利的理解了数据库三范式~~

猜你在找的设计模式相关文章