尚硅谷电商实时数仓笔记-《二》数仓建模概述

news2025/1/12 5:59:26

上一篇:

尚硅谷电商实时数仓笔记-《一》数仓概述-CSDN博客

二、数仓建模概述

2.1 数据仓库建模的意义

如果把数据看作图书馆里的书,我们希望看到它们在书架上分门别类地放置;

如果把数据看作城市的建筑,我们希望城市规划布局合理;

如果把数据看作电脑文件和文件夹,我们希望按照自己的习惯有很好的文件夹组织方式,而不是糟糕混乱的桌面,经常为找一个文件而不知所措

数据模型就是数据组织和存储方法,它强调从业务、数据存储和使用角度合理存储数据。只有将数据有序的组织和存储起来之后,数据才能得到高性能、低成本、高效率、高质量的使用。

  • 高性能:良好的数据模型能够帮助我们快速查询所需要的数据。

  • 低成本:良好的数据模型能减少重复计算,实现计算结果的复用,降低计算成本。

  • 高效率:良好的数据模型能极大的改善用户使用数据的体验,提高使用数据的效率。

  • 高质量:良好的数据模型能改善数据统计口径的混乱,减少计算错误的可能性

2.2 数据仓库建模方法论

2.2.1 ER模型

数据仓库之父Bill Innon提出的建模方法是从全企业的高度,用实体关系(Entity Realtionship,ER)模型来描述企业业务,并用规范化的方法表示处理,在范式理论上符合3NF.

1. 实体关系模型

实体关系模型将复杂的数据抽象为两个概念--实体和关系。实体表示一个对象,例如学生、班级,关系是指两个实体之间的关系,例如学生和班级之间的从属关系。

2. 数据库规范化

数据库规范化是使用一系列范式设计数据库(通常是关系型数据库)的过程,其目的是减少数据冗余,增强数据的一致性。

这一系列范式就是指在设计关系型数据库时,需要遵从的不同的规范。关系型数据库的范式一共有六种,分别是第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯科德范式(BCNF)、第四范式(4NF)和第五范式(5NF),遵循的范式级别越高,数据冗余就越低。

3. 三范式

1)第一范式INF核心原则就是:属性不可切割

 很明显上图所示的表格设计是不符合第一范式的,商品列中的数据不是原子数据项,是可以进行分割的。因此对表格进行修改,让表格符合第一范式的要求,修改结果如下图所示

实际上,1NF是所有关系型数据库的最基本要求,你在关系型数据库管理系统(RDBM9),例如SQL Server,Oracle, MySQL中创建数据表的时候,如果数据表的设计不符合这个最基本的要求,那么操作一定是不能成功的。也就是说,只要在RDBMS中已经存在的数据表,一定是符合INF的。 

2)第二范式2NF核心原则:不能存在“部分函数依赖” 

以上表格是存在部分依赖的,比如,这张表的主键是(学号、课名),分数确实完全接触于(学号、课名),但是姓名并不完全依赖于(学号、课名) 

 

3)第三范式3NF核心原则:不能存在传递函数依赖

在下面这张表中,存在传递函数依赖:学号->系名->系主任。但是系主任推不出学号。

 

这种建模方法的出发点是整合数据,其目的是将整个企业的数据进行组合和合并,并进行规范处理,减少数据冗余性,保证数据的一致性。这种模型并不适合直接用于分析统计。 

2.2.2 维度模型

数据仓库领域的另一位打算--Ralph Kimball 倡导的建模方法为维度建模。维度模型将复杂的业务通过事实维度两个概念进行呈现。事实通常对应于业务过程,而维度通常对应业务过程发生时所处的环境。

注:业务过程可以概括为一个个不可拆分的行为事件,例如电商交易中的下单,取消订单,付款,退单等,都是业务过程。

下图为一个典型的维度模型,其中位于中心的SalesOrder为事实表,其中保存的是下单这个业务过程的所有记录。位于周围每张表都是维度表,包括Date(日期),Customer(顾客),Product(产品),Location(地区)等,这些维度表就组成了每个订单发生时所处的环境,即何人、何时、在何地下单了何种产品。从图中可以看出,模型相对清洗、简洁。

维度建模以数据分析作为出发点,为数据分析服务,因此它关注的重点的用户如何更快的完成需求分析以及如何实现较好的大规模复杂查询的响应性能。

 

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

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

相关文章

面试官没想到一个ArrayList,我都能跟他扯半小时

点赞再看,Java进阶一大半 南哥在stackoverflow社区看到14年前的这么一个问题:Java 的 Vector.add() 和 Vector.addElement() 有什么区别,大家有答案吗? 它们实际上没有区别!!!1996年的JDK 1.0版…

每日一题,力扣leetcode Hot100之56. 合并区间

解题思路: 先按照每个数组的第一个数字sort排序。 每次进来一个数组,如果你的第1项大于别人的第2项,那么直接添加。 否则的话则存在可以合并的区间,然后合并的区间的第2项则为旧的和新的第2项的最大值。 class Solution:def m…

SpringBoot框架简单整合ShardingSphere-JDBC实现MySQL分库分表和读写分离及加密混合

1. 主从配置 1.1 主机1(IP:192.168.186.77) 1.1.1 docker-compose.yml version: 3.8services:mysql-master:image: mysql:latestcontainer_name: mysql-masterenvironment:MYSQL_ROOT_PASSWORD: 123456MYSQL_USER: masterMYSQL_PASSWORD: 123456MYSQL…

计算机毕业设计Hadoop+Spark旅游景点可视化 旅游景点推荐系统 景区游客满意度预测与优化 Apriori算法 景区客流量预测 旅游大数据 景点规划

### 开题报告 **论文题目:** 基于Spark的旅游景点可视化系统的设计与实现 **研究背景与意义:** 随着旅游业的快速发展,人们对旅游信息的获取和处理需求越来越高。传统的旅游信息系统虽然能够提供静态的数据查询和展示功能,但在…

短视频矩阵管理系统开发

在短视频内容爆炸式增长的今天,如何高效管理多个账号,同时保持内容的创新性和互动性,成为了创作者和品牌面临的重大挑战。短视频矩阵管理系统的开发,正是为了解决这一问题,提供一个全面的解决方案。 多账号管理&#…

本地调试指引文档

在开发组件库时,我们经常需要在真实的项目中测试组件库的功能,所以需要进行本地调试,本文介绍两种组件库本地调试流程, 1.使用beta版本 2.使用npm link 两种都可以作为本地调试的方案,本文作为一个参考资料&#xff0…

【机器学习】机器学习的分类算法以及使用逻辑回归算法进行分类

引言 机器学习中的分类算法是一种监督学习算法,其目的是根据已知的输入和输出(即特征和标签)来训练模型,以便能够预测未标记数据的类别标签 文章目录 引言一、分类算法1.1 逻辑回归(Logistic Regression)1.…

新手小白,开放式耳机该如何挑选?自费无广开放式耳机评测

作为一个在耳机领域探索多年的人,看到这个问题,我觉得有必要分享一些实用的经验和见解,希望能帮助到各位新手朋友。 首先要来说的就是在挑选开放式耳机的时候需要注意的几个点: 一、佩戴的稳固性。开放式耳机的设计较为独特,如果…

详细指南丨Apache环境下如何配置HTTPS证书

在Apache环境下部署SSL证书通常涉及几个步骤,包括生成私钥、创建CSR(证书签名请求)、安装SSL证书以及配置Apache服务器。下面是详细的步骤说明: 1. 准备工作 确认服务器和域名:需要有一台已经设置好的Apache服务器和…

后台管理系统(springboot+vue3+mysql)

系列文章目录 1.SpringBoot整合RabbitMQ并实现消息发送与接收 2. 解析JSON格式参数 & 修改对象的key 3. VUE整合Echarts实现简单的数据可视化 4. List<HashMap<String,String>>实现自定义字符串排序(key排序、Val…

规划决策算法(四)---Frenet坐标系

知乎:坐标系转换 1.Frenet 坐标系 什么是 Frenet 坐标系: 为什么使用 Frenet 坐标系: 通常情况,我们只会关注车辆当前距离左右车道线的距离,来判断是否偏离车道,是否需要打方向盘进行方向微调。而不是基于…

学习测试15-实战6-根据说明书建工程

CAN协议说明书:含义 一,得到表 1,先建信号 2,建报文,将对应信号拖入其中 3,建节点,将报文添加进TX msg里 调整起始位 数据库建立完成 二,不需要面板,直接导入数据库&…

OpenCV图像滤波(4)构建图像金字塔函数buildPyramid()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在计算机视觉和图像处理中,构建图像金字塔(Image Pyramid)是一种常用的技术,它生成一系列分辨率逐…

怎么保护电脑文件夹?文件夹保护方法大盘点

文件夹是管理电脑数据的重要工具,可以有效避免数据混乱。而为了避免文件夹数据泄露,我们需要严格保护文件夹。下面我们就来盘点一下文件夹的保护方法。 文件夹隐藏 隐藏文件夹是一种简单有效的保护方式,通过隐藏文件夹来避免其他人发现&…

【算法】道格拉斯

一、引言 道格拉斯算法是一种用于曲线拟合的数学方法,特别是在处理曲线插值问题时非常有用。道格拉斯-普克算法(Douglas-Peucker Algorithm),简称D-P算法,是一种用于简化多边形或折线的高效算法,由David Do…

如何优化PyTorch以加快模型训练速度?

PyTorch是当今生产环境中最流行的深度学习框架之一。随着模型变得日益复杂、数据集日益庞大,优化模型训练性能对于缩短训练时间和提高生产力变得至关重要。 本文将分享几个最新的性能调优技巧,以加速跨领域的机器学习模型的训练。这些技巧对任何想要使用…

【ROS 最简单教程 002/300】ROS 集成开发环境安装 (虚拟机版): Noetic

💗 有遇到安装问题可以留言呀 ~ 当时踩了挺多坑,能帮忙解决的我会尽力 ! 1. 安装操作系统环境 Linux ❄️ VM / VirtualBox Ubuntu20.04 👉 保姆级图文安装教程指路,有经验的话 可以用如下资源自行安装 ITEMREFERENCE…

遥感领域新方向!Mamba+RS论文汇总!

本文总结了将Mamba应用至遥感领域的相关论文(14篇),涉及到的论文见文末链接,具体如下: 文章目录 1. 遥感图像处理2. 多/高光谱图像分类3. 变化检测/语义分割4. 遥感图像融合/超分辨率 1. 遥感图像处理 论文题目&#…

AWD神器—watchbird后台rce挖掘

简介 在传统的AWD攻防中,Waf扮演着重要的角色,Watchbird作为一款专门为AWD而生的PHP防火墙,具有部署简单,功能强大等特点,一出世便受到了广大CTFer的喜爱,目前在GitHub上已有600多star。本篇则详细介绍如果…

传输层UDP协议

传输层UDP协议 1. 再谈端口号2. UDP协议1.1 UDP协议字段1.2 将报头和数据进行分离 3. UDP的特点 1. 再谈端口号 端口号(Port)标识了一个主机上进行通信的不同的应用程序; 在 TCP/IP 协议中, 用 “源 IP”, “源端口号”, “目的 IP”, “目的端口号”, “协议号” 这样一个五元…