当前位置: 代码迷 >> 综合 >> 数据库范式, 数据仓库设计架构Kimball 和 Inmon 杂记
  详细解决方案

数据库范式, 数据仓库设计架构Kimball 和 Inmon 杂记

热度:32   发布时间:2023-12-09 23:01:12.0

关系型数据库的三大范式:

第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。

第二范式(2NF)是数据库规范化中所使用的一种正规形式。它的规则是在1NF的基础上要求数据表里的所有数据都要和该数据表的主键有完全依赖关系;所有属性列完全由主键全权决定,而不需要其他列参与指定。

第三范式(3NF)在2NF的基础上,不仅仅属性列由主键完全决定,同时不能被其他属性列决定。比如一张学生信息表:学号是主键,属性列有学生姓名,所在院系和所在系主任3个。那么学生的所在系主任不仅被主键学号决定,其实还被所在院系决定,就不符合3NF了。

In English:

The first normal form: it means that every column in the database cannot be divided anymore. For example if you design a database for a school.There is student information table, then you cannot combine student's email and phone number into one column,They should be two columns.

The second normal form: it is based the 1NF. And what's more, it means in a table every attribute should be determined by the primary key.

The third normal form: it is based the 2NF. It means in a table every attribute should be ONLY determined by the primary key.


数据仓库的设计模型: Inmon和Kimball

参考这篇文章:

http://tdan.com/data-warehouse-design-inmon-versus-kimball/20300

微软的BI主要是基于Kimball模型的, 这个模型是数据库三范式的, 提出了雪花模型和星型模型, 区分了事实表和维度表. Kimball还提出了一致性维度的概念. 把不同数据源的维度统一更新到一个维度上去. 就是SSAS

Inmon用的比较少, 他的数仓是符合范式的设计, 然后用于分析的数据集市从这个normalized的数仓中派生数据, 好处是数仓是normalized的, 数据的准确性很高, 没有什么冗余的数据, 但是维护和开发工作量巨大.


维度建模的方式: 星型模型和雪花模型

星型模型和雪花模型是区别于传统关系型数据库的三范式建模的一种建模方式, 星型模型运用广泛,效率高, 而雪花模型运用较少, 但往往会作配角存在. 为什么有了星型模型还要有雪花模型呢? 一个典型的例子就是为了支持多对多关系. 维度表和事实表见有多对多的关系. 此外当一个维度的数量级大到一定程度时, 如果用雪花模型能减少冗余数据的时候,也可以尝试使用雪花模型.


参考链接:http://blog.sina.com.cn/s/blog_a656b4e4010115j3.html