offer来了读书笔记-数据库三范式

2021/6/1 2:21:53

本文主要是介绍offer来了读书笔记-数据库三范式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

    面试中被问到了数据库三范式,只知道范式是数据库的设计规范,但是具体文档化的内容一下子却想不起来了,回顾平时的数据库表设计,其实也没有特别遵守范式,一切都是以方便开发为第一要素,这里对数据库的几个范式做一个总结,内容来自《offer来了原理篇》。

    范式是具有最小冗余的表结构,三范式的概念如下所述。

1.第一范式

      如果每列都是不可再分的最小数据单元(也叫作最小的原子单元),则满足第一范式,第一范式的目标是确保每列的原子性。如图7-3所示,其中的Address列违背了第一范式列不可再分的原则,要满足第一范式,就需要将Address列拆分为Country列和City列。

  

 

2.第二范式

      第二范式在第一范式的基础上,规定表中的非主键列不存在对主键的部分依赖,即第二范式要求每个表只描述一件事情。如图7-4所示,Orders表既包含订单信息,也包含产品信息,需要将其拆分为两个单独的表。

      

 

3.第三范式

      第三范式的定义为:满足第一范式和第二范式,并且表中的列不存在对非主键列的传递依赖。如图7-5所示,除了主键的订单编号,顾客姓名依赖于非主键的顾客编号,因此需要将该列去除。

     

 

    上面将数据库三范式说得通俗异动,总结一下,第一范式规定每一列都是原子性的,不可再分。第二范式规定一张表只能描述一件事情。第三范式规定中的列不存在对非主键列的传递依赖。

    实际上在日常的开发中,数据库的设计不必严格遵守范式,例如一个学生表和成绩表,为了比较方便的查询,可以适当的在成绩表中做一些学生数据的冗余,这样就可不必做表关联,加快查询效率。



这篇关于offer来了读书笔记-数据库三范式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程