1、数仓建模的目标

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

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

 

关系模式范式

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

  • 第一范式(1NF): 原子性,字段不可分
  • 第二范式(2NF):唯一性,有主键,非主键依赖主键
  • 第三范式(3NF):非主键字段不能相互依赖
  • 巴斯-科德范式(BCNF)
  • 第四范式(4NF)
  • 第五范式(5NF)

第一范式(1NF)

  域都应该是原子性的,即数据库的每一列都是不可分割的原子数据项

 

 

 第二范式(2NF)

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

 

 

 第三范式(3NF)

  在2NF的基础上,任何非主属性不依赖于其他非主属性

 

 

 

数据仓库建模基本理论

  1. ER实体模型
  2. 维度建模
  3. dataVault模型
  4. Anchor

1、ER实体模型

  在信息系统中,将事物抽象为“实体”、“属性”、“关系”来表示数据关联和事物描述;实体:Entity,关系:“Relationship”,这种对数据的抽象建模通常被称为ER实体关系模型。

  • 实体:通常为参与到过程中的主题,客观存在的,比如商品、仓库、货位、汽车,此实体非数据库的实体表。
  • 属性:对主体的描述、修饰即为属性,比如商品的属性有商品名称、颜色、尺寸、重量、产地等
  • 关系:现实的物理事件是依附于实体的,比如商品入库事件,依附于实体商品、货位,就会有“库存”的属性产生;用户购买商品,依附实体“用户”、“商品”,就会有“购买数量”、“金额”的属性产生。

实体之间建立关系时,存在对照关系:

  1:1,即1对1的关系,比如实体人--身份证,一个人仅有一个身份证号

  1:n,即1对多的关系,比如实体班级--学生,一个班级中有多个学生,一个学生属于一个班级。

  n:m,即多对多的关系,比如实体学生--课程,每个学生可以选修多门课程,同样每个课程也可以被多门学生选修。

 

在日常建模过程中

  “实体”用矩形表示:

 

 

  “关系”用菱形表示: 

 

 

   “属性”用椭圆形表示:

 

 

 所以ER实体关系模型,也称作E-R关系图。

 

针对商品入库,ER图构建

抽象出实体 商品、货位
梳理实体间的关系 一个货位能存储多个商品,一个商品仅能放置在一个货位
梳理实体属性、关系属性

商品:ID、名称、颜色、品类。。。

货位:位置、容量、存储条件。。。

入库关系:库存

 

案例

  场景: 课程管理系统

  该系统主要用来管理某校教师、学生、课程,其中包括课程选修、考试、教师授课、学生班级管理功能,现需要完成数据库逻辑模型设计。

  1. 抽象出主体
  2. 梳理主体之间的关系
  3. 梳理主体的属性
  4. 画出E-R关系图

 

 

 

IDEF1X

 

 

 

应用场景

  •  ER模型是数据库设计的理论基础,当前几乎所有的OLTP系统设计都采用ER模型建模的方式
  • Bill Inom提出的数仓理论,推荐采用ER关系模型进行建模
  • BI架构提出分层架构,数仓底层ods、dwd也多采用ER关系模型进行设计

 

 

 

 

 

 

 

 

 

 

 

 

 

posted on 2021-08-23 10:15  架构艺术  阅读(590)  评论(0编辑  收藏  举报