二、数据仓库模型设计

news2025/1/17 18:05:53

数据仓库模型设计

      • 一、数据模型
      • 二、关系模型
      • 三、维度模型
        • 1、事实表
          • (1)事务事实表
          • (2)周期快照事实表
          • (3)累计快照事实表
          • (4)无事实的事实表
        • 2、维度表
        • 3、维度模型类型
          • (1)星型类型
          • (2)雪花模型
          • (3)星座模型
        • 4、维度模型 VS 关系模型
      • 四、模型设计方法
        • 1、泛化
        • 2、子类
        • 3、抽象

一、数据模型

数据模型(DATA MODEL, DM): 用于提供数据表示和操作手段的形式架构。

概念模型(Concept Data Model, CDM):

  • 定义了重要的业务概念和彼此的关系
  • 由核心实体或其集合,及实体间的业务关系组成

逻辑模型(Logical Data Model, LDM):

  • 对概念数据模型进一步分解和细化
  • 描述实体、属性、以及实体与实体之间的关系

物理模型(Physical Data Mode, PDM):

  • 描述模型实体的细节,对数据冗余与性能进行平衡

  • 关注数据库的物理实现,解决细节技术问题

  • 需要考虑数据类型、长度、索引等因素

  • 需确定数据平台和架构

二、关系模型

关系模型:通过实体关系(E-R)描述企业业务和业务规则。

  • 实体:客观存在并且可以相互区别的事物
  • 关系:描述实体间的关联性
  • 属性:用来描述一个事物的最基本元素

3NF:

  • 每个属性值唯一,不具有多义性(字段不可分)
  • 每个非主属性必须完全依赖整个主键,而非部分主键(表不可分)
  • 每个非主属性不能依赖其它关系中的属性,即不存在间接依赖(表不可分)

三、维度模型

维度模型:一种趋于支持最终用户,从分析决策的需求出发的数据模型

维度模型分为:维度表、事实表

1、事实表

事实表(Fact):是维度建模中最基本的表,存放业务度量数据,例如数量、金额、汇总等流水和快照数据。

  • 数仓维度建模的核心,围绕业务过程进行设计
  • 通过获取表述业务过程的度量来表达业务过程
  • 包含了应用的维度和业务过程有关的度量

在这里插入图片描述

事实表的基本结构:

  • 一个或多个数值型的度量字段
  • 一组关联到维表的外键,而这些维表提供了事实表度量的上下文
  • 一个或者多个退化维度(Degennerate Dimensions))——存在于事实表,但不是外键,不关联任何维表,可能是事实表的主键。
(1)事务事实表
  • 用来描述业务过程,跟踪空间或时间上某点的度量事件;
  • 保存的是最原子的数据,也称为“原子事实表”、“交易事实表”
    在这里插入图片描述
(2)周期快照事实表

周期快照事实表表现得是一个时间段,或者规律性得重复。适合跟踪长期的过程。

在这里插入图片描述
周期快照表特点:

  • 事务事实表只记录当天发生的业务过程。
  • 快照事实表无论当天是否有业务发生都会记录一条。
(3)累计快照事实表
  • 用于描述有明确开始和结束的过程,如合同履行,保单受理等。
  • 累计快照表不适合长期连续处理,如跟踪银行账户。
  • 累计快照事实表的粒度是一个实体从创建到当前状态的完整历史。
  • 适合研究事件之间的时间间隔

特点:

  • 事务事实表仅记录事务发生时的状态,对于实体的某一实例不再更新,累积快照事实表则对某一实例 定期更新
  • 适合于具有明确起止时间的短生命周期的实体。对于较长生命周期的实体,一般采用周期快照事实表比较合适。

在这里插入图片描述

(4)无事实的事实表

事件类:没有具体测量值,如用事实表记录交通事故事件。

条件、范围、资格类:客户和销售人员的分配情况,产品的促销范围等。

在这里插入图片描述

2、维度表

维度表(Dimension):对数据进行分类的表,用于从特定的角度观察数据。维度是事实表的入口点,维度通常是反范式的,通常占总数据的10%左右。

基础结构:

  • 代理键:一个无意义的,唯一标识的字段;维表的主键,事实表的外键;
  • 自然键:一个或多个字段,从源系统抽取来的有意义的字段;
  • 描述属性:静态或者变化比较慢的字段;会有多个

在这里插入图片描述

缓慢变化维:
维度的属性并不是静态的,它会随着时间的流逝发生缓慢的变化;
与数据增长较为快速的事实表相比,维度的变化相对缓慢;
在Kimball理论中,有三种处理缓慢变化维的方式:

  • 重写维度值
  • 插入新的维度行
  • 添加唯独列

重写维度值:不保留历史数据,始终取最新数据。
在这里插入图片描述

插入新的维度行:保留历史数据,如商品item1的所属类目变化后,插入一条新事务代理键为1001的维度数据,则订单9001使用新的代理键。

在这里插入图片描述
添加维度列: 生成新的一列而不是新的一行。保留历史数据,可以使用任何一个维度列。

在这里插入图片描述

维度表的规范化与反规范化:

  • 规范化可以有效避免数据冗余导致的不一致问题;
  • 反规范化没有丢失信息,且复杂性降低了;
  • 规范化的雪花模式,可以节约部分存储,但会损耗一定的查询性能
  • 实际应用中总是使用维表的空间来换取简明性和查询性能

在这里插入图片描述

3、维度模型类型

(1)星型类型
  • 表达维度和事实之间单层关系的模型
  • 事实和每个维度之间都是直连关系
  • 不同维度之间没有任何联系

优点:

  • 简化查询
  • 简化业务报表逻辑
  • 提升查询性能
  • 快速聚合

在这里插入图片描述

(2)雪花模型
  • 基于星型模型的拓展
  • 对星型模型的维度表进行了范式化处理,一个维度被规范成多个关联的表
  • 表达了维度和事实之间的多层关系

优点:节省存储空间

在这里插入图片描述

(3)星座模型

星型模型延申,多张事实表,且共享维度表。
在这里插入图片描述

4、维度模型 VS 关系模型

关系模型:
优点:稳定,低冗余;
缺点:性能弱;
场景:传统金融业

维度模型
优点:性能好,易理解
缺点:稳定性弱、高冗余
场景:互联网行业

四、模型设计方法

1、泛化

由具体的、个别的到一般的过程;
在这里插入图片描述

优点:

  • 实体能够保罗万象,提高模型的稳定性、泛化能力。如新增存储一种具体对象,无需新增实体;
  • 泛化后的数据模型可以减少实体的个数,无需为每个具体的业务对象分别建立相关历史实体;

缺点

  • 业务可理解性变弱;
  • 计算性能影响

2、子类

  • 对于具有泛化层次关系的实体,实体的上一级称为父类实体,实体的下一级称为子类实体; 父子层级可能存在多个层级
  • 一般将公共属性放在父类实体,个性化属性放在子类实体;
  • 排他性父子类关系:即一条父类数据只能有一种子类;
  • 非排他性父子类关系:即一条父类可能有多种子类;

优点:

  • 清晰展现业务主题之间的关系;
  • 减少子类的附属实体个数;
  • 数据模型的稳定性和可扩展性

缺点:

  • 计算性能影响;

3、抽象

为确保模型结构(对字段的抽象)能够适应于各种场景,以一种特定的方式移除细节但仍能保留属性的设计模式。

在这里插入图片描述

优点:

  • 提升数据模型机构的稳定性和可扩展性,当新增一种客户联系方式,如微信号,模型结构无需变化,只需在现有的数据模型实体里增加内容

缺点:

  • 业务可理解性变弱
  • 计算性能影响

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/155723.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LVGL学习笔记16 - 进度条Bar

目录 1. Parts 2. 模式 2.1 LV_BAR_MODE_SYMMETRICAL:对称模式 2.2 LV_BAR_MODE_RANGE:范围模式 3. 动画 4. 样式 4.1 方向 4.2 渐变色 4.3 增加边框 4.4 滚动条方向 进度条有一个背景和一个指示器组成,通过lv_bar_create创建对象。…

mysql多表查询

一、关联查询(联合查询) 1.1 什么是关联查询 关联查询:两个或者多个表,一起查询。 前提条件: 这些一起查询的表之间是有关系的(一对一、一对多),它们之间一定是有关联字段&#x…

初识IL2CPP

在Unity中进行打包时,有两种打包方式选择:Mono和IL2CPP Mono和IL2Cpp是Unity的脚本后处理方式,通过脚本后处理实现Unity的跨平台 1.Mono (1). Mono组成组件: C#编辑器,CLI虚拟机,以及核心类别程序库 (2).跨平台过程 Mo…

【Linux】多线程概念

目录🌈前言🌸1、Linux线程概念🍡1.1、概念🍢1.2、线程的优点🍧1.3、线程的缺点🍨1.4、线程的异常和用途🌺2、Linux下进程 vs 线程🌈前言 这篇文章给大家带来线程的学习!…

PID算法入门(一)

1.简介 PID是Proportional(比例), Integral(积分), Differential(微分)的首字母缩写,他是一种结合比例,积分,微分三个环节于一体的闭环控制算法. 2.PID各环节 2.1比例环节 成比例地反应控制系统的偏差信号,即输出&a…

Codeforces Round #843 (Div. 2) A1 —— D

题目地址:Dashboard - Codeforces Round #843 (Div. 2) - Codeforces一个不知名大学生,江湖人称菜狗 original author: jacky Li Email : 3435673055qq.com Time of completion:2023.1.11 Last edited: 2023.1.11 目录 ​编辑 A1. Gardener…

读论文——day61 目标检测模型的决策依据与可信度分析

目标检测模型的决策依据与可信度分析本文贡献及原文1 相关工作(略看)1.3 目标检测模型2 背景知识(LIME)2.2 LIME3 目标检测决策依据及可信度分析3.1 决策依据3.2 对目标检测模型的预测进行可信度评价4 基于 LIME 的目标检测模型解…

(第四章)OpenGL超级宝典学习:必要的数学知识

必要的数学知识 前言 在本章当中,作者着重介绍了几个和3D图形学重要的数学知识,线性代数基础好的同学可以直接绕过本章,说实话这篇博客写到这里,我是非常犹豫的,本章节的内容可以说是很基础,但是相当…

SSM框架01_Spring

有一个效应叫知识诅咒:自己一旦知道了某事,就无法想象这件事在未知者眼中的样子。00-Spring课程介绍01-初识Spring今天所学的Spring其实是Spring家族中的Spring Framework;Spring Fra是Spring家族中其他框架的底层基础,学好Spring可以为其他S…

Morse1题解

原理摩尔斯电码和电报简单说一下电报和摩尔斯电码的原理最简单的电报模型就是一个电源,一个开关和一个电磁铁当需要长距离使用时候,需要用到继电器按下开关,电磁铁会吸引磁铁长按开关,电磁铁就会闭合一段时间,留下一划…

Jenkins集成GitLab Webhooks自动化构建

JenkinsGitLab Webhooks自动构建项目1 构建步骤1.1 Jenkins中设置构建触发器1.2 Build Authorization Token Root插件安装1.3 GitLab配置Webhooks2 测试webhooks2.1 测试推送事件2.2 测试合并请求事件2.3 代码修改提交测试1 构建步骤 1.1 Jenkins中设置构建触发器 这里先随便写…

Markdown与DITA比较

Markdown是一种轻量级标记语言,创始人为John Gruber。它允许人们使用易读易写的纯文本格式编写文档,然后转换成有效的HTML文档。这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。由于Markdown的轻量化、易读易写特性,并且对于图片&am…

第一章Mybatis基础操作学习

文章目录MyBatis简介MyBatis历史MyBatis特性和其它持久化层技术对比搭建MyBatis开发环境创建maven工程创建MyBatis的核心配置文件创建mapper接口创建MyBatis的映射文件通过junit测试功能加入log4j日志功能不带参数的增删改查Mapper接口的编写对应Mapper接口的xml文件编写核心配…

【Python基础】如何使用pycharm

1、设置Python 解释器 在任何项目,第一步就是设置Python 解释器,就是那个Python.exe 在File->Setting->Projec: xxx 下找到 Project Interpreter。然后修改为你需要的 Python 解释器。注意这个地方一定要注意的是:在选择 Python 解释…

Dubbo 学习笔记

Dubbo 学习笔记 1.基础知识 1.1 分布式基础理论 1.1.1 什么是分布式系统? 《分布式系统原理与范型》定义: 分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统分布式系统(distributed system&#xf…

java基于ssm蛋糕店蛋糕商城蛋糕系统网站源码

简介 java使用ssm开发的蛋糕商城系统,用户可以注册浏览商品,加入购物车或者直接下单购买,在个人中心管理收货地址和订单,管理员也就是商家登录后台可以发布商品,上下架商品,处理待发货订单等。 演示视频 …

HTML贪吃蛇游戏源码(穿墙)

演示 完整HTML <!DOCTYPE html> <html> <head><meta charset"utf-8"><title><・)))><<</title><link rel"shortcut icon" href"${ctx}/image/snake_eating.png"><meta name"ref…

中科大2006年复试机试题

中科大2006年复试机试题 文章目录中科大2006年复试机试题第一题问题描述解题思路及代码第二题问题描述解题思路及代码第三题问题描述解题思路及代码第四题问题描述解题思路及代码第五题问题描述解题思路及代码第六题问题描述解题思路及代码第一题 问题描述 求矩阵的转置。 给…

three.js入门篇6之 环境贴图、经纬线映射贴图与高动态范围成像HDR

目录013-1 环境贴图013-2 经纬度映射贴图与HDR013-1 环境贴图 就是把周边的环境&#xff0c;贴在物体的表面之上 注意&#xff1a;px&#xff1a;x轴正向&#xff0c;nx&#xff1a;x轴负向 import * as THREE from "three" // console.log(main.js,THREE);// 导入…

06什么是Fabless?什么是IDM?

Fabless是SIC&#xff08;半导体集成电路&#xff09;行业中无生产线设计公司的简称&#xff0c;只搞设计的无晶圆厂半导体公司&#xff0c;生产交给像台积电这样的代工厂去做。 IDM是整合元件制造商&#xff0c;像英特尔这样既设计又制造的就叫IDM&#xff0c;因为规模大&…