
數據模型的探討與分析
在工作中,關于概念模型、邏輯模型和物理模型三個數據模型的探討中,發現大家都有自己的見解,但是卻沒有一個人能真正的說清楚這三個模型的涵義與差異。
雖說由于這三個模型在軟件開發的過程中,由于其功能與作用的差異,結合項目規模等實際情況,不一定會全部使用以節省項目時間(有時候直接設計物理模型),但我認為不應該被冠以“大家對這個概念的理解不同”不同之名而歪曲數據模型的定義。事實上,這三個模型的概念是清晰的、標準化的。
1.2約定
本文中討論的概念模型、邏輯模型和物理模型,主要是針對數據模型而言,也就是概念數據模型、邏輯數據模型和物理數據模型,而不是系統分析與設計中泛義的概念模型、邏輯模型和物理模型。
2數據模型的定義與分析
2.1概念模型
2.1.1定義
概念模型,是面向數據庫用戶的真實世界的模型,主要用來描述真實世界中的概念化結構,它使數據庫的設計人員在設計的初始階段,擺脫計算機系統及DBMS的具體技術問題,集中精力分析數據以及數據之間的聯系等,與具體的數據管理系統(Database Management System,簡稱DBMS)無關。概念數據模型必須換成邏輯數據模型,才能在DBMS中實現?!俣劝倏?
概念數據模型是最終用戶對數據存儲的看法,反映了最終用戶綜合性的信息需求,它以數據類的方式描述企業級的數據需求,數據類代表了在業務環境中自然聚集成的幾個主要類別數據?!狫erome's BI BLOG
我簡單化歸納一下:概念模型,就是利用自然語言對真實世界的業務數據的抽象化描述,是面向終端用戶的數據架構。
2.1.2作用
概念數據模型的目標是統一業務概念,作為業務人員和技術人員之間溝通的橋梁,確定不同實體之間的最高層次的關系。
2.1.3實例分析
下面舉兩個例子來說。
例一:
先進行一番業務描述:我們的項目計劃,一般包括年計劃和月計劃,年計劃可分解為月計劃。
我們來理解一下這句業務上的描述,可以把它分解為兩部分:“計劃包括年計劃和月計劃”和“年計劃可分解為月計劃”。我們從業務層面上,可以抽象出兩個數據對象:年計劃和月計劃。
再用概念模型E-R圖表示如下:
概念數據模型一:
概念數據模型二:
概念數據模型一是不完整的概念模型,概念數據模型二就是完整的概念模型。
原因:從概念數據模型一里面無法判斷其中有多少隱藏的信息,當然你可以在另一個地方描述存在年計劃或月計劃這種業務情景,但是在這里你沒有描述出來,所以至少在這里它是不完整的?我想問:此時不說,更待何時?
例二:
對于概念模型有一種典型的情況。例如,下面是一組關于財務審計系統中的概念數據模型:
姑且勿論這個概念模型是否正確,至少它是粒度很粗很不完整的。
對于“財務數據”來說,它并不能做為一個實體,而是其中包含了多個實體(包括賬套,憑證,科目等相關實體),把它們(財務數據、審計數據與結果數據)定義為數據域(財務數據域、審計數據域與結果數據域)也許更加準確,而不是把它定義為一個數據(實體)。
“財務數據”域完整的概念模型,應該如下圖:
(這里我假設這個概念模型里的實體是完整的,實際的財務系統當然不止這三個實體。)
這里也許有個疑問:這沒問題啊,先系統性,再結構化嘛。
在此,我也真的很糾結,想想還是先不對這一句話解釋太多,我們先進入概念模型的設計原則的討論。完了之后,希望大家能找到“先系統性,再結構化”這句話的真諦。
2.1.4設計原則
我們先來引用一下數據庫設計范式里面第三范式的描述:第三范式(3NF)要求一個數據庫表中不包含已在其它表中已包含的非主關鍵字信息。
在系統分析中對于數據架構的分析,一般原則是以數據實體為基本元素,即每個實體不可再分解為止。這也正符合數據庫設計三范式里面第三范式的定義。
如果在分析階段數據對象沒有細化到最小粒度的數據實體,那么相當于把系統分析的工作留給了下一階段的設計人員,從某種角度上來講,這是不符合系統分析與設計的原則的。因為系統設計人員的工作是根據分析結果進行設計,而不是還要進行系統分析。
一:分析階段要清楚問題的所有內容,即系統做什么。也就是:What to do.
二:設計階段的設計工作是根據系統分析的結果而進行的,不完整的系統分析結果無法得到一個完整的系統設計結果。I don't know what to do, I don't know how to do.
對于結構化的分析我們一般的原則是:
一、使用一個總體結構圖來描述各個數據域之間的關系,然后對數據域里面的所有數據實體進行結構化的分析與設計。
二、對于同一個數據域的結構化層次最多不超過三層結構,最好不超過兩層;對于不同數據域由于系統規模較大,如果在同一個篇幅里面無法完全描述出來,則可以切片分章節對不同的數據域進行結構化的描述。
2.1.5小結
概念模型設計階段,主要處于系統分析的階段,屬性可以不完全描述,但也可以描述一些主要的屬性。如果你在E-R圖上不給出屬性,可以選擇一個專門的表格來描述。另一方面,同一個實體的詳細信息,在一個地方描述就好了,不要每一個涉及該實體的地方都描述一番。因為如果實體有變化的時候,我想有些實體會在幾百上千個點上,你也不會每一個地方都去維護一次。
下面引用Jerome's BI BLOG里面的一句,這一句話很重要,也是理解概念模型與邏輯模型之間的區別的關鍵。
概念數據模型的內容包括重要的實體及實體之間的關系。在概念數據模型中不包括實體的屬性,也不用定義實體的主鍵。這是概念數據模型和邏輯數據模型的主要區別?!狫erome's BI BLOG
2.2邏輯模型
2.2.1定義
邏輯模型,是用戶從數據庫所看到的模型,是具體的DBMS所支持的數據模型,如網狀數據模型(Network Data Model)、層次數據模型(Hierarchical Data Model)等等。此模型既要面向用戶,又要面向系統,主要用于數據庫管理系統(DBMS)的實現?!俣劝倏?
2.2.2作用
邏輯模型是概念模型從真實世界向計算機世界的轉換,加入了系統設計的相關內容。
邏輯數據建模不僅會影響數據庫設計的方向,還間接影響最終數據庫的性能和管理。如果在實現邏輯數據模型時投入得足夠多,那么在物理數據模型設計時就可以有許多可供選擇的方法。
2.2.3實例分析
例如:接著上面“計劃表”的設計,“計劃表”的邏輯結構,如下圖所示。
其中:
1.計劃標識:這是由于系統設計的需要而加進來的,與業務無關的屬性。
2.計劃類型:0:年計劃;1:月計劃;2:季度計劃。(這里使用整型表示,當然可以是字符、字符串或其他自定義類型,這完全是設計上的事,一般不要在系統分析階段啰嗦這些,客戶不關心的事兒。)
雖然計劃在業務概念上來講,存在年計劃、月計劃,甚至于季度計劃,但是在計算機世界中,計劃的類型除了在概念上不一樣之外,其他屬性都是一樣的,那么邏輯模型設計的時候可以把計劃數據定義為一個實體,而使用其中的一個字段來標識某一份計劃是年計劃、月計劃,還是季度計劃。
2.2.4設計原則
邏輯數據模型反映的是系統分析設計人員對數據存儲的觀點,是對概念數據模型進一步的分解和細化。邏輯數據模型是根據業務規則確定的,關于業務對象、業務對象的數據項及業務對象之間關系的基本藍圖。
邏輯數據模型的內容包括所有的實體和關系,確定每個實體的屬性,定義每個實體的主鍵,指定實體的外鍵,需要進行范式化處理。
例如,在“計劃表”邏輯模型中可能加入了由于系統設計需要的一些字段(屬性),這些字段可能是在業務概念上不存在或不需要的。
2.2.5小結
邏輯數據模型的目標是盡可能詳細的描述數據,但并不考慮數據在物理上如何來實現?!@一句話很重要,也是理解邏輯模型與物理模型之間區別性的關鍵。
2.3物理模型
2.3.1定義
物理模型,是面向計算機物理表示的模型,描述了數據在儲存介質上的組織結構,它不但與具體的DBMS有關,而且還與操作系統和硬件有關。每一種邏輯數據模型在實現時都有起對應的物理數據模型。DBMS為了保證其獨立性與可移植性,大部分物理數據模型的實現工作由系統自動完成,而設計者只設計索引、聚集等特殊結構。 ——百度百科
2.3.2作用
物理數據模型的目標是指定如何用具體的數據庫模式來實現邏輯數據模型,以及真正的保存數據。
2.3.3實例分析
例如:對于計劃表,基于SQL Server數據庫管理系統為存儲介質的物理模型結構。如下圖所示:
字段對照表:
數據表名:Plan(計劃表)
當基于Oracle數據庫模式的時候,這個物理模型則是不一樣的。
例如:字符串,在Oracle上為varchar2,在Sql Server上為varchar等。
2.3.4設計原則
物理數據模型是在邏輯數據模型的基礎上,考慮各種具體的技術實現因素,進行數據庫體系結構設計,真正實現數據在數據庫中的存儲。
物理數據模型的內容包括確定所有的表和列,定義外鍵用于確定表之間的關系,基于用戶的需求可能進行范式化等內容。在物理實現上的考慮,可能會導致物理數據模型和邏輯數據模型有較大的不同。
2.3.5小結
物理模型跟邏輯模型的區別就是,邏輯模型并不指出特定的數據存儲,僅限于系統邏輯上的描述。物理模型是邏輯模型在具體存儲介質上的表現,直接與具體的數據庫管理系統或存儲介質相關的數據模型。例如:Oracle、SQL Server、XML File或文件文件等。
物理模型給出了在數據庫系統的字段名稱,與具體數據庫管理系統相關的數據類型的定義。而邏輯模型與具體的數據庫管理系統或存儲介質無關,僅為使用計算機系統概念中的一種邏輯結構。
2.4總結
概念模型是對真實世界的一種概念結構的描述;
邏輯模型是計算機系統上一種邏輯結構的描述;
物理模型則是與具體的計算機物理介質直接關聯的一種結構化的表達。
總的來說,我的理解是:概念模型、邏輯模型和物理模型是系統分析與設計中同一類型工具中三個不同層面的工具,一般應用于對同一個對象面向不同層面的用戶而做不同的描述。
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
CDA數據分析師證書考試體系(更新于2025年05月22日)
2025-05-26解碼數據基因:從數字敏感度到邏輯思維 每當看到超市貨架上商品的排列變化,你是否會聯想到背后的銷售數據波動?三年前在零售行 ...
2025-05-23在本文中,我們將探討 AI 為何能夠加速數據分析、如何在每個步驟中實現數據分析自動化以及使用哪些工具。 數據分析中的AI是什么 ...
2025-05-20當數據遇見人生:我的第一個分析項目 記得三年前接手第一個數據分析項目時,我面對Excel里密密麻麻的銷售數據手足無措。那些跳動 ...
2025-05-20在數字化運營的時代,企業每天都在產生海量數據:用戶點擊行為、商品銷售記錄、廣告投放反饋…… 這些數據就像散落的拼圖,而相 ...
2025-05-19在當今數字化營銷時代,小紅書作為國內領先的社交電商平臺,其銷售數據蘊含著巨大的商業價值。通過對小紅書銷售數據的深入分析, ...
2025-05-16Excel作為最常用的數據分析工具,有沒有什么工具可以幫助我們快速地使用excel表格,只要輕松幾步甚至輸入幾項指令就能搞定呢? ...
2025-05-15數據,如同無形的燃料,驅動著現代社會的運轉。從全球互聯網用戶每天產生的2.5億TB數據,到制造業的傳感器、金融交易 ...
2025-05-15大數據是什么_數據分析師培訓 其實,現在的大數據指的并不僅僅是海量數據,更準確而言是對大數據分析的方法。傳統的數 ...
2025-05-14CDA持證人簡介: 萬木,CDA L1持證人,某電商中廠BI工程師 ,5年數據經驗1年BI內訓師,高級數據分析師,擁有豐富的行業經驗。 ...
2025-05-13CDA持證人簡介: 王明月 ,CDA 數據分析師二級持證人,2年數據產品工作經驗,管理學博士在讀。 學習入口:https://edu.cda.cn/g ...
2025-05-12CDA持證人簡介: 楊貞璽 ,CDA一級持證人,鄭州大學情報學碩士研究生,某上市公司數據分析師。 學習入口:https://edu.cda.cn/g ...
2025-05-09CDA持證人簡介 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度、美團、阿里等 ...
2025-05-07相信很多做數據分析的小伙伴,都接到過一些高階的數據分析需求,實現的過程需要用到一些數據獲取,數據清洗轉換,建模方法等,這 ...
2025-05-06以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda.cn/g ...
2025-04-30CDA持證人簡介: 邱立峰 CDA 數據分析師二級持證人,數字化轉型專家,數據治理專家,高級數據分析師,擁有豐富的行業經驗。 ...
2025-04-29CDA持證人簡介: 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度,美團,阿里等 ...
2025-04-28CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-27數據分析在當今信息時代發揮著重要作用。單因素方差分析(One-Way ANOVA)是一種關鍵的統計方法,用于比較三個或更多獨立樣本組 ...
2025-04-25CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-25