数仓建模简介

news2024/10/6 8:35:09

建模的意义

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

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

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

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

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

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

建模方法论

2.1 ER模型

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

1)实体关系模型

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

2)数据库规范化

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

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

3)三范式

1)函数依赖

1、完全函数依赖:

    设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。记做:

人类语言:

比如通过,(学号,课程) 推出分数 ,但是单独用学号推断不出来分数,那么就可以说:分数 完全依赖于(学号,课程) 。

即:通过AB能得出C,但是AB单独得不出C,那么说C完全依赖于AB。

2、部分函数依赖

        假如 Y函数依赖于 X,但同时 Y 并不完全函数依赖于 X,那么我们就称 Y 部分函数依赖于 X,记做:

人类语言:

比如通过,(学号,课程) 推出姓名,因为其实直接可以通过,学号推出姓名,所以:姓名  部分依赖于 (学号,课程)

即:通过AB能得出C,通过A也能得出C,或者通过B也能得出C,那么说C部分依赖于AB。

 3、传递函数依赖

         传递函数依赖:设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。记做:

人类语言:

 比如:学号 推出 系名 , 系名 推出 系主任, 但是,系主任推不出学号,系主任主要依赖于系名。这种情况可以说:系主任 传递依赖于 学号

通过A得到B,通过B得到C,但是C得不到A,那么说C传递依赖于A。

2)第一范式

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

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

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

3)第二范式

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

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

以上符合第二范式,去掉部分函数依赖依赖

4)第三范式

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

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

 上面表需要再次拆解:

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

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

2.2 维度模型

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

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

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

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

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

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

相关文章

从政府工作报告中的IT热词统计探计算机行业发展(二)人工智能+:3次

政府工作报告作为政府工作的全面总结和未来规划,不仅反映了国家整体的发展态势,也为各行各业提供了发展的指引和参考。随着信息技术的快速发展,计算机行业已经成为推动经济社会发展的重要引擎之一。因此,从政府工作报告中探寻计算…

快递送上门,别太难为快递小哥了

新修订的《快递市场管理办法》正式落地半个月,就给快递行业来了场大热闹。 与之相关的,例如:快递新规;快递员收入减半;快递员离职潮;大把快递员离职去送外卖;上门送件快递加钱...... 简单来说&…

Sawyer 机器人 ROS SDK 配置

系列文章目录 目录 系列文章目录 前言 恢复出厂设置 内容 概述 要求 程序 将 Sawyer 升级到 Intera SDK 打印 内容 概述 先决条件 安装步骤 将机器人从 Intera MFG 切换到 SDK 模式 联网 内容 确认 Sawyer 在机器人上以 SDK 模式运行 基本 基本要求 网络…

5.多媒体

考试比重小,一般只有1道题,多则2道少则无; 主要议题: 1.多媒体概念 2.多媒体分类 分类要记下: 显示媒体又称表现媒体; 感觉媒体:着重于人的感觉器官; 表示媒体:为了存…

锦意绵长,丽彩婚典

锦江丽笙酒店亮相婚博会 演绎沪上多彩浪漫情怀 (中国上海,2024年3月18日)3月16日至17日,2024年上海春季婚博会在上海世博展览馆举办。此次婚庆行业盛会上,锦江丽笙酒店旗下8家酒店联袂登场,凭借深厚的品牌…

如何搭建DolphinScheduler服务并结合内网穿透公网远程任务调度

文章目录 前言1. 安装部署DolphinScheduler1.1 启动服务 2. 登录DolphinScheduler界面3. 安装内网穿透工具4. 配置Dolphin Scheduler公网地址5. 固定DolphinScheduler公网地址 前言 本篇教程和大家分享一下DolphinScheduler的安装部署及如何实现公网远程访问,结合内…

自己搭建代理IP池有哪些好处呢?

目录 写在前面 一、获取代理IP 二、验证代理IP 三、使用代理IP 四、定期更新代理IP 总结 写在前面 自己搭建代理IP池有很多好处。首先,使用代理IP可以绕过目标网站的访问限制,隐藏真实的IP地址,提高爬虫的稳定性和可靠性。其次&#x…

全排列的不同写法(茴字的不同写法)及对应的时间开销

资源课件&#xff1a; CS106B-recursion-pptstanford library-timer.hstanford library-set.h 不同的方法 1------ Set<string> permutations1Rec(string remaining) {Set<string> res;if(remaining.size() 0) {res "";}else {for(int i 0; i <…

django管理日志记录(日志审计django_admin_log)

环境 django 4.1 用途 django_admin_log 表主要用于以下几个方面&#xff1a; 审计日志: 可以用来记录管理界面的所有操作&#xff0c;以便审计管理员的操作。 故障排除: 可以用来诊断和排除管理界面相关的问题。 数据恢复: 可以用来恢复意外删除的数据。 from django.con…

针对教育行业的网络安全方案有哪些

智慧校园”是教育信息化进入高级阶段的表现形式&#xff0c;比“数字校园”更先进。集体知识共融、共生、业务应用融合创新、移动互联网物联网高速泛在是其重要特征。特别是在互联网教育的大环境下&#xff0c;为了更好的发挥智慧化教学服务和智慧化教学管理功能&#xff0c;需…

洋葱圈模型js实现

洋葱圈模型 什么是洋葱圈模型&#xff1f; 洋葱圈模型是一种函数执行机制&#xff0c;函数的执行想洋葱一样&#xff0c;从外圈到内圈再到外圈&#xff0c;使用过nodejs中的koa的都知道&#xff0c;在Koa框架中&#xff0c;洋葱圈模型的概念是指将中间件按照一定的顺序组织成一…

Unity 弹框选择文件、文件夹、保存文件

目录 一、概述 二、用法 1.选择文件 2.选择文件夹 3.保存文件 结束 一、概述 最近在做一个模拟仿真的项目&#xff0c;我采用了 Unity3d 发布 PC 平台来完成&#xff0c;其中有一个功能&#xff0c;需要弹框让用户选择一个 txt 文件&#xff0c;并读取 txt 文件的内容&…

今年找工作有多难

前言 这几天在网上刷到一个读文案策划专业的刚毕业的女大学生在网上哭诉找工作难&#xff0c;面试30家公司都没有找到工作&#xff0c;有的公司还说试用期没有钱&#xff0c;且试用期后不保证能转正。小姑娘泪流满面的说&#xff1a;不知道读大学的意义在哪里&#xff0c;自己…

springboot学习(八十六) springboot使用graalvm编译native程序

一、windows环境下 1.下载graalvm的jdk https://injdk.cn/ 下载windows版本 配置java环境变量&#xff0c;配置过程略 2.下载visual Studio Build Tools 下载地址&#xff1a;https://aka.ms/vs/17/release/vs_BuildTools.exe 安装后选择组件&#xff1a; 其中windows S…

SpringBoot-邮件任务

很多时候的网站都有邮件发送功能&#xff0c;下面我们来看看邮件发送功能结合springboot该怎么实现下面的例子我是用的qq邮箱来完成的 1.导入依赖 我的springboot的版本是2.x.x的&#xff0c;如果发现运行不成功&#xff0c;请将版本降低到2.x.x <!--邮件任务--><depe…

2024最全电商API接口 高并发请求 实时数据 支持定制 电商数据 买家卖家数据

电商日常运营很容易理解&#xff0c;就是店铺商品维护&#xff0c;上下架&#xff0c;评价维护&#xff0c;库存数量&#xff0c;协助美工完成制作详情页。店铺DSR&#xff0c;好评率&#xff0c;提升客服服务等等&#xff0c;这些基础而且每天都必须做循环做的工作。借助电商A…

C语言实现一个两个数加减乘除的答题代码(含文件保存),用户增加,题目增加,题目测试,题目答题等等

目录 1、这是我大一自己写的小代码&#xff0c;现在翻到了就分享出来&#xff0c;高手勿喷。 2、项目运行 3、获取完整源码网址 1、这是我大一自己写的小代码&#xff0c;现在翻到了就分享出来&#xff0c;高手勿喷。 2、项目运行 &#xff08;1&#xff09;测试模块 每次…

如何在CentOS系统部署AMH主机面板并实现无公网IP远程连接

文章目录 推荐1. Linux 安装AMH 面板2. 本地访问AMH 面板3. Linux安装Cpolar4. 配置AMH面板公网地址5. 远程访问AMH面板6. 固定AMH面板公网地址 推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击…

hcia复习总结9

NAT 在ip地址空间中&#xff0c;A,B,C三类地址中各有一部分地址&#xff0c;他们被称为私有地址&#xff08;私网IP地址&#xff09;&#xff0c;其余的所有地址都被称为公有地址&#xff08;公网IP地址&#xff09; A&#xff1a;10.0.0.0-10.255.255.255--相当于一个A类网络…

vue3使用qrcodejs2-fix生成背景透明的二维码

qrcodejs官方仓库&#xff1a;GitHub - davidshimjs/qrcodejs: Cross-browser QRCode generator for javascript qrcodejs2-fix 是一个用于生成QR码的JavaScript库&#xff0c;使用的时候先安装&#xff0c;然后通过设置前景色和背景色可以控制显示的二维码效果。想生成透明背…