0x00 概述
长期从事数据仓库的你,是否还记得数据库设计中的三大范式?在设计数据仓库的表时,是否考虑过规范化和反规范化之间的区别?是否想过数据仓库和数据库在设计中对范式考虑的侧重点是什么?
本文,将包含如下几个方面:
-
一起回顾数据库设计中经典的三大范式
-
聊一聊数据仓库和范式之间的关系
-
聊一聊数据仓库和数据库在范式设计中的侧重点
全文将会围绕一个订单表(假设一个订单中只有一种商品出现)设计的例子,既有数据库中表的设计,亦有数据仓库中表的设计,一个例子贯穿全文,有始有终,简单易懂。
0x01 三范式
首先回顾一下范式是什么:
设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。
目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。
数据库范式有这么多,但是在工作中常用到的一般是前三个范式,因此,本文将只举例分享第一、二、三范式。为了方便理解,先上一个关于各个范式核心点的图镇楼,后面的说明会参考该图来进行。