1、数仓建模的目标
- 访问性能:能够快速查询所需的数据,减少数据I/O
- 数据成本:减少不必要的数据冗余,实现计算结果数据复用,降低大数据系统中的存储成本和计算成本
- 使用效率:改善用户应用体验,提高使用数据的效率
- 数据质量:改善数据统计口径的不一致性,减少数据计算错误的可能性,提供高质量的、一直的数据访问平台
大数据的数仓建模:需要通过建模的方法更好的组织、存储数据,以便于在性能、成本、效率和数据质量之间找到最佳平衡点
关系模式范式
关系型数据库设计时,遵照一定的规范要求,目的在于降低数据的冗余性和数据的一致性,目前业界范式有:
- 第一范式(1NF)
- 第二范式(2NF)
- 第三范式(3NF)
- 巴斯-科德范式(BCNF)
- 第四范式(4NF)
- 第五范式(5NF)
第一范式(1NF)
域都应该是原子性的,即数据库的每一列都是不可分割的原子数据项
第二范式(2NF)
在1NF的基础上,实体的属性完全依赖于主关键字,不能存在仅依赖主关键字的一部分的属性
第三范式(3NF)
在2NF的基础上,任何非主属性不依赖于其他非主属性
数据仓库建模基本理论
- ER实体模型
- 维度建模
- dataVault模型
- Anchor
1、ER实体模型
在信息系统中,将事物抽象为“实体”、“属性”、“关系”来表示数据关联和事物描述;实体:Entity,关系:“Relationship”,这种对数据的抽象建模通常被称为ER实体关系模型。
- 实体:通常为参与到过程中的主题,客观存在的,比如商品、仓库、货位、汽车,此实体非数据库的实体表。
- 属性:对主体的描述、修饰即为属性,比如商品的属性有商品名称、颜色、尺寸、重量、产地等
- 关系:现实的物理事件是依附于实体的,比如商品入库事件,依附于实体商品、货位,就会有“库存”的属性产生;用户购买商品,依附实体“用户”、“商品”,就会有“购买数量”、“金额”的属性产生。
实体之间建立关系时,存在对照关系:
1:1,即1对1的关系,比如实体人--身份证,一个人仅有一个身份证号
1:n,即1对多的关系,比如实体班级--学生,一个班级中有多个学生,一个学生属于一个班级。
n:m,即多对多的关系,比如实体学生--课程,每个学生可以选修多门课程,同样每个课程也可以被多门学生选修。
在日常建模过程中
“实体”用矩形表示:
“关系”用菱形表示:
“属性”用椭圆形表示:
所以ER实体关系模型,也称作E-R关系图。
针对商品入库,ER图构建
抽象出实体 | 商品、货位 |
梳理实体间的关系 | 一个货位能存储多个商品,一个商品仅能放置在一个货位 |
梳理实体属性、关系属性 | 商品:ID、名称、颜色、品类。。。 货位:位置、容量、存储条件。。。 入库关系:库存 |
案例
场景: 课程管理系统
该系统主要用来管理某校教师、学生、课程,其中包括课程选修、考试、教师授课、学生班级管理功能,现需要完成数据库逻辑模型设计。
- 抽象出主体
- 梳理主体之间的关系
- 梳理主体的属性
- 画出E-R关系图
IDEF1X
应用场景
- ER模型是数据库设计的理论基础,当前几乎所有的OLTP系统设计都采用ER模型建模的方式
- Bill Inom提出的数仓理论,推荐采用ER关系模型进行建模
- BI架构提出分层架构,数仓底层ods、dwd也多采用ER关系模型进行设计