数据仓库建模基础理论-01-为什么需要数据建模?

一、什么是数据模型?

  • 数据模型是数据库的基础结构,用于描述和组织数据的方式。

  • 它不仅是数据库的底层结构,还是一个概念性工具,帮助理解数据的含义和关系。

在这里插入图片描述

  • 数据模型包括数据本身、数据之间的关系、数据的语义(含义和描述)、以及数据的约束条件。
  • 在设计数据库时,可以从物理层面(存储结构)、逻辑层面(关系模型)和视图层面(用户视角)来考虑和实现数据模型。

常见的四种数据模型:

在这里插入图片描述

1.关系模型

关系模型是数据库管理系统中的一种主要数据模型。关系模型通过表和表之间的关系,提供了一种清晰而有效的方式来组织和管理数据,适用于各种规模和类型的应用程序和数据库需求。

在这里插入图片描述

  • 关系模型是由表的集合组成的,每个表用来表示数据和数据之间的关系。

  • 表中的行和列用来存储数据,同时也表示数据之间的关系。

  • 每个表可以包含多个列,每个列都有唯一的名称和定义的数据类型。

  • 在关系模型中,表被称为关系,反映了数据的结构和组织方式。

  • 关系模型是基于记录(即行)的模型,每条记录有多个字段或属性,字段数目和类型是固定的。

  • 关系模型是目前最广泛使用的数据模型,大多数现代数据库系统都基于此模型设计和实现。

在这里插入图片描述


2.实体关系模型

E-R 模型通过清晰地定义实体和它们之间的关系,为数据库设计提供了一种直观且高效的方法。

在这里插入图片描述

  • E-R 模型由称为实体的基本对象及其之间的关系组成。

  • 实体是现实世界中可区分的事物或对象,例如一个人、一个地方或一个事件。

  • 实体之间可以存在不同类型的关系,如一对一、一对多或多对多关系,这些关系反映了实际世界中事物之间的连接方式。

在这里插入图片描述

3.对象模型

对象模型(Object-Based Model,OBM)是数据库设计中的一个重要概念。结合了实体-关系(E-R)模型和面向对象编程语言的特性。

对象模型在现代数据库设计和应用开发中具有重要的地位,为面向对象编程与数据库管理之间的集成提供了理想的解决方案。
在这里插入图片描述

  1. 面向对象的特性

    • 对象模型基于面向对象编程(如C++、Java、C#等)的思想,将数据表示为对象。
    • 每个对象有其自身的属性(数据)和方法(操作)。
  2. 封装

    • 将数据和操作封装在对象内部,通过定义公共接口进行访问和操作,增强了数据的安全性和模块化。
  3. 继承

    • 支持类与子类之间的继承关系,使得对象可以继承和重用现有的属性和方法。
  4. 多态

    • 允许不同类的对象对相同的消息作出不同的响应,提高了代码的灵活性和可复用性。
  5. 实体-关系模型(E-R模型)

    • 基于实体、属性和关系的概念,用于描述现实世界中的数据结构和关联。
  6. 数据建模

    • 通过定义类、属性和方法来建模现实世界中的实体和其关系,更符合业务逻辑和需求的表达方式。

在这里插入图片描述

4.半结构化数据模型

半结构化数据模型是一种用于表示和处理半结构化数据的概念性模型,它区别于传统的结构化数据模型(如关系数据库中的表和列)和非结构化数据(如文本和图像)。

在这里插入图片描述

  • 半结构化数据模型强调数据可以包含不同的数据项类型,并且可以根据需要动态扩展和修改数据的结构。

  • 这种模型与传统的数据模型形成鲜明对比,比如关系型数据库模型,它们通常要求所有数据都遵循预定义的严格结构。

  • 在这种情况下,半结构化数据模型可以使用类似可扩展标记语言(如XML)的格式来表示数据。

  • XML允许数据以自定义的、层次化的方式进行组织,每个数据项可以具有不同的属性集合。这

在这里插入图片描述


二、为什么需要数据建模?

  • 1.大数据时代,如何将这些海量的数据进行有序、有结构地分类组织和存储是我们面临的一个挑战,也是我们的目标。
  • Tips:如果把数据比作图书馆里的书,我们希望看到书在书架上分门别类的放好;如果把数据比作城市里的建筑,我们希望城市规划布局合理;如果把数据看作电脑文件和文件夹,我们希望按照自己的习惯有很好的文件夹组织方式,而不是糟糕混乱的桌面,经常为找一个文件而不知所措。

  • 2.而数据模型就是数据组织和存储的方法,数据模型强调从业务、数据存储和使用角度合理存储数据。

  • 良好的数据模型可以带来很多好处:

    • 性能(效率):快速查询所需要的数据,减少数据的I/O吞吐,极大改善用户体验,提高使用数据的效率。
    • 成本:减少不必要的数据冗余,也能实现计算结果复用,极大降低成本。

总结下来就是一句话——大数据系统需要数据模型方法来帮助更好地组织和存储数据,以便在最主要的两个方面——成本和效率之间取得最佳平衡。


三、从OLTP、OLAP系统区别看模型方法论的选择

  • 一般在公司中,系统是分为两部分的,一部分系统是业务系统,另一部分是决策类系统。
  • OLTP通常是业务系统的这种模式,OLAP通常是面向于分析的决策类系统。
    在这里插入图片描述
  • OLTP通常是关系型数据库,必须要保证业务上的数据的唯一性或者准确性(严格3NF要求)。
  • OLAP强调的不再是业务数据的存储,而是通过对业务数据的再分析,最终产出一个决策,去回流到业务系统中,让业务系统更好的去发展。

在这里插入图片描述

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

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

相关文章

C++ | Leetcode C++题解之第206题反转链表

题目: 题解: class Solution { public:ListNode* reverseList(ListNode* head) {if (!head || !head->next) {return head;}ListNode* newHead reverseList(head->next);head->next->next head;head->next nullptr;return newHead;} …

在Ubuntu 16.04上安装和配置GitLab的方法

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 简介 GitLab CE(Community Edition)是一个开源应用程序,主要用于托管 Git 仓库,并提供额…

AI在创造还是毁掉音乐之论文

AI在创造还是毁掉音乐? 简介:最近一个月,轮番上线的音乐大模型,一举将素人生产音乐的门槛降到了最低,并掀起了音乐圈会不会被AI彻底颠覆的讨论。短暂的兴奋后,AI产品的版权归属于谁,创意产业要…

一秒记单词:音通义通,一秒牢记

一秒记单词,从小学到高中,一秒牢记 一、小学生记单词,快速突破 1.1 好的开始,是成功的一半 sun n.太阳 【通】尚 moon n.月亮 【通】母恩 mother n.母亲,妈 【通】妈汁 sea n.海,大海 【通】细 sand …

【MySQL基础篇】SQL指令:DQL及DCL

1、DQL DQL - 介绍 DQL英文全称是Data Query Language(数据查询语言),数据查询语言,用来查询数据表中的记录。(在MySQL中应用是最为广泛的) 查询关键字:SELECT DQL - 语法 SELECT 字段列表 FROM 表名列表 WHER…

【人工智能学习之图像操作(六)】

【人工智能学习之图像操作(六)】 Hough变换直线检测圆检测 图像分割 Hough变换 在图像处理中,霍夫变换用来检测任意能够用数学公式表达的形状,即使这个形状被破坏或者有点扭曲 直线检测 import cv2 import numpy as np image …

利用微信开放标签<wx-open-launch-weapp>在H5中跳转微信小程序报错完美的解决方案

一、报错&#xff1a; [WXTAG] [JSCORE] The slot <template> or <script type"text/wxtag-template"> of <wx-open-launch-weapp> is missing 二、源码 官方源代码如下&#xff0c;<script type"text/wxtag-template"></sc…

美团外卖搜索基于Elasticsearch的优化实践--图文解析

美团外卖搜索基于Elasticsearch的优化实践–图文解析 前言 美团在外卖搜索业务场景中大规模地使用了 Elasticsearch 作为底层检索引擎&#xff0c;随着业务量越来越大&#xff0c;检索速度变慢了&#xff0c;CPU快累趴了&#xff0c;所以要进行优化。经过检测&#xff0c;发现…

gcop:简化 Git 提交流程的高效助手 | 一键生成 commit message

&#x1f496; 大家好&#xff0c;我是Zeeland。Tags: 大模型创业、LangChain Top Contributor、算法工程师、Promptulate founder、Python开发者。&#x1f4e3; 个人说明书&#xff1a;Zeeland&#x1f4e3; 个人网站&#xff1a;https://me.zeeland.cn/&#x1f4da; Github…

[SAP ABAP] 数据字典

ABAP数据字典是定义和管理数据库对象的工具 系统的所有全局数据类型以及数据库表结构等都需要在数据字典中创建和维护(数据字典中的对象对所有ABAP程序都是全局的) 通过数据字典&#xff0c;我们可以把数据库对象管理好&#xff0c;后续才能顺利的进行功能开发&#xff0c;SA…

华为面试题及答案——大数据

(1)namenode内存满了,如何进行扩容,调什么参数。 1. 增加 NameNode 的内存 在 hadoop-env.sh 文件中,可以增加 JVM 分配给 NameNode 的内存。通常是在 HADOOP_NAMENODE_OPTS 中增加 -Xmx 参数来增加最大堆内存。 export HADOOP_NAMENODE_OPTS="-Xmx8g -Xms4g ${HA…

集合,Collection接口

可动态保存任意多个对象&#xff0c;使用比较方便 提供了一系列方便操作对象的方法&#xff1a;add&#xff0c;remove&#xff0c;set&#xff0c;get等 使用集合添加删除新元素&#xff0c;代码简洁明了 单列集合 多列集合 Collection接口 常用方法 List list new Arra…

设计模式详解(一)——策略模式

策略模式&#xff08;Strategy Pattern&#xff09;是一种行为型的设计模式&#xff0c;它允许你定义一系列算法&#xff0c;然后将它们封装起来&#xff0c;使它们可以相互替换。这样做的好处是&#xff0c;你可以动态地选择要使用的算法&#xff0c;而不必在运行时进行检查或…

多媒体基础

笔者按&#xff1a; 昨日复习的信息网络安全约莫是挂了&#xff0c;常言道&#xff1a;知耻而后勇。诚如斯言 于是决心多媒体是不能再挂了&#xff0c;不然直接变成xxx之流&#xff0c;自增笑耳 语雀链接&#xff1a;多媒体基础 一.多媒体计算机概述 媒体&#xff1a;承载信息…

动手学深度学习(Pytorch版)代码实践 -卷积神经网络-21多输入多输出通道

21多输入多输出通道 import torch from d2l import torch as d2ldef corr2d(X, K):"""计算二维互相关运算"""h, w K.shapeY torch.zeros((X.shape[0] - h 1, X.shape[1] - w 1))for i in range(Y.shape[0]):for j in range(Y.shape[1]):Y[i,…

go语言DAY7 字典Map 指针 结构体 函数

Go中Map底层原理剖析_go map底层实现-CSDN博客 目录 Map 键值对key,value 注意&#xff1a; map唯一确定的key值通过哈希运算得出哈希值 一、 map的声明及初始化&#xff1a; 二、 map的增删改查操作&#xff1a; 三、 map的赋值操作与切片对比&#xff1a; 四、 通用所有…

[leetcode hot 150]第一百二十二题,买卖股票的最佳时机Ⅱ

题目&#xff1a; 给你一个整数数组 prices &#xff0c;其中 prices[i] 表示某支股票第 i 天的价格。 在每一天&#xff0c;你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买&#xff0c;然后在 同一天 出售。 返回 你能获得的 最大…

【C++】初识C++(一)

一.什么是C C语言是结构化和模块化的语言&#xff0c;适合处理较小规模的程序。对于复杂的问题&#xff0c;规模较大的程序&#xff0c;需要高度 的抽象和建模时&#xff0c;C语言则不合适。为了解决软件危机&#xff0c; 20世纪80年代&#xff0c; 计算机界提出了OOP(object o…

图形处理单元(GPU)在现代计算中的应用与挑战(研究论文框架)

摘要:随着高性能计算需求的日益增长,图形处理单元(GPU)已从专业的图形渲染处理器转变为具有高性能并行处理能力的多功能计算平台。本文将探讨GPU的核心优势、编程模型、在不同领域的应用以及面临的挑战和限制。此外,还将讨论GPU技术的未来发展趋势和潜在的研究机会。 关键…

mongodb 查询语句学习笔记

基础查询 正则查询 {status: A,$or: [{ qty: { $lt: 30 } }, { item: { $regex: ^p } }] }AND 查询 { "size.h": { $lt: 15 }, "size.uom": "in", status: "D" }OR 查询 { $or: [ { status: "A" }, { qty: { $lt: 30 } …