大数据项目实战之数据仓库:电商数据仓库系统——第2章 数据仓库建模概述

news2024/10/5 19:17:30

第2章 数据仓库建模概述

2.1 数据仓库建模的意义

如果把数据看作图书馆里的书,我们希望看到它们在书架上分门别类地放置;如果把数据看作城市的建筑,我们希望城市规划布局合理;如果把数据看作电脑文件和文件夹,我们希望按照自己的习惯有很好的文件夹组织方式,而不是糟糕混乱的桌面,经常为找一个文件而不知所措。

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

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

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

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

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

2.2 数据仓库建模方法论

2.2.1 ER模型

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

1)实体关系模型

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

2)数据库规范化

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

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

3)三范式

(1)函数依赖

image-20230329210001438

(2)第一范式

image-20230329210057830

(3)第二范式

image-20230329210146630

(4)第三范式

image-20230329210219742

下图为一个采用Bill Inmon倡导的建模方法构建的模型,从图中可以看出,较为松散、零碎,物理表数量多。

image-20230329210242156

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

2.2.2 维度模型

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

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

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

Untitled

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

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

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

相关文章

CMake——从入门到百公里加速6.7s

目录 一、前言 二、HelloWorld 三、CMAKE 界面 3.1 gui正则表达式 3.2 GUI构建 四 关键字 4.1 add_library 4.2 add_subdirectory 4.3 add_executable 4.4 aux_source_directory 4.5 SET设置变量 4.6 INSTALL安装 4.7 ADD_LIBRARY 4.8 SET_TARGET_PROPERTIES 4.9…

[JavaEE]----Spring03

文章目录Spring_day031,AOP简介1.1 什么是AOP?1.2 AOP作用1.3 AOP核心概念2,AOP入门案例2.1 需求分析2.2 思路分析2.3 环境准备2.4 AOP实现步骤步骤1:添加依赖步骤2:定义接口与实现类步骤3:定义通知类和通知步骤4:定义切入点步骤5:制作切面步骤6:将通知…

测试-子查询及数据更新

测试-子查询及数据更新 目录测试-子查询及数据更新1、修改borrow表增加一列;修改日期数据(两条语句完成)题目代码题解2、 SQL更新:删除-删除“吴宾”的所有成绩记录题目代码3、SQL查询:查询没有被订购的商品题目代码4、…

CMake GUI工具使用 MinGW 64构建工程

系列文章目录 文章目录系列文章目录前言一、open Project是灰色?前言 CMake GUI 打开 CMake GUI。 在 “Where is the source code” 字段中,选择 Krita 源代码目录:E:/krita-dev/krita。 在 “Where to build the binaries” 字段中&#x…

9.Java面向对象----封装

Java面向对象—封装 面向对象简称 OO(Object Oriented),20 世纪 80 年代以后,有了面向对象分析(OOA)、 面向对象设计(OOD)、面向对象程序设计(OOP)等新的系统…

Python 小型项目大全 26~30

二十六、斐波那契 原文:http://inventwithpython.com/bigbookpython/project26.html 斐波那契数列是一个著名的数学模式,被认为是 13 世纪意大利数学家斐波那契的杰作(尽管其他人发现它的时间更早)。序列从 0 和 1 开始&#xff0…

SAR ADC系列16:CDAC上机实践+作业

目录 作业和上机实践: 通过仿真确定桥接电容Ca的尺寸 采样技术和CDAC相结合 电容校正 为什么在100...0和011...1之间最差:电容的瓶颈在MSB上面 为什么INL最差也发生在中间Code 其他问题 频谱混叠 上级板采样网络时序问题 共模相关问题 关于V…

数据库----------约束、主键约束

目录 1.简介 1.概念 2.作用 3.分类 2.主键约束 1.概念 2.操作 1.添加单列主键 2.添加多列联合主键 3. 通过修改表结构添加主键 4.删除主键 1.简介 1.概念 约束英文: constraint 约束实际上就是表中数据的限制条件 2.作用 表在设计的时候加入约束的目的就是为了…

系统无损迁移、硬盘系统复制完整教程(常用于升级更大硬盘的场景)

阿酷TONY / 2023-4-15 / 长沙 这个教程的应用背景或场景是这样的: 原本使用的ThinkPad笔记本电脑是250G的SSD固态硬盘,使用了一两年后,空间不足了,这个时候需要换一块500G或更大的SSD硬盘,那么问题来了,通…

人员跌倒识别检测系统 yolov7

人员跌倒识别检测系统通过PythonYOLO7网络模型算法,人员跌倒识别检测算法模型对现场画面中有人员倒地摔倒行为实时分析预警,发现则立即抓拍存档告警同步提醒后台值班人员及时处理。YOLOv7 的发展方向与当前主流的实时目标检测器不同,研究团队…

(十二)排序算法-插入排序

1 基本介绍 1.1 概述 插入排序属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的。 插入排序的工作方式非常像人们排序一手扑克牌一样。开始时,我们的左手为空并且桌子上的牌面朝下。然后,…

Flink处理大型离线任务稳定性与性能调优探索

Apache Flink作为分布式处理引擎,用于对无界和有界数据流进行状态计算。其中实时任务用于处理无界数据流,离线任务用于处理有界数据。通过本文你将掌握让大型离线任务运行稳定的能力,同时能够通过分析离线任务运行特点,降低任务运…

150.网络安全渗透测试—[Cobalt Strike系列]—[DNS Beacon原理/实战测试]

我认为,无论是学习安全还是从事安全的人多多少少都会有些许的情怀和使命感!!! 文章目录一、DNS Beacon原理1、DNS Beacon简介2、DSN Beacon工作原理二、DNS Beacon实战测试1、实战测试前提2、实战测试过程一、DNS Beacon原理 1、…

大数据分析工具Power BI(三):导入数据操作介绍

导入数据操作介绍进入PowBI,弹出的如下页面也可以直接关闭,在Power BI中想要导入数据需要通过Power Query 编辑器,Power Query 主要用来清洗和整理数据。文件资料下载:https://download.csdn.net/download/xiaoweite1/87587711一、…

Wijmo JavaScript UI 5.20222.877 Crack

Wijmo使用更快、更灵活的 JavaScript UI 组件构建更好的应用程序 使用 Wijmo,利用我们引人注目的 UI 组件库,将更多时间花在应用程序的核心功能上。要求零依赖,Wijmo sports弹性网格,业内最好的 JavaScript 数据网格,提…

JVM性能调优方法和模板

每天 100 万次登陆请求,8G 内存该如何设置 JVM 参数,大概可以分为以下 8 个步骤 。 第一步、新系统上线如何规划容量? 1. 套路总结 任何新的业务系统在上线以前都需要去估算服务器配置和 JVM 的内存参数,这个容量与资源规划并不…

关于 AI ,大家关心的问题

阅读本文大概需要 1.46 分钟。兄弟们,自从我跟曹老师准备合伙做一个 AI 生态的新社群之后,很多人问我最多的问题就是:AI 时代对我们普通人来说意味着什么?普通人又该如何去把握 AI 时代的机会?那么,今天&am…

nodejs+vue家庭菜谱食谱管理系统

目 录 摘 要 I ABSTRACT I 目 录 III 第1章 绪论 1 1.1开发背景 1 1.2开发意义 1 1.3研究内容 1 第2章 主要技术和工具介绍 5 第3章 系统分析 4 3.1可行性分析 4 3.1.1经济可行性 4 3.1.2技术可行性 4 3.1.3操作可行性 4 3.2需求分…

【云原生】k8s Ingress 实现流量路由规则控制

文章目录前言什么是 IngressIngress 的定义格式Ingress 的类型有哪几种?1. Simple fanout2. Name-based virtual hosting3. Path-based routing该如何实现更新 IngressIngress ControllerIngress Class总结前言 在 Kubernetes 中,Ingress 是一个非常重要…

【数据结构与算法分析inC-MarkAllen】1-数学基础

文章目录1. 第一章1.1 进行算法分析目的1.1.1 适应大量数据情况从 NNN 个数中选择第 kkk 大的数递减排序,取第K大的数插入排序思想1.1.2 边界条件正确1.2 数学知识复习1.2.1 指数1.2.2 对数1.2.3 级数几何级数算术级数1.2.4 模运算性质1.2.5 证明方法归纳法斐波那契…