
數(shù)據(jù)模型的探討與分析
在工作中,關(guān)于概念模型、邏輯模型和物理模型三個數(shù)據(jù)模型的探討中,發(fā)現(xiàn)大家都有自己的見解,但是卻沒有一個人能真正的說清楚這三個模型的涵義與差異。
雖說由于這三個模型在軟件開發(fā)的過程中,由于其功能與作用的差異,結(jié)合項目規(guī)模等實際情況,不一定會全部使用以節(jié)省項目時間(有時候直接設(shè)計物理模型),但我認為不應(yīng)該被冠以“大家對這個概念的理解不同”不同之名而歪曲數(shù)據(jù)模型的定義。事實上,這三個模型的概念是清晰的、標(biāo)準(zhǔn)化的。
1.2約定
本文中討論的概念模型、邏輯模型和物理模型,主要是針對數(shù)據(jù)模型而言,也就是概念數(shù)據(jù)模型、邏輯數(shù)據(jù)模型和物理數(shù)據(jù)模型,而不是系統(tǒng)分析與設(shè)計中泛義的概念模型、邏輯模型和物理模型。
2數(shù)據(jù)模型的定義與分析
2.1概念模型
2.1.1定義
概念模型,是面向數(shù)據(jù)庫用戶的真實世界的模型,主要用來描述真實世界中的概念化結(jié)構(gòu),它使數(shù)據(jù)庫的設(shè)計人員在設(shè)計的初始階段,擺脫計算機系統(tǒng)及DBMS的具體技術(shù)問題,集中精力分析數(shù)據(jù)以及數(shù)據(jù)之間的聯(lián)系等,與具體的數(shù)據(jù)管理系統(tǒng)(Database Management System,簡稱DBMS)無關(guān)。概念數(shù)據(jù)模型必須換成邏輯數(shù)據(jù)模型,才能在DBMS中實現(xiàn)?!俣劝倏?
概念數(shù)據(jù)模型是最終用戶對數(shù)據(jù)存儲的看法,反映了最終用戶綜合性的信息需求,它以數(shù)據(jù)類的方式描述企業(yè)級的數(shù)據(jù)需求,數(shù)據(jù)類代表了在業(yè)務(wù)環(huán)境中自然聚集成的幾個主要類別數(shù)據(jù)?!狫erome's BI BLOG
我簡單化歸納一下:概念模型,就是利用自然語言對真實世界的業(yè)務(wù)數(shù)據(jù)的抽象化描述,是面向終端用戶的數(shù)據(jù)架構(gòu)。
2.1.2作用
概念數(shù)據(jù)模型的目標(biāo)是統(tǒng)一業(yè)務(wù)概念,作為業(yè)務(wù)人員和技術(shù)人員之間溝通的橋梁,確定不同實體之間的最高層次的關(guān)系。
2.1.3實例分析
下面舉兩個例子來說。
例一:
先進行一番業(yè)務(wù)描述:我們的項目計劃,一般包括年計劃和月計劃,年計劃可分解為月計劃。
我們來理解一下這句業(yè)務(wù)上的描述,可以把它分解為兩部分:“計劃包括年計劃和月計劃”和“年計劃可分解為月計劃”。我們從業(yè)務(wù)層面上,可以抽象出兩個數(shù)據(jù)對象:年計劃和月計劃。
再用概念模型E-R圖表示如下:
概念數(shù)據(jù)模型一:
概念數(shù)據(jù)模型二:
概念數(shù)據(jù)模型一是不完整的概念模型,概念數(shù)據(jù)模型二就是完整的概念模型。
原因:從概念數(shù)據(jù)模型一里面無法判斷其中有多少隱藏的信息,當(dāng)然你可以在另一個地方描述存在年計劃或月計劃這種業(yè)務(wù)情景,但是在這里你沒有描述出來,所以至少在這里它是不完整的?我想問:此時不說,更待何時?
例二:
對于概念模型有一種典型的情況。例如,下面是一組關(guān)于財務(wù)審計系統(tǒng)中的概念數(shù)據(jù)模型:
姑且勿論這個概念模型是否正確,至少它是粒度很粗很不完整的。
對于“財務(wù)數(shù)據(jù)”來說,它并不能做為一個實體,而是其中包含了多個實體(包括賬套,憑證,科目等相關(guān)實體),把它們(財務(wù)數(shù)據(jù)、審計數(shù)據(jù)與結(jié)果數(shù)據(jù))定義為數(shù)據(jù)域(財務(wù)數(shù)據(jù)域、審計數(shù)據(jù)域與結(jié)果數(shù)據(jù)域)也許更加準(zhǔn)確,而不是把它定義為一個數(shù)據(jù)(實體)。
“財務(wù)數(shù)據(jù)”域完整的概念模型,應(yīng)該如下圖:
(這里我假設(shè)這個概念模型里的實體是完整的,實際的財務(wù)系統(tǒng)當(dāng)然不止這三個實體。)
這里也許有個疑問:這沒問題啊,先系統(tǒng)性,再結(jié)構(gòu)化嘛。
在此,我也真的很糾結(jié),想想還是先不對這一句話解釋太多,我們先進入概念模型的設(shè)計原則的討論。完了之后,希望大家能找到“先系統(tǒng)性,再結(jié)構(gòu)化”這句話的真諦。
2.1.4設(shè)計原則
我們先來引用一下數(shù)據(jù)庫設(shè)計范式里面第三范式的描述:第三范式(3NF)要求一個數(shù)據(jù)庫表中不包含已在其它表中已包含的非主關(guān)鍵字信息。
在系統(tǒng)分析中對于數(shù)據(jù)架構(gòu)的分析,一般原則是以數(shù)據(jù)實體為基本元素,即每個實體不可再分解為止。這也正符合數(shù)據(jù)庫設(shè)計三范式里面第三范式的定義。
如果在分析階段數(shù)據(jù)對象沒有細化到最小粒度的數(shù)據(jù)實體,那么相當(dāng)于把系統(tǒng)分析的工作留給了下一階段的設(shè)計人員,從某種角度上來講,這是不符合系統(tǒng)分析與設(shè)計的原則的。因為系統(tǒng)設(shè)計人員的工作是根據(jù)分析結(jié)果進行設(shè)計,而不是還要進行系統(tǒng)分析。
一:分析階段要清楚問題的所有內(nèi)容,即系統(tǒng)做什么。也就是:What to do.
二:設(shè)計階段的設(shè)計工作是根據(jù)系統(tǒng)分析的結(jié)果而進行的,不完整的系統(tǒng)分析結(jié)果無法得到一個完整的系統(tǒng)設(shè)計結(jié)果。I don't know what to do, I don't know how to do.
對于結(jié)構(gòu)化的分析我們一般的原則是:
一、使用一個總體結(jié)構(gòu)圖來描述各個數(shù)據(jù)域之間的關(guān)系,然后對數(shù)據(jù)域里面的所有數(shù)據(jù)實體進行結(jié)構(gòu)化的分析與設(shè)計。
二、對于同一個數(shù)據(jù)域的結(jié)構(gòu)化層次最多不超過三層結(jié)構(gòu),最好不超過兩層;對于不同數(shù)據(jù)域由于系統(tǒng)規(guī)模較大,如果在同一個篇幅里面無法完全描述出來,則可以切片分章節(jié)對不同的數(shù)據(jù)域進行結(jié)構(gòu)化的描述。
2.1.5小結(jié)
概念模型設(shè)計階段,主要處于系統(tǒng)分析的階段,屬性可以不完全描述,但也可以描述一些主要的屬性。如果你在E-R圖上不給出屬性,可以選擇一個專門的表格來描述。另一方面,同一個實體的詳細信息,在一個地方描述就好了,不要每一個涉及該實體的地方都描述一番。因為如果實體有變化的時候,我想有些實體會在幾百上千個點上,你也不會每一個地方都去維護一次。
下面引用Jerome's BI BLOG里面的一句,這一句話很重要,也是理解概念模型與邏輯模型之間的區(qū)別的關(guān)鍵。
概念數(shù)據(jù)模型的內(nèi)容包括重要的實體及實體之間的關(guān)系。在概念數(shù)據(jù)模型中不包括實體的屬性,也不用定義實體的主鍵。這是概念數(shù)據(jù)模型和邏輯數(shù)據(jù)模型的主要區(qū)別?!狫erome's BI BLOG
2.2邏輯模型
2.2.1定義
邏輯模型,是用戶從數(shù)據(jù)庫所看到的模型,是具體的DBMS所支持的數(shù)據(jù)模型,如網(wǎng)狀數(shù)據(jù)模型(Network Data Model)、層次數(shù)據(jù)模型(Hierarchical Data Model)等等。此模型既要面向用戶,又要面向系統(tǒng),主要用于數(shù)據(jù)庫管理系統(tǒng)(DBMS)的實現(xiàn)?!俣劝倏?
2.2.2作用
邏輯模型是概念模型從真實世界向計算機世界的轉(zhuǎn)換,加入了系統(tǒng)設(shè)計的相關(guān)內(nèi)容。
邏輯數(shù)據(jù)建模不僅會影響數(shù)據(jù)庫設(shè)計的方向,還間接影響最終數(shù)據(jù)庫的性能和管理。如果在實現(xiàn)邏輯數(shù)據(jù)模型時投入得足夠多,那么在物理數(shù)據(jù)模型設(shè)計時就可以有許多可供選擇的方法。
2.2.3實例分析
例如:接著上面“計劃表”的設(shè)計,“計劃表”的邏輯結(jié)構(gòu),如下圖所示。
其中:
1.計劃標(biāo)識:這是由于系統(tǒng)設(shè)計的需要而加進來的,與業(yè)務(wù)無關(guān)的屬性。
2.計劃類型:0:年計劃;1:月計劃;2:季度計劃。(這里使用整型表示,當(dāng)然可以是字符、字符串或其他自定義類型,這完全是設(shè)計上的事,一般不要在系統(tǒng)分析階段啰嗦這些,客戶不關(guān)心的事兒。)
雖然計劃在業(yè)務(wù)概念上來講,存在年計劃、月計劃,甚至于季度計劃,但是在計算機世界中,計劃的類型除了在概念上不一樣之外,其他屬性都是一樣的,那么邏輯模型設(shè)計的時候可以把計劃數(shù)據(jù)定義為一個實體,而使用其中的一個字段來標(biāo)識某一份計劃是年計劃、月計劃,還是季度計劃。
2.2.4設(shè)計原則
邏輯數(shù)據(jù)模型反映的是系統(tǒng)分析設(shè)計人員對數(shù)據(jù)存儲的觀點,是對概念數(shù)據(jù)模型進一步的分解和細化。邏輯數(shù)據(jù)模型是根據(jù)業(yè)務(wù)規(guī)則確定的,關(guān)于業(yè)務(wù)對象、業(yè)務(wù)對象的數(shù)據(jù)項及業(yè)務(wù)對象之間關(guān)系的基本藍圖。
邏輯數(shù)據(jù)模型的內(nèi)容包括所有的實體和關(guān)系,確定每個實體的屬性,定義每個實體的主鍵,指定實體的外鍵,需要進行范式化處理。
例如,在“計劃表”邏輯模型中可能加入了由于系統(tǒng)設(shè)計需要的一些字段(屬性),這些字段可能是在業(yè)務(wù)概念上不存在或不需要的。
2.2.5小結(jié)
邏輯數(shù)據(jù)模型的目標(biāo)是盡可能詳細的描述數(shù)據(jù),但并不考慮數(shù)據(jù)在物理上如何來實現(xiàn)?!@一句話很重要,也是理解邏輯模型與物理模型之間區(qū)別性的關(guān)鍵。
2.3物理模型
2.3.1定義
物理模型,是面向計算機物理表示的模型,描述了數(shù)據(jù)在儲存介質(zhì)上的組織結(jié)構(gòu),它不但與具體的DBMS有關(guān),而且還與操作系統(tǒng)和硬件有關(guān)。每一種邏輯數(shù)據(jù)模型在實現(xiàn)時都有起對應(yīng)的物理數(shù)據(jù)模型。DBMS為了保證其獨立性與可移植性,大部分物理數(shù)據(jù)模型的實現(xiàn)工作由系統(tǒng)自動完成,而設(shè)計者只設(shè)計索引、聚集等特殊結(jié)構(gòu)。 ——百度百科
2.3.2作用
物理數(shù)據(jù)模型的目標(biāo)是指定如何用具體的數(shù)據(jù)庫模式來實現(xiàn)邏輯數(shù)據(jù)模型,以及真正的保存數(shù)據(jù)。
2.3.3實例分析
例如:對于計劃表,基于SQL Server數(shù)據(jù)庫管理系統(tǒng)為存儲介質(zhì)的物理模型結(jié)構(gòu)。如下圖所示:
字段對照表:
數(shù)據(jù)表名:Plan(計劃表)
當(dāng)基于Oracle數(shù)據(jù)庫模式的時候,這個物理模型則是不一樣的。
例如:字符串,在Oracle上為varchar2,在Sql Server上為varchar等。
2.3.4設(shè)計原則
物理數(shù)據(jù)模型是在邏輯數(shù)據(jù)模型的基礎(chǔ)上,考慮各種具體的技術(shù)實現(xiàn)因素,進行數(shù)據(jù)庫體系結(jié)構(gòu)設(shè)計,真正實現(xiàn)數(shù)據(jù)在數(shù)據(jù)庫中的存儲。
物理數(shù)據(jù)模型的內(nèi)容包括確定所有的表和列,定義外鍵用于確定表之間的關(guān)系,基于用戶的需求可能進行范式化等內(nèi)容。在物理實現(xiàn)上的考慮,可能會導(dǎo)致物理數(shù)據(jù)模型和邏輯數(shù)據(jù)模型有較大的不同。
2.3.5小結(jié)
物理模型跟邏輯模型的區(qū)別就是,邏輯模型并不指出特定的數(shù)據(jù)存儲,僅限于系統(tǒng)邏輯上的描述。物理模型是邏輯模型在具體存儲介質(zhì)上的表現(xiàn),直接與具體的數(shù)據(jù)庫管理系統(tǒng)或存儲介質(zhì)相關(guān)的數(shù)據(jù)模型。例如:Oracle、SQL Server、XML File或文件文件等。
物理模型給出了在數(shù)據(jù)庫系統(tǒng)的字段名稱,與具體數(shù)據(jù)庫管理系統(tǒng)相關(guān)的數(shù)據(jù)類型的定義。而邏輯模型與具體的數(shù)據(jù)庫管理系統(tǒng)或存儲介質(zhì)無關(guān),僅為使用計算機系統(tǒng)概念中的一種邏輯結(jié)構(gòu)。
2.4總結(jié)
概念模型是對真實世界的一種概念結(jié)構(gòu)的描述;
邏輯模型是計算機系統(tǒng)上一種邏輯結(jié)構(gòu)的描述;
物理模型則是與具體的計算機物理介質(zhì)直接關(guān)聯(lián)的一種結(jié)構(gòu)化的表達。
總的來說,我的理解是:概念模型、邏輯模型和物理模型是系統(tǒng)分析與設(shè)計中同一類型工具中三個不同層面的工具,一般應(yīng)用于對同一個對象面向不同層面的用戶而做不同的描述。
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
SQL Server 中 CONVERT 函數(shù)的日期轉(zhuǎn)換:從基礎(chǔ)用法到實戰(zhàn)優(yōu)化 在 SQL Server 的數(shù)據(jù)處理中,日期格式轉(zhuǎn)換是高頻需求 —— 無論 ...
2025-09-18MySQL 大表拆分與關(guān)聯(lián)查詢效率:打破 “拆分必慢” 的認知誤區(qū) 在 MySQL 數(shù)據(jù)庫管理中,“大表” 始終是性能優(yōu)化繞不開的話題。 ...
2025-09-18CDA 數(shù)據(jù)分析師:表結(jié)構(gòu)數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結(jié)構(gòu)數(shù)據(jù)(如數(shù)據(jù)庫表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-18DSGE 模型中的 Et:理性預(yù)期算子的內(nèi)涵、作用與應(yīng)用解析 動態(tài)隨機一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結(jié)構(gòu)數(shù)據(jù)特征價值的專業(yè)核心 表結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲的結(jié)構(gòu)化數(shù)據(jù),如數(shù)據(jù)庫表、Excel 表、 ...
2025-09-17Excel 導(dǎo)入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實戰(zhàn)應(yīng)用 在用 Python(如 pandas 庫)處理 Excel 數(shù)據(jù)時,“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗與 t 檢驗:差異、適用場景與實踐應(yīng)用 在數(shù)據(jù)分析與統(tǒng)計學(xué)領(lǐng)域,假設(shè)檢驗是驗證研究假設(shè)、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結(jié)構(gòu)數(shù)據(jù)全功能周期的專業(yè)操盤手 表格結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 存儲的結(jié)構(gòu)化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計劃中 rows 數(shù)量的準(zhǔn)確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調(diào)優(yōu)中,EXPLAIN執(zhí)行計劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對象的 text 與 content:區(qū)別、場景與實踐指南 在 Python 進行 HTTP 網(wǎng)絡(luò)請求開發(fā)時(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結(jié)構(gòu)數(shù)據(jù)價值的核心操盤手 表格結(jié)構(gòu)數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫表)是企業(yè)最基礎(chǔ)、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請求工具對比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請求(如接口調(diào)用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長浮點數(shù)據(jù)的科學(xué)計數(shù)法問題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長浮點數(shù)據(jù)時的科學(xué)計數(shù)法問題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務(wù)數(shù)據(jù)分析步驟的落地者與價值優(yōu)化者 業(yè)務(wù)數(shù)據(jù)分析是企業(yè)解決日常運營問題、提升執(zhí)行效率的核心手段,其價值 ...
2025-09-12用 SQL 驗證業(yè)務(wù)邏輯:從規(guī)則拆解到數(shù)據(jù)把關(guān)的實戰(zhàn)指南 在業(yè)務(wù)系統(tǒng)落地過程中,“業(yè)務(wù)邏輯” 是連接 “需求設(shè)計” 與 “用戶體驗 ...
2025-09-11塔吉特百貨孕婦營銷案例:數(shù)據(jù)驅(qū)動下的精準(zhǔn)零售革命與啟示 在零售行業(yè) “流量紅利見頂” 的當(dāng)下,精準(zhǔn)營銷成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務(wù)數(shù)據(jù)分析:概念辨析與協(xié)同價值 在數(shù)據(jù)驅(qū)動決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務(wù)數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類分析:從操作實踐到業(yè)務(wù)價值挖掘 在數(shù)據(jù)分析場景中,聚類分析作為 “無監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計模型的核心目的:從數(shù)據(jù)解讀到?jīng)Q策支撐的價值導(dǎo)向 統(tǒng)計模型作為數(shù)據(jù)分析的核心工具,并非簡單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10