范式建模(Third Normal Form, 3NF)

由数仓之父 Bill Inmon 提出,主要解决关系型数据库的数据存储,使用 E-R 实体关系模型将事物抽象为实体 、属性、关系,来表示事物和事件关联。在数据仓库的模型设计中一般采用第三范式,须具有以下三个条件:

  • 每个属性值唯一,不具有多义性, 不能继续拆分
  • 每个非主属性必须完全依赖于整个主键,而非主键的一部分
  • 每个非主属性不能依赖于其他关系中的属性

3NF 建模,是站在全企业角度而不是业务分析角度对企业内众 多的实体进行抽象,这种方法规范性很好,基本没有冗余,适合大型企业战略性规划,缺点是不利于 对接 BI 和下钻。并且物理模型设计通常与业务所需的模型设计不匹配,后期项目实施的 周期会拖得非常长,成本也非常高,同时对建模人员的能力要求也同样很高。

维度建模(Dimensional Modeling)

由 Ralph Kimball 最先提出这一概念。其简单描述就是,按照事实表,维表来构建数据仓库,数据集市。

  • 事实表是用来记录具体事件的,包含了每个事件的具体要素,以及具体发生的事情
  • 维表则是对事实表中事件的要素的描述信息
  • 维度建模法典型代表就是星型模型、雪花模型

维度建模主要以分析决策需求为出发点来构建模型。一般有比较好的大规模复杂查询的响应性能,能够直接面向业务,维度建模可以快速上手、快速交付, 有大量荣誉数据,即辅助表,容易产生表爆炸问题,后续维护成本高。 当业务发生变化,需要重新进行维度的定义时,往往需要重新进行维度数据的预处理。

3NF VS 维度建模

3NF维度建模
优点高度结构化、相对容易扩展、无冗余面向业务,适合多维分析、聚合场景
能够极大的提升数据仓库的处理能力
劣势不利于对接BI、不利于下钻、物理设计常与业务不匹配需要预处理、大量冗余数据

![node] 两个模型各有各的优劣势,不同的场景,可以使用不同的方法,实际场景很多都是混和使用