浅谈数据库三大范式的理解

首先声明一下,我的这个回答是个人工作总结,不适合考试答题昂

欢迎关注我的博客

前言:数据库设计其实不仅仅限制于三个范式,往下其实还有很多种,但对于大多数人来说,你又不搞科研,不造飞机大炮,掌握三大范式在工作中已经足够用了。

想法:数据库里有什么?说白了数据库里边不就是一张一张的关系数据表吗?只是表与表之间靠主外键关联而已。所以,你就把他理解为一张张的资料,一张资料里存着找到另一张资料的唯一线索,这个线索就是关系。

下面进入正题,也就是玩法:

1NF: 列的原子性,就是每一列不能再分了。就比如性别要么男要么女,这种的就叫不能再分了,但是地址不行,你不能把一连串的地址写到一起,要分为省、市、县、县的那个楼或者大厦什么的。

这是第一范式,不用问太多为什么,就像你买皮肤要充钱一样,你问人家就能免费给你吗?这是铁律。

2NF:有主键和副键之分,副键完全依赖于主键,主键是唯一的标识,代表着这个对象,而其他副键都是用来描述对象的。通过主键找到这个对象的整体信息。

3NF:这个其实工作久了就自然而然明白了。消除传递依赖,说白了就是有副键之间有关系的时候,最好另建一张表。这样就没有那么多冗余数据了。

就比如说家居有样式,你还要整个样式得分,样式评级什么的,就得另加一张表来描述样式的了。一个表对应一个类。A就是A,B就是B,C就是C。

还有就是存在1对多,多对多这种关系的时候,也要再分表,要不然数据冗余会特别大。100条数据还差点,1亿数据量就gg了。

三大范式没什么,就是这么设计比较好,会让你的数据更具有层次感。跟磁盘分区是一个道理。

备注:以上仅供参考,个人开发总结。希望对你有帮助,让我们共同进步。
孰能无过,如有错误和疑问欢迎留言。

猜你喜欢

转载自www.cnblogs.com/onthewaytogrowth/p/11222084.html