数仓建模理论

2023/03/08 数仓 建模 共 1464 字,约 5 分钟

##建模理论

###范式建模

范式是关系型数据库的基本概念。是指符合某些条件、符合某些规则的关系集合。范式是分级的,每向上一级,条件和规则更加严格,每一级是下一级的子集。 范式最主要的目的是消除冗余,每一份信息必须存放一次,也只能存储一次。数据的冗余不仅仅会造成存储资源的浪费,而且可能会引发数据的更新异常。 关系型数据库范式

1FN 数据库表中的字段都是单一属性的,不可再分;就是不允许表中还有表

2FN 在第一范式的基础上,还要满足数据表里的每一条数据记录,都是可唯一标识的。而且所有非主键字段,都必须完全依赖主键,不能只依赖主键的一部分。

3FN 在第二范式的基础上,确保数据表中的每一个非主键字段都和主键字段直接相关, 也就是说,要求数据表中的所有非主键字段不能依赖于其他非主键字段。 (即,不能存在非主属性A依赖于非主属性B,非主属性B依赖于主键c的情况, 即存在”A一B一c”的决定关系)通俗地讲,该规则的意思是所有非主键属性之间不能有依赖关系,必须相互独立。

BCFN

4FN

范式的优点:数据的标准化有助于消除数据库中的数据冗余, 第三范式(3NF)通常被认为在性能、扩展性和数据完整性方面达到了最好的平衡。

范式的缺点:范式的使用,可能降低查询的效率。 因为范式等级越高,设计出来的数据表就越多、越精细,数据的冗余度就越低, 进行数据查询的时候就可能需要关联多张表,这不但代价昂贵,也可能使一些索引策略无效。

###维度建模 数据仓库是公司内部所有数据集市的集合,信息总是被存储在多维模型中。 是面向数据集市、数据主题的,一般采用星型模型建模。 依据星型模型,构建事实表和维度表,建立数据仓库模型的过程,就是维度建模。 Kimball的核心思想就是星型模型和维度建模。

####星型模型

所有的表直接与事实表关联, 整个图解就像星星一样,该模型称为星型模型。 星型模型是一种非正规化的结构,是反范式的。 因为多维数据集的每一个维度都直接与事实表相连接,不存在渐变维度, 所以数据有一定的冗余.

事实表和维度表

事实表描述业务过程的度量、以可加数据为主题,每一行代表一个可以观察的实体或事件。 主要的是发生了业务过程,如卖出一件商品,用户购买一件商品,这都触发了业务过程。 卖出的商品有商品属性、有卖出的门店、有出货记录,有购物者信息等等。

维度表描述事实所处的环境、面向分析,代表针对事实的一种分类。 直白点,维度表就是用来描述事实的。 还以卖出商品为例,卖出的商品,商品有属性,包括颜色、尺码、风格、季节等多种属性,这些属性组合在一起就构成了描述商品的维度表。

对维度表再建立更细的维度,称为支架表。 支架表是维度表的维度表,支架表是去冗余的产物, 在星型模型中,对冗余很宽容。所以支架并不是必须的,并且应该尽量少用。 合适的方法是:将支架表合并到和事实表直接连接的维度表。

####雪花模型

当有维表没有直接连接到事实表上,而是通过连接其他维表间接连接到事实表,其图解就像多个雪花连接在一起,故称雪花模型。 雪花模型是对星型模型的扩展。 它对星型模型的维表进一步层次化,把原有的维表进一步拓展,形成更多细分层次。

处理雪花模型的方式,和支架表一样,理想的模型是只存在和事实表直接相连接的维度表。 在数据仓库中,数据冗余不重要,连接性能更重要! 我们通过牺牲空间来换取时间,这些数仓很常用的手段。 雪花模型是一种规范的数据建模模型,规范化的目的是去冗余, 在节省存储的同时减少重复更新。 但是对于数据仓库来说,这两者都不重要,数据仓库本来就不更新。 Kimball模式的数据仓库的查询性能优先!星型模型,是反范式的

文档信息

Search

    Table of Contents