数据仓库的那些事

一,定义:
1,数据仓库是一个面向主题的,集成的,非易失的,随时间变化的用来支持管理人员决策的数据集合。

- 面向主题:一个数据仓库的设计总是基于主题域去进行设计的,比如说是一个生产商的主题域就分为产品,订单,销售商和材料单等等,那么数据仓库就会基于这些主题去进行数据表的分层与分类设计
- 集成的:数据仓库的数据有可能是多个数据源传递的,这些数据在进入到数据仓库中之后就进行数据的转换,格式化,重新排列以及汇总等操作。那么得到的数据只要是存在于数据仓库之中,就具有企业的单一的物理映像。数据在进入到数据仓库中之后,也会有对数据中一些格式进行一致化的操作,比如说是日期格式,性别的表示等
- 非易失性:和操作性数据库周期性的更新数据不一样,数据仓库一般是以批量的方式进行数据的载入和访问,很少进行数据更新(update)。一般都是写入多个新的快照记录
- 随时间变化。所谓的时变性质的是数据仓库中的每个数据单元都会在一个时间范围内生效,一般都会有生效时间或者是否有效的字段来进行一个标识

2,数据仓库的分层设计
一般来说我们会将数据仓库分层去进行存储,以方便以后我们业务上的数据仓库。这边会介绍两种数据仓库的设计方式

  • 范式建模:所谓的范式建模,是指我们进行在数据仓库建模的时候需要遵循一定的数据关系规则:

     1.主属性的唯一性:即数据的不可再分性
        例:分数应该是分为语文分数,数学分数等分列进行存储
     2.不存在非主属性对主属性的部分依赖,这种一般是针对于有多个主属性的场景下
        例:主属性如果为学号和课程号,那么非主属性应该完全由学号和课程号来决定,像课程名称这种只取绝于课程号一个单一属性的非主属性就是不符合的
        注:除了主属性之外的其他字段均为非主属性
     3.非主属性对主属性的传递函数的依赖
        例:非主属性需要直接依赖于主属性,不可以传递依赖
    
  • 维度建模:所谓的维度建模,指的是我们进行数据仓库的建模的时候将所有的数据根据数据属性存储在维度表和事实表中,使用维度表和事实表来构建数据仓库
    (1) 表分类:

    • 事实表:事实表一般记录的是一次行为事件,一般是由很多的id组成,以及这些依赖这些id组合的非主属性
    • 维度表:事实表的id维度,一般是指实体

    (2) 维度建模方式:
    1.星型建模:

      事实表:维度表=1:n
    

在这里插入图片描述

2.雪花模型:

	 - 事实表:维度表1级:.....:维度表n级=1:n:....:n

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/javadocdoc/article/details/108901822