0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何進(jìn)行正確數(shù)據(jù)建模

西西 ? 來源:未知 ? 作者:John McDowall ? 2019-09-28 02:37 ? 次閱讀

理解數(shù)據(jù)是控制任何企業(yè)的先決條件。但只有當(dāng)這些知識能夠被分享和傳播時(shí),理解才是有用的。有效的數(shù)據(jù)建模應(yīng)該是任何企業(yè)架構(gòu)師的首要關(guān)注點(diǎn)。

在我的上一篇文章中,我認(rèn)為理解一個(gè)企業(yè)的數(shù)據(jù)是指導(dǎo)一個(gè)企業(yè)的核心。但理解只是問題的一半。另一半是能夠記錄這種理解并與他人分享。

如果沒有對數(shù)據(jù)的共同理解,就談不上跨系統(tǒng)或組織的共享數(shù)據(jù)。傳統(tǒng)上,這是通過使用數(shù)據(jù)字典來完成的--這些文件旨在解釋數(shù)據(jù)結(jié)構(gòu)中每個(gè)字段的內(nèi)容和格式??杀默F(xiàn)實(shí)是,這些文檔必須手動創(chuàng)建和更新,因此很少會進(jìn)行更新。其結(jié)果是往往會出現(xiàn)過時(shí)的、無用的文檔和沮喪的架構(gòu)師和開發(fā)人員。但其實(shí)還有更好的辦法。

正確完成建模

在過去的幾十年里,數(shù)據(jù)建模的努力通常集中在關(guān)系數(shù)據(jù)建模或可擴(kuò)展標(biāo)記語言(XML)的建模上。只要數(shù)據(jù)存儲在關(guān)系數(shù)據(jù)庫中,關(guān)系數(shù)據(jù)建模就會很好,但除此之外,它很少會有其他的用途。而且XML也不能被可靠地稱為建模語言。XML是序列化數(shù)據(jù)的規(guī)范--即定義了如何將數(shù)據(jù)寫入文件。XML為構(gòu)造數(shù)據(jù)的序列化提供了一種格式,但它不是一個(gè)真正的模型。

我所說的“模型”指的是以數(shù)學(xué)為基礎(chǔ)的形式規(guī)范。實(shí)際上,這意味著是可以使用形式化方法進(jìn)行驗(yàn)證的東西。通俗地說,這意味著我們可以用數(shù)學(xué)運(yùn)算來證明它是正確的,并且我們可以使驗(yàn)證過程自動化。而在XML模式中捕獲數(shù)據(jù)不符合此定義下的模型。但可以肯定的是,我們可以使用軟件來驗(yàn)證該XML格式是否良好,是否符合一些XML模式的文檔。但這還不足以真正地對數(shù)據(jù)進(jìn)行建模。

無論是計(jì)算機(jī)還是人,如果不同時(shí)理解數(shù)據(jù)的語法(結(jié)構(gòu))和語義(含義),就無法理解數(shù)據(jù)。XML可以捕獲語法,但它不能天生捕獲語義。語義可以用XML格式編寫,但是這些語義必須首先在一些更正式的建模方案中被捕獲。換句話說,企業(yè)需要一個(gè)正式的本體。這種建模方案大多基于形式邏輯,通常是公共邏輯或描述邏輯。

迄今為止,最常用的語義建模語言是基于描述邏輯的網(wǎng)絡(luò)本體語言(OWL)。這意味著我們不僅可以正式驗(yàn)證模型及其包含的數(shù)據(jù),還可以通過對數(shù)據(jù)的推理來推斷新的事實(shí),并且我們可以證明這些推斷的正確性。因?yàn)镺WL是本體建模的事實(shí)上的標(biāo)準(zhǔn),所以我將把剩下的內(nèi)容限制在OWL上。

但是等等!所有這些都不意味著你需要將你的數(shù)據(jù)存儲為OWL。在你過于擔(dān)心如何將存儲格式強(qiáng)加給不情愿的開發(fā)人員之前,先聽我說完。

數(shù)據(jù)模型和數(shù)據(jù)存儲

軍事策劃者有一句格言:“業(yè)余愛好者擔(dān)心戰(zhàn)術(shù),而專業(yè)人士擔(dān)心后勤。”他們試圖達(dá)到的核心思想是,如果你只是制定了一個(gè)壓倒敵人防御的戰(zhàn)斗計(jì)劃,那并沒有什么用處,但是,你也不能只讓你自己的部隊(duì)獲得執(zhí)行計(jì)劃所需的燃料和彈藥。同樣的,我們也可以說實(shí)現(xiàn)者通常會擔(dān)心存儲,而架構(gòu)師會擔(dān)心模型。沒有理由必須認(rèn)為數(shù)據(jù)模型是應(yīng)該由特定系統(tǒng)使用的存儲技術(shù)來決定的。一個(gè)定義良好的模型可以通過無損過程轉(zhuǎn)換成任何需要的存儲格式。

通常,我們會從存儲解決方案開始,然后回到數(shù)據(jù)格式?;蛘叨喾N格式。大約20年前,當(dāng)XML首次被引入時(shí),它被譽(yù)為了通用的數(shù)據(jù)交換格式。在這種情況下,需要交換數(shù)據(jù)的各種系統(tǒng)可以采用它們當(dāng)前的存儲模式(通常是關(guān)系數(shù)據(jù)庫),并將數(shù)據(jù)轉(zhuǎn)換成可擴(kuò)展標(biāo)記語言,以便與其他系統(tǒng)進(jìn)行交換。其結(jié)果是企業(yè)和系統(tǒng)架構(gòu)師會過度關(guān)注于XML格式,而幾乎忽略了系統(tǒng)的預(yù)期功能或企業(yè)的整體互操作性。

這個(gè)問題在國防部尤為嚴(yán)重。該部門支持著一個(gè)名副其實(shí)的需要手工創(chuàng)建和維護(hù)的XML規(guī)范。每一個(gè)XML模式都是單獨(dú)維護(hù)的,每次更新時(shí),都必須檢查每個(gè)相關(guān)的規(guī)范是否有潛在的影響(通常是手動的)。除此之外,還必須在XML模式中為無法更新以符合新模式的系統(tǒng)進(jìn)行設(shè)置。其結(jié)果是產(chǎn)生了一個(gè)混亂的規(guī)范混合體,迫使人們必須把注意力集中在使XML協(xié)同工作上,而不是集中在XML應(yīng)該促進(jìn)的任務(wù)上。

與其從存儲格式開始,然后確定如何為信息交換來表示它,還不如從與存儲無關(guān)的數(shù)據(jù)模型(如OWL)開始,然后將其用作生成數(shù)據(jù)庫模式和數(shù)據(jù)交換格式的基礎(chǔ)。這不僅可以讓您專注于理解現(xiàn)有的數(shù)據(jù)(而不是一些開發(fā)人員想的如何將它塞進(jìn)數(shù)據(jù)庫),通過從基于模型來創(chuàng)建的多個(gè)數(shù)據(jù)表示,可以最小化維護(hù)尾部。因?yàn)閷ζ髽I(yè)數(shù)據(jù)的任何更改都只需要在主模型中手動更改,因而從該模型生成其他存儲和交換模式時(shí)也可以確保這些模式之間的一致性。

企業(yè)數(shù)據(jù)建模

如果你關(guān)注的只是企業(yè),那么很明顯,你對數(shù)據(jù)的關(guān)注已經(jīng)跨越了整個(gè)企業(yè),現(xiàn)在你可能會認(rèn)為對企業(yè)中的所有數(shù)據(jù)進(jìn)行建模的前景是相當(dāng)令人望而生畏的。但不要害怕,如果你足夠小心的話,這也可以成為一項(xiàng)你可以安全地委托給許多人的任務(wù)。

創(chuàng)建一個(gè)單一的企業(yè)數(shù)據(jù)模型通常是徒勞的。對于一個(gè)群體來說,有太多的數(shù)據(jù)需要建模,有太多相互競爭的利益集團(tuán)試圖將模型推向他們喜歡的方向,并堅(jiān)持認(rèn)為并沒有其他方法能夠適合他們。但是使用OWL開發(fā)的本體是模塊化的,這意味著你可以集成來自不同來源的多個(gè)模型。不是創(chuàng)建一個(gè)覆蓋整個(gè)企業(yè)的單一模型,而是針對每個(gè)不同的利益集團(tuán)(業(yè)務(wù)領(lǐng)域、開發(fā)團(tuán)隊(duì)等)??梢詾樗P(guān)心的數(shù)據(jù)定義自己的本體。

不幸的是,這幾乎肯定會導(dǎo)致數(shù)據(jù)模型的重疊,但對不同對象會有不同的建模。這個(gè)問題的解決方案是采用一個(gè)通用的上層本體,企業(yè)中的每個(gè)本體都應(yīng)該從這個(gè)本體中派生出來。一個(gè)通用的上層本體不會阻止所有的互操作性問題,但是有了一個(gè)好的上層本體,它會通過阻止完全荒謬的構(gòu)造來約束這些問題,比如將“位置”變成一種“事件”(不,說真的,我已經(jīng)看到這種情況了)。

有許多候選的上層本體可用,它們中的大多數(shù)會試圖將所有信息分成五到六個(gè)頂級類別。但是,這些本體中的大多數(shù)都會遇到這樣的問題:有些本體所擁有的數(shù)據(jù)類并不適合他們的基本類,結(jié)果就會產(chǎn)生像將位置作為事件類型這樣的錯(cuò)誤。在我的經(jīng)驗(yàn)中,基本形式本體論(BFO)應(yīng)該是其中最深思熟慮的。在我使用BFO的幾年中,我?guī)缀鯖]有發(fā)現(xiàn)一個(gè)案例,其中所考慮的數(shù)據(jù)會不符合BFO的類層次結(jié)構(gòu)。

無論如何,企業(yè)架構(gòu)師必須在其特定環(huán)境中選擇一個(gè)最有效的數(shù)據(jù)建模理念。不管你選擇什么樣的數(shù)據(jù)建模理念,請記住,你有義務(wù)捕獲企業(yè)中所有數(shù)據(jù)的語法和語義。

作者:John McDowall

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    6817

    瀏覽量

    88743
  • 計(jì)算機(jī)
    +關(guān)注

    關(guān)注

    19

    文章

    7371

    瀏覽量

    87633
  • 數(shù)據(jù)建模
    +關(guān)注

    關(guān)注

    0

    文章

    11

    瀏覽量

    6963
收藏 人收藏

    評論

    相關(guān)推薦

    在labview中如何進(jìn)行數(shù)據(jù)存儲?

    在labview中如何進(jìn)行數(shù)據(jù)存儲?
    發(fā)表于 07-26 09:19

    HX711如何進(jìn)行數(shù)據(jù)處理?

    HX711如何進(jìn)行數(shù)據(jù)處理?
    發(fā)表于 11-21 22:03

    何進(jìn)行讀取數(shù)據(jù)

    文件為txt文件中共有10000個(gè)數(shù)據(jù)點(diǎn),每個(gè)數(shù)據(jù)點(diǎn)由6個(gè)元素組成,分別對應(yīng)6路信號即6條曲線,每個(gè)波形由200個(gè)數(shù)據(jù)點(diǎn)組成,每個(gè)文件中共有50個(gè)波形如圖后面那個(gè) 讀后標(biāo)記 如何進(jìn)行
    發(fā)表于 05-24 22:07

    何進(jìn)行FSM任意狀態(tài)建模 ?

    兩個(gè)快速問題:1)我有以下狀態(tài)圖:如您所見,一些狀態(tài)轉(zhuǎn)換是明確確定的,一些轉(zhuǎn)換是任意的。例如,當(dāng)處于空閑狀態(tài)時(shí),下一狀態(tài)可以是就緒狀態(tài)或保持空閑狀態(tài)。我怎樣才能在VHDL中對此進(jìn)行建模(不是一切
    發(fā)表于 10-31 07:18

    3D建模軟件中如何進(jìn)行裝配設(shè)計(jì)?

    地提高裝配效率?!嚵胁僮鳌R像操作5、裝配體修改通常情況下,使用浩辰3D建模軟件對裝配體進(jìn)行修改,主要分為兩個(gè)方面:一個(gè)是配合調(diào)整,另一個(gè)是裝配層級修改。① 配合調(diào)整:選擇需要修改配合關(guān)系的零部件
    發(fā)表于 03-12 14:48

    基于Simulink的數(shù)據(jù)鏈系統(tǒng)如何進(jìn)行仿真測試?

    擴(kuò)頻系統(tǒng)的原理是什么? 基于Simulink的數(shù)據(jù)鏈接系統(tǒng)如何進(jìn)行仿真測試?
    發(fā)表于 04-29 06:25

    SPI是什么?MCU主機(jī)是如何進(jìn)行SPI讀寫數(shù)據(jù)的?

    SPI是什么?SPI有什么作用?MCU主機(jī)是如何進(jìn)行SPI讀寫數(shù)據(jù)的?
    發(fā)表于 07-07 07:26

    電機(jī)常見故障正確排除方法是什么?如何進(jìn)行維修?

    電機(jī)常見故障正確排除方法是什么?如何進(jìn)行維修?
    發(fā)表于 11-11 06:18

    STM32 USART串口是如何進(jìn)行數(shù)據(jù)處理的呢

    STM32 USART串口接收數(shù)據(jù)的具體步驟有哪些?STM32 USART串口是如何進(jìn)行數(shù)據(jù)處理的呢?
    發(fā)表于 11-25 08:56

    stm32與GPS模塊之間的數(shù)據(jù)是如何進(jìn)行傳輸?shù)哪?/a>

    什么是GPS模塊?GPS數(shù)據(jù)類型及格式有哪些?stm32與GPS模塊之間的數(shù)據(jù)是如何進(jìn)行傳輸?shù)哪兀?/div>
    發(fā)表于 12-10 06:07

    數(shù)據(jù)庫概念結(jié)構(gòu)和邏輯與物理結(jié)構(gòu)如何進(jìn)行設(shè)計(jì)

    本文檔的主要內(nèi)容詳細(xì)介紹的是數(shù)據(jù)庫概念結(jié)構(gòu)和邏輯結(jié)構(gòu)與物理結(jié)構(gòu)如何進(jìn)行設(shè)計(jì)的詳細(xì)資料免費(fèi)下載
    發(fā)表于 10-23 16:42 ?17次下載
    <b class='flag-5'>數(shù)據(jù)</b>庫概念結(jié)構(gòu)和邏輯與物理結(jié)構(gòu)如<b class='flag-5'>何進(jìn)行</b>設(shè)計(jì)

    何進(jìn)行PHP數(shù)據(jù)庫的用戶登錄

    本文檔的主要內(nèi)容詳細(xì)介紹的是如何進(jìn)行PHP數(shù)據(jù)庫的用戶登錄。
    發(fā)表于 05-30 17:07 ?4次下載
    如<b class='flag-5'>何進(jìn)行</b>PHP<b class='flag-5'>數(shù)據(jù)</b>庫的用戶登錄

    何進(jìn)行OPCDCOM配置

    何進(jìn)行OPCDCOM配置(四會理士電源技術(shù)有限公司招聘)-如何進(jìn)行OPCDCOM配置? ? ? ? ? ? ? ? ? ? ??
    發(fā)表于 09-18 14:23 ?11次下載
    如<b class='flag-5'>何進(jìn)行</b>OPCDCOM配置

    SystemVerilog對硬件功能如何進(jìn)行建模

    本文定義了通常用于描述使用SystemVerilog對硬件功能進(jìn)行建模的詳細(xì)級別的術(shù)語。
    的頭像 發(fā)表于 03-30 11:42 ?1646次閱讀

    cad如何進(jìn)行三維建模

    三維建模是計(jì)算機(jī)輔助設(shè)計(jì)(CAD)中的一項(xiàng)重要技術(shù),它可以幫助設(shè)計(jì)師在計(jì)算機(jī)上創(chuàng)建和編輯三維模型。本文將介紹如何使用CAD軟件進(jìn)行三維建模,包括建模的基本步驟、
    的頭像 發(fā)表于 07-09 10:23 ?690次閱讀