99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀數(shù)據(jù)模型的探討與分析
數(shù)據(jù)模型的探討與分析
2017-11-09
收藏

數(shù)據(jù)模型的探討與分析

在工作中,關(guān)于概念模型、邏輯模型和物理模型三個(gè)數(shù)據(jù)模型的探討中,發(fā)現(xiàn)大家都有自己的見解,但是卻沒有一個(gè)人能真正的說清楚這三個(gè)模型的涵義與差異。

雖說由于這三個(gè)模型在軟件開發(fā)的過程中,由于其功能與作用的差異,結(jié)合項(xiàng)目規(guī)模等實(shí)際情況,不一定會(huì)全部使用以節(jié)省項(xiàng)目時(shí)間(有時(shí)候直接設(shè)計(jì)物理模型),但我認(rèn)為不應(yīng)該被冠以“大家對這個(gè)概念的理解不同”不同之名而歪曲數(shù)據(jù)模型的定義。事實(shí)上,這三個(gè)模型的概念是清晰的、標(biāo)準(zhǔn)化的。

1.2約定

本文中討論的概念模型、邏輯模型和物理模型,主要是針對數(shù)據(jù)模型而言,也就是概念數(shù)據(jù)模型、邏輯數(shù)據(jù)模型和物理數(shù)據(jù)模型,而不是系統(tǒng)分析與設(shè)計(jì)中泛義的概念模型、邏輯模型和物理模型。

2數(shù)據(jù)模型的定義與分析

2.1概念模型

2.1.1定義

概念模型,是面向數(shù)據(jù)庫用戶的真實(shí)世界的模型,主要用來描述真實(shí)世界中的概念化結(jié)構(gòu),它使數(shù)據(jù)庫的設(shè)計(jì)人員在設(shè)計(jì)的初始階段,擺脫計(jì)算機(jī)系統(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中實(shí)現(xiàn)?!俣劝倏?

概念數(shù)據(jù)模型是最終用戶對數(shù)據(jù)存儲(chǔ)的看法,反映了最終用戶綜合性的信息需求,它以數(shù)據(jù)類的方式描述企業(yè)級的數(shù)據(jù)需求,數(shù)據(jù)類代表了在業(yè)務(wù)環(huán)境中自然聚集成的幾個(gè)主要類別數(shù)據(jù)?!狫erome's BI BLOG

我簡單化歸納一下:概念模型,就是利用自然語言對真實(shí)世界的業(yè)務(wù)數(shù)據(jù)的抽象化描述,是面向終端用戶的數(shù)據(jù)架構(gòu)。

2.1.2作用

概念數(shù)據(jù)模型的目標(biāo)是統(tǒng)一業(yè)務(wù)概念,作為業(yè)務(wù)人員和技術(shù)人員之間溝通的橋梁,確定不同實(shí)體之間的最高層次的關(guān)系。

2.1.3實(shí)例分析

下面舉兩個(gè)例子來說。

例一:

先進(jìn)行一番業(yè)務(wù)描述:我們的項(xiàng)目計(jì)劃,一般包括年計(jì)劃和月計(jì)劃,年計(jì)劃可分解為月計(jì)劃。

我們來理解一下這句業(yè)務(wù)上的描述,可以把它分解為兩部分:“計(jì)劃包括年計(jì)劃和月計(jì)劃”和“年計(jì)劃可分解為月計(jì)劃”。我們從業(yè)務(wù)層面上,可以抽象出兩個(gè)數(shù)據(jù)對象:年計(jì)劃和月計(jì)劃。

再用概念模型E-R圖表示如下:

概念數(shù)據(jù)模型一:

概念數(shù)據(jù)模型二:

概念數(shù)據(jù)模型一是不完整的概念模型,概念數(shù)據(jù)模型二就是完整的概念模型。

原因:從概念數(shù)據(jù)模型一里面無法判斷其中有多少隱藏的信息,當(dāng)然你可以在另一個(gè)地方描述存在年計(jì)劃或月計(jì)劃這種業(yè)務(wù)情景,但是在這里你沒有描述出來,所以至少在這里它是不完整的?我想問:此時(shí)不說,更待何時(shí)?

例二:

對于概念模型有一種典型的情況。例如,下面是一組關(guān)于財(cái)務(wù)審計(jì)系統(tǒng)中的概念數(shù)據(jù)模型:

姑且勿論這個(gè)概念模型是否正確,至少它是粒度很粗很不完整的。

對于“財(cái)務(wù)數(shù)據(jù)”來說,它并不能做為一個(gè)實(shí)體,而是其中包含了多個(gè)實(shí)體(包括賬套,憑證,科目等相關(guān)實(shí)體),把它們(財(cái)務(wù)數(shù)據(jù)、審計(jì)數(shù)據(jù)與結(jié)果數(shù)據(jù))定義為數(shù)據(jù)域(財(cái)務(wù)數(shù)據(jù)域、審計(jì)數(shù)據(jù)域與結(jié)果數(shù)據(jù)域)也許更加準(zhǔn)確,而不是把它定義為一個(gè)數(shù)據(jù)(實(shí)體)。

“財(cái)務(wù)數(shù)據(jù)”域完整的概念模型,應(yīng)該如下圖:

(這里我假設(shè)這個(gè)概念模型里的實(shí)體是完整的,實(shí)際的財(cái)務(wù)系統(tǒng)當(dāng)然不止這三個(gè)實(shí)體。)

這里也許有個(gè)疑問:這沒問題啊,先系統(tǒng)性,再結(jié)構(gòu)化嘛。

在此,我也真的很糾結(jié),想想還是先不對這一句話解釋太多,我們先進(jìn)入概念模型的設(shè)計(jì)原則的討論。完了之后,希望大家能找到“先系統(tǒng)性,再結(jié)構(gòu)化”這句話的真諦。

2.1.4設(shè)計(jì)原則

我們先來引用一下數(shù)據(jù)庫設(shè)計(jì)范式里面第三范式的描述:第三范式(3NF)要求一個(gè)數(shù)據(jù)庫表中不包含已在其它表中已包含的非主關(guān)鍵字信息。

在系統(tǒng)分析中對于數(shù)據(jù)架構(gòu)的分析,一般原則是以數(shù)據(jù)實(shí)體為基本元素,即每個(gè)實(shí)體不可再分解為止。這也正符合數(shù)據(jù)庫設(shè)計(jì)三范式里面第三范式的定義。

如果在分析階段數(shù)據(jù)對象沒有細(xì)化到最小粒度的數(shù)據(jù)實(shí)體,那么相當(dāng)于把系統(tǒng)分析的工作留給了下一階段的設(shè)計(jì)人員,從某種角度上來講,這是不符合系統(tǒng)分析與設(shè)計(jì)的原則的。因?yàn)橄到y(tǒng)設(shè)計(jì)人員的工作是根據(jù)分析結(jié)果進(jìn)行設(shè)計(jì),而不是還要進(jìn)行系統(tǒng)分析。

一:分析階段要清楚問題的所有內(nèi)容,即系統(tǒng)做什么。也就是:What to do.

二:設(shè)計(jì)階段的設(shè)計(jì)工作是根據(jù)系統(tǒng)分析的結(jié)果而進(jìn)行的,不完整的系統(tǒng)分析結(jié)果無法得到一個(gè)完整的系統(tǒng)設(shè)計(jì)結(jié)果。I don't know what to do, I don't know how to do.

對于結(jié)構(gòu)化的分析我們一般的原則是:

一、使用一個(gè)總體結(jié)構(gòu)圖來描述各個(gè)數(shù)據(jù)域之間的關(guān)系,然后對數(shù)據(jù)域里面的所有數(shù)據(jù)實(shí)體進(jìn)行結(jié)構(gòu)化的分析與設(shè)計(jì)。

二、對于同一個(gè)數(shù)據(jù)域的結(jié)構(gòu)化層次最多不超過三層結(jié)構(gòu),最好不超過兩層;對于不同數(shù)據(jù)域由于系統(tǒng)規(guī)模較大,如果在同一個(gè)篇幅里面無法完全描述出來,則可以切片分章節(jié)對不同的數(shù)據(jù)域進(jìn)行結(jié)構(gòu)化的描述。

2.1.5小結(jié)

概念模型設(shè)計(jì)階段,主要處于系統(tǒng)分析的階段,屬性可以不完全描述,但也可以描述一些主要的屬性。如果你在E-R圖上不給出屬性,可以選擇一個(gè)專門的表格來描述。另一方面,同一個(gè)實(shí)體的詳細(xì)信息,在一個(gè)地方描述就好了,不要每一個(gè)涉及該實(shí)體的地方都描述一番。因?yàn)槿绻麑?shí)體有變化的時(shí)候,我想有些實(shí)體會(huì)在幾百上千個(gè)點(diǎn)上,你也不會(huì)每一個(gè)地方都去維護(hù)一次。

下面引用Jerome's BI BLOG里面的一句,這一句話很重要,也是理解概念模型與邏輯模型之間的區(qū)別的關(guān)鍵。

概念數(shù)據(jù)模型的內(nèi)容包括重要的實(shí)體及實(shí)體之間的關(guān)系。在概念數(shù)據(jù)模型中不包括實(shí)體的屬性,也不用定義實(shí)體的主鍵。這是概念數(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)的實(shí)現(xiàn)。——百度百科

2.2.2作用

邏輯模型是概念模型從真實(shí)世界向計(jì)算機(jī)世界的轉(zhuǎn)換,加入了系統(tǒng)設(shè)計(jì)的相關(guān)內(nèi)容。

邏輯數(shù)據(jù)建模不僅會(huì)影響數(shù)據(jù)庫設(shè)計(jì)的方向,還間接影響最終數(shù)據(jù)庫的性能和管理。如果在實(shí)現(xiàn)邏輯數(shù)據(jù)模型時(shí)投入得足夠多,那么在物理數(shù)據(jù)模型設(shè)計(jì)時(shí)就可以有許多可供選擇的方法。

2.2.3實(shí)例分析

例如:接著上面“計(jì)劃表”的設(shè)計(jì),“計(jì)劃表”的邏輯結(jié)構(gòu),如下圖所示。

其中:

1.計(jì)劃標(biāo)識:這是由于系統(tǒng)設(shè)計(jì)的需要而加進(jìn)來的,與業(yè)務(wù)無關(guān)的屬性。

2.計(jì)劃類型:0:年計(jì)劃;1:月計(jì)劃;2:季度計(jì)劃。(這里使用整型表示,當(dāng)然可以是字符、字符串或其他自定義類型,這完全是設(shè)計(jì)上的事,一般不要在系統(tǒng)分析階段啰嗦這些,客戶不關(guān)心的事兒。)

雖然計(jì)劃在業(yè)務(wù)概念上來講,存在年計(jì)劃、月計(jì)劃,甚至于季度計(jì)劃,但是在計(jì)算機(jī)世界中,計(jì)劃的類型除了在概念上不一樣之外,其他屬性都是一樣的,那么邏輯模型設(shè)計(jì)的時(shí)候可以把計(jì)劃數(shù)據(jù)定義為一個(gè)實(shí)體,而使用其中的一個(gè)字段來標(biāo)識某一份計(jì)劃是年計(jì)劃、月計(jì)劃,還是季度計(jì)劃。

2.2.4設(shè)計(jì)原則

邏輯數(shù)據(jù)模型反映的是系統(tǒng)分析設(shè)計(jì)人員對數(shù)據(jù)存儲(chǔ)的觀點(diǎn),是對概念數(shù)據(jù)模型進(jìn)一步的分解和細(xì)化。邏輯數(shù)據(jù)模型是根據(jù)業(yè)務(wù)規(guī)則確定的,關(guān)于業(yè)務(wù)對象、業(yè)務(wù)對象的數(shù)據(jù)項(xiàng)及業(yè)務(wù)對象之間關(guān)系的基本藍(lán)圖。

邏輯數(shù)據(jù)模型的內(nèi)容包括所有的實(shí)體和關(guān)系,確定每個(gè)實(shí)體的屬性,定義每個(gè)實(shí)體的主鍵,指定實(shí)體的外鍵,需要進(jìn)行范式化處理。

例如,在“計(jì)劃表”邏輯模型中可能加入了由于系統(tǒng)設(shè)計(jì)需要的一些字段(屬性),這些字段可能是在業(yè)務(wù)概念上不存在或不需要的。

2.2.5小結(jié)

邏輯數(shù)據(jù)模型的目標(biāo)是盡可能詳細(xì)的描述數(shù)據(jù),但并不考慮數(shù)據(jù)在物理上如何來實(shí)現(xiàn)。——這一句話很重要,也是理解邏輯模型與物理模型之間區(qū)別性的關(guān)鍵。

2.3物理模型

2.3.1定義

物理模型,是面向計(jì)算機(jī)物理表示的模型,描述了數(shù)據(jù)在儲(chǔ)存介質(zhì)上的組織結(jié)構(gòu),它不但與具體的DBMS有關(guān),而且還與操作系統(tǒng)和硬件有關(guān)。每一種邏輯數(shù)據(jù)模型在實(shí)現(xiàn)時(shí)都有起對應(yīng)的物理數(shù)據(jù)模型。DBMS為了保證其獨(dú)立性與可移植性,大部分物理數(shù)據(jù)模型的實(shí)現(xiàn)工作由系統(tǒng)自動(dòng)完成,而設(shè)計(jì)者只設(shè)計(jì)索引、聚集等特殊結(jié)構(gòu)。 ——百度百科

2.3.2作用

物理數(shù)據(jù)模型的目標(biāo)是指定如何用具體的數(shù)據(jù)庫模式來實(shí)現(xiàn)邏輯數(shù)據(jù)模型,以及真正的保存數(shù)據(jù)。

2.3.3實(shí)例分析

例如:對于計(jì)劃表,基于SQL Server數(shù)據(jù)庫管理系統(tǒng)為存儲(chǔ)介質(zhì)的物理模型結(jié)構(gòu)。如下圖所示:

字段對照表:

數(shù)據(jù)表名:Plan(計(jì)劃表)

當(dāng)基于Oracle數(shù)據(jù)庫模式的時(shí)候,這個(gè)物理模型則是不一樣的。

例如:字符串,在Oracle上為varchar2,在Sql Server上為varchar等。

2.3.4設(shè)計(jì)原則

物理數(shù)據(jù)模型是在邏輯數(shù)據(jù)模型的基礎(chǔ)上,考慮各種具體的技術(shù)實(shí)現(xiàn)因素,進(jìn)行數(shù)據(jù)庫體系結(jié)構(gòu)設(shè)計(jì),真正實(shí)現(xiàn)數(shù)據(jù)在數(shù)據(jù)庫中的存儲(chǔ)。

物理數(shù)據(jù)模型的內(nèi)容包括確定所有的表和列,定義外鍵用于確定表之間的關(guān)系,基于用戶的需求可能進(jìn)行范式化等內(nèi)容。在物理實(shí)現(xiàn)上的考慮,可能會(huì)導(dǎo)致物理數(shù)據(jù)模型和邏輯數(shù)據(jù)模型有較大的不同。

2.3.5小結(jié)

物理模型跟邏輯模型的區(qū)別就是,邏輯模型并不指出特定的數(shù)據(jù)存儲(chǔ),僅限于系統(tǒng)邏輯上的描述。物理模型是邏輯模型在具體存儲(chǔ)介質(zhì)上的表現(xiàn),直接與具體的數(shù)據(jù)庫管理系統(tǒng)或存儲(chǔ)介質(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)或存儲(chǔ)介質(zhì)無關(guān),僅為使用計(jì)算機(jī)系統(tǒng)概念中的一種邏輯結(jié)構(gòu)。

2.4總結(jié)

概念模型是對真實(shí)世界的一種概念結(jié)構(gòu)的描述;

邏輯模型是計(jì)算機(jī)系統(tǒng)上一種邏輯結(jié)構(gòu)的描述;

物理模型則是與具體的計(jì)算機(jī)物理介質(zhì)直接關(guān)聯(lián)的一種結(jié)構(gòu)化的表達(dá)。

總的來說,我的理解是:概念模型、邏輯模型和物理模型是系統(tǒng)分析與設(shè)計(jì)中同一類型工具中三個(gè)不同層面的工具,一般應(yīng)用于對同一個(gè)對象面向不同層面的用戶而做不同的描述。

數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }