數據倉庫建模基礎理論-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.pswp.cn/diannao/37962.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/37962.shtml
英文地址,請注明出處:http://en.pswp.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 } …