数据仓库的基本理论

1.数仓建模的目标

访问性能:能够快速查询所需的数据,减少数据I/O
数据成本:减少不必要的数据冗余,实现计算结果数据复用,降低大数据系统中的存储成本和计算成本
使用效率:改善用户应用体验,提高使用数据的效率
数据质量:改善数据统计口径的不一致性,减少数据计算错误的可能性,提供高质量的、一致的数据访问平台

So,大数据的数仓建模需要通过建模的方法更好的组织、存储数据,以便在性能、成本、效率和数据质量之间找到最佳平衡点

2.关系模式范式

关系型数据库设计时,遵照一定的规范要求,目的在于降低数据的冗余性和数据的一致性,目前业界范式有:

第一范式(1NF)
第二范式(2NF)
第三范式(3NF)
巴斯-科德范式(BCNF)
第四范式(4NF)
第五范式(5NF)

第一范式(1NF)
域都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项

第二范式(2NF)
在1NF的基础上,实体的属性完全依赖于主关键字,不能存在仅依赖主关键字一部分的属性

第三范式(3NF)
在2NF的基础上,任何非主属性不依赖于其它非主属性

 3.数据仓库建模基本理论

ER实体模型
维度建模
dataVault模型
Anchor


ER实体模型
在信息系统中,将事物抽象为“实体”、“属性”、“关系”来表示数据关联和事物描述;实体:Entity,关系:Relationship,这种对数据的抽象 建模通常被称为ER实体关系模型
实体:通常为参与到过程中的主体,客观存在的,比如商品、仓库、货位、汽车, 此实体非数据库的实体表
属性:对主体的描述、修饰即为属性,比如商品的属性有商品名称、颜色、尺寸、重量、产地等

关系:现实的物理事件是依附于实体的,比如商品入库事件,依附实体商品、货位,就会有“库存”的属性产生;用户购买商品,依附实体用户、商品,就会有“购买数量”、“金额”的属性产品。

实体之间建立关系时,存在对照关系:
1:1 ,即1对1的关系,比如实体人、身份证,一个人有且仅有一个身份证号
1:n,即1对多的关系,比如实体学生、班级,对于某1个学生,仅属于1个班级,而在1个班级中,可以有多个学生
n:m,即多对多的关系,比如实体学生、课程,每个学生可以选修多门课程, 同样每个课程也可以被多门学生选修


在日常建模过程中
“实体”用矩形表示:
“关系”用菱形表示:
“属性”用椭圆形表示:
所以ER实体关系模型也称作E-R关系图

针对商品入库,ER图构建
1.抽象出实体
2.梳理实体间的关系
3.梳理实体属性、关系属性构建ER图
4.商品、货位
5.一个货位能存储多个商品,一个商品仅能放置在一个货位
6.商品:ID、名称、颜色、品类。。。货位:位置、容量、存储条件。。。入库关系:库存

?案例
场景:课程管理系统
该系统主要用来管理某校教师、学生、课程,其中包括课程选修、考试、教师授课、学生班级管理功能,现需要完成数据库逻辑模型设计
1,抽象出主体
2,梳理主体之间的关系
3,梳理主体的属性
4,画出E-R关系图
应用场景
ER模型是数据库设计的理论基础,当前几乎所有的OLTP系统设计都采用ER模型建模的方式
Bill Inom提出的数仓理论,推荐采用ER关系模型进行建模
BI架构提出分层架构,数仓底层ods、dwd也多采用ER关系模型就行设计


维度模型
Ralph Kimball推崇数据集市的集合为数据仓库,同时也提出了对数据集市的维度建模,将数据仓库中的表划分为事实表、维度表两种类型。


事实表
在ER模型中抽象出了有实体、关系、属性三种类别,在现实世界中,每一个操作型事件,基本都是发生在实体之间的,伴随着这种操作事件的发生,
会产生可度量的值,而这个过程就产生了一个事实表,存储了每一个可度量的事件。数据仓库建模理论

  电商场景:一次购买事件,涉及主体包括客户、商品、商家,产生的可度量值包括商品数量、金额、件数等

原文地址:https://www.cnblogs.com/wqbin/p/10218042.html