(一)数据库设计:范式与反范式

1 概述

   我们在设计数据库的过程中,往往要用到范式或反范式的设计模式。熟悉地掌握范式与反范式的要领,学会在实际开发中恰当地混合使用范式与反范式,才能设计出结构合理,执行高效的数据库。

2 特征

   范式要求数据表中不存在任何的传递函数依赖,反范式则允许存在传递函数依赖

3 区别

  • 存储:反范式有很多重复的数据,会占用更多的内存。而范式的表通常更小,可以放到内存里,执行操作更快。
  • 修改:当要修改数据时,范式更灵活,而反范式要修改全部的数据,且易出错。
  • 查询:当要查询记录时,范式模式往往要进行多表连接,而反范式由于所有数据在一张表中,可以很好的避免关联,当数据量很大的时候,显然反范式的效率会更好。

4 实例

    下面就以一个经典的例子进行讲述范式与反范式:

     职工-部门表:

     (一)数据库设计:范式与反范式

    部门-部门领导表:

     (一)数据库设计:范式与反范式

   结合这两张表,我们知道,职工Tom与Hill都在部门Accounting工作,他们的领导是Alex。这种设计模式,称为范式。范式要求数据表中不存在任何的传递函数依赖。我们都知道职工,部门,领导之间有传递函数的依赖关系:职工–>部门–>领导。但是范式的设计模式将这种关系分开,使这种传递的关系在数据表中不再存在。

   下面来看看反范式的设计模式,由于反范式允许存在传递函数,因此可以将所有数据汇集在一张表里面,如下:

   (一)数据库设计:范式与反范式

   在这一张表中,我们可以看到表中有职工–>部门–>领导的传递函数依赖关系。

 

(一)数据库设计:范式与反范式

上一篇:mysql记录操作


下一篇:python3.6 在windows 系统下安装mysqldb