您好,欢迎访问代理记账网站
  • 价格透明
  • 信息保密
  • 进度掌控
  • 售后无忧

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

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

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

1.第一范式

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

  

 

2.第二范式

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

      

 

3.第三范式

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

     

 

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

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


分享:

低价透明

统一报价,无隐形消费

金牌服务

一对一专属顾问7*24小时金牌服务

信息保密

个人信息安全有保障

售后无忧

服务出问题客服经理全程跟进