首页 > 其他分享 >数仓建模。传统三范式建模和维度建模 详细篇

数仓建模。传统三范式建模和维度建模 详细篇

时间:2024-08-06 18:54:28浏览次数:14  
标签:数仓 范式 建模 查询 维度 数据 冗余

数据仓库建模,说白了就是建库建表

目录

一,三范式建模

一,三范式建模的概叙

二,三范式建模的作用

三,三范式建模的定义

四,三范式建模的举例

二,维度建模的概念与定义

一,维度建模的优势

二,维度建模的分类

三,维度建模的举例

四,维度建模的具体示例:

三,三范式建模和维度建模的区别


一,三范式建模

一,三范式建模的概叙

  • 三范式建模时数据库设计的一种重要方法;
  • 它基于关系数据库的理论,通过规范数据表的设计来减少数据冗余
  • 从而提高数据一致性和查询效率。
  • 三范式,包括第一范式,第二范式,第三范式。每个范式都建立再前一个范式的基础上,对数据表提出更严格的要求。

二,三范式建模的作用

  1. 减少数据冗余。规范数据表的设计,避免一个数据库存储重复的数据,从而减少冗余
  2. 提高数据一致性。正式因为减少了数据冗余,因此在更新数据的时候,只需要在一个地方更改数据,就能保证整个数据的一致。
  3. 提高查询效率。虽然三方式建模导致查询的时候可能需要更多的表连接,但是由于数据冗余的减少,总体上也可以提高效率。
  4. 增强数据的事务性。这是主要的作用,极大的利于数据库的增删改。

三,三范式建模的定义

第一范式:数据库总每一列都是不可再分的,每个表的字段都是最基本,不可再分的数据单位。

第二范式:满足第一范式的基础上,表中的非主属性的字段必须都完全依赖主键。不能部分依赖;

第三范式,在满足第二范式的基础上,表中非主属性的字段不存在传递依赖关系。

四,三范式建模的举例

一范式

二范式    不允许有部分依赖,非主键的列必须完全依赖主键

三范式 在第二范式的基础上 不允许有传递依赖,也是必须完全依赖主键

二,维度建模的概念与定义

                维度建模(Dimensional Modeling)是数据仓库建设中的一种数据建模方法,它将数据结构化的逻辑设计方法,将客观世界划分为度量和上下文。这种模型设计技术旨在通过直观的标准框架结构来表现数据,允许高性能存取,并优化读取、报告和分析大量业务数据的性能。维度建模的核心在于将业务过程和事件组织成一组维度和事实,以描述业务活动的特征和结果。这种方法由Kimball最先提出,并广泛应用于数据仓库和商业智能系统的设计中。

一,维度建模的优势

  1. 提高数据分析效率:通过将业务数据进行有效组织,维度建模支持快速、有效的数据分析,使数据分析师能够更快地获取所需信息。
  2. 降低数据噪声:通过整合不同业务事件的数据,减少数据中的异常值和噪声,提高数据的一致性和准确性。
  3. 提高数据质量:维度建模通过规范化和标准化数据,确保数据的一致性和高质量,为决策提供可靠依据。
  4. 支持实时数据分析:结合增量建模技术,维度建模能够支持实时数据分析,满足业务决策对时效性的需求。
  5. 易于理解和查询:维度建模采用直观的结构设计,使得非技术用户也能更容易地理解和查询复杂的数据集。

二,维度建模的分类

维度建模主要分为以下几种类型:

  1. 星型模型(Star Schema)
    • 特点:包含一个事实表和多个维度表。事实表存储了度量数据(如销售额、交易数量等),而维度表提供了关于事实表中记录的上下文描述性信息(如时间、地点、产品等)。事实表与维度表通过主键外键相关联,形成星型结构。
    • 优点:结构简单,查询性能高,易于理解和实现。
    • 缺点:可能存在数据冗余。
  2. 雪花模型(Snowflake Schema)
    • 特点:雪花模型是对星型模型的扩展,其中一个或多个维表没有直接连接到事实表上,而是通过其他维表连接到事实表上。这种结构类似于多个雪花连接在一起。
    • 优点:通过减少数据存储量以及联合较小的维表来改善查询性能。
    • 缺点:结构复杂,查询时可能需要更多的关联操作,影响性能。
  3. 星座模型(Constellation Schema)
    • 特点:星座模型是基于多张事实表,并且这些事实表共享维度表信息。这种模型适用于数据关系比星型模型和雪花模型更复杂的场合。
    • 优点:能够处理更复杂的数据关系,支持多个角度的数据分析。
    • 缺点:设计和实现复杂度较高。

三,维度建模的举例

以电商平台的销售数据为例,维度建模可以设计如下:

  • 事实表:销售事实表,包含字段如订单编号、订单日期、销售额、销售量等。
  • 维度表
    • 时间维度表:包含日期、月份、季度、年份等字段。
    • 产品维度表:包含产品编号、产品名称、产品类型、价格等字段。
    • 客户维度表:包含客户编号、客户姓名、性别、年龄、地区等字段。

        通过这些维度表和事实表的关联,可以方便地查询和分析电商平台的销售数据,如某产品在某时间段的销售额、某客户在某时间段的购买记录等。这种设计使得数据分析更加直观和高效。

四,维度建模的具体示例:

三,三范式建模和维度建模的区别

区别点三范式建模维度建模
设计目标减少数据冗余,保证数据一致性和完整性优化查询性能,支持快速的数据分析和决策制定
数据结构通常具有规范化的、高度结构化的表,避免数据冗余以维度表和事实表为核心,可能存在一定的数据冗余
数据存储数据分散在多个关联的表中数据主要集中在事实表和相关的维度表中
业务理解难度对于业务人员来说,理解和使用相对较复杂更贴近业务逻辑,易于业务人员理解和分析
查询性能对于复杂查询可能需要较多的表连接,影响性能针对常见的分析需求进行优化,查询性能较好
适应变化适应业务变化的灵活性相对较低能够相对快速地适应业务变化和新的分析需求
应用场景适用于事务处理系统,如在线交易系统适用于数据仓库和数据分析系统

标签:数仓,范式,建模,查询,维度,数据,冗余
From: https://blog.csdn.net/qq_55006020/article/details/140953822

相关文章

  • ETL数据集成丨将GreenPlum数据同步至Doris数仓
    在当今数据驱动的时代,高效、可靠的数据集成成为企业数字化转型的关键一环。ETLCloud作为一款创新的数据集成平台,通过其强大的零代码配置能力,为企业提供了从数据抽取、转换到加载(ETL)的全链条解决方案,尤其在跨系统数据迁移方面展现出显著优势。本次实践通过将GreenPlum数据库的数据......
  • 【数学建模导论】Task04 机器学习
    前言Problem-BasedLearning.以解决问题为导向进行学习,培养工具思维本章会接触到大量的算法,一方面要理解算法的基本原理,另一方面又要能针对实际问题进行灵活应用。w(゚Д゚)w要长脑子了!我们完全可以把机器学习算法视作工具去使用。机器学习本身就是统计模型的延伸使用......
  • 2024 年华数杯全国大学生数学建模竞赛 C 题 老外游中国 第一问代码
    请问352个城市中所有35200个景点评分的最高分(BestScore,简称BS)是 5.0importosimportpandasaspd#数据集所在的文件夹路径data_folder='附件'#初始最高评分设为一个较小的值,确保能找到比它更大的评分max_bs=float('-inf')#获取数据集文件夹中所有......
  • 【全网首发】2024华数杯数学建模ABC题选题分析+解题思路代码+成品论文更新
    建议选哪道题?A题特点:数理分析题目此题难度较大与国赛难度较为贴近B题特点B题以运筹学/网络科学,图论、优化问题为主,涉及到的概念多,对基础要求较高,不建议优先选择。常用MATLAB函数例如toposort(有向无环图的拓扑顺序)、isomorphism(计算两个图之间的同构)、centrality(衡量节点......
  • 数学建模-数据预处理(数据清洗、标准化)
    在数学建模的比赛中,数据分析类的题目中往往我们要面对大量的数据,在给出的数据中,如果数据缺失会影响到判断和后序的操作这里我们给出一个数据预处理的办法:数据清洗(DataClearning):涉及到检测和纠正数据中的错误、不完整、不准确或不适用的部分,以确保数据质量和可靠性。数据清洗......
  • Flask 快速搭建模板1
    快速搭建基础框架成品预览pip安装需要导入的基础包pipinstallflaskpipinstallflask-sqlalchemypipinstallflask-wtfpipinstallbootstrap-flaskpipinstallflask-loginpipinstallflask-moment创建目录结构typenul>main.pytypenul>config.pytyp......
  • Python面试题:结合Python技术,如何使用NetworkX进行复杂网络建模与分析
    NetworkX是一个用于创建、操作和研究复杂网络(图)的Python库。它提供了丰富的工具来构建、操纵和分析各种类型的图。下面是一个基本的示例,演示如何使用NetworkX进行复杂网络建模与分析。安装NetworkX首先,确保你已经安装了NetworkX。可以使用以下命令进行安装:pipinstallne......
  • 【MATLAB源码】数学建模基础教程---初步认识数学建模
    系列文章目录在最后面,各位同仁感兴趣可以看看!什么是数学建模含义1.区分数学模型和数学建模2.建立数学模型的注意事项3.数学建模流程图解4.数学建模模型分类5.论文常用套路6.最后:总结系列文章目录含义所谓数学建模,简言之,就是对研究对象进行系统的抽象和概化,进而形成数学......
  • 基于simulink的简易电机电力系统建模与仿真性能分析
    1.课题概述一个50HZ的简单电力系统如下图所示,在Simulink中建立仿真模型研究该系统的性能。         发电机G采用“SynchronousMachinepuFundamental”模型,变压器T采用“Three-PhaseTransformer(ThreeWindings)”模型,输出线路L采用“Three-PhaseSeriesRLCB......
  • 基于强化学习的倒立摆平衡车控制系统simulink建模与仿真
    1.算法仿真效果matlab2022a仿真结果如下(完整代码运行后无水印):      2.算法涉及理论知识概要       基于强化学习的倒立摆平衡车控制系统是一个典型的动态系统控制问题,它通过不断的学习和决策过程,使倒立摆维持在垂直平衡位置,即使受到外力干扰或系统内部噪......