久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

循序漸進講解數(shù)據(jù)表的十二個設(shè)計原則 — IT技術(shù)...

 zybingliu 2008-05-06

循序漸進講解數(shù)據(jù)表的十二個設(shè)計原則

發(fā)布時間:2008.05.04 04:55     來源:賽迪網(wǎng)    作者:Alice

【賽迪網(wǎng)-IT技術(shù)報道】數(shù)據(jù)表的設(shè)計原則:

(1)不應(yīng)針對整個系統(tǒng)進行數(shù)據(jù)庫設(shè)計,而應(yīng)該根據(jù)系統(tǒng)架構(gòu)中的組件劃分,,針對每個 組件所處理的業(yè)務(wù)進行組件單元的數(shù)據(jù)庫設(shè)計,;不同組件間所對應(yīng)的數(shù)據(jù)庫表之間的關(guān)聯(lián)應(yīng)盡可能減少,,如果不同組件間的表需要外鍵關(guān)聯(lián)也盡量不要創(chuàng)建外鍵關(guān) 聯(lián),而只是記錄關(guān)聯(lián)表的一個主鍵,,確保組件對應(yīng)的表之間的獨立性,,為系統(tǒng)或表結(jié)構(gòu)的重構(gòu)提供可能性。

(2)采用領(lǐng)域模型驅(qū)動的方式和自頂向下的思路進行數(shù)據(jù)庫設(shè)計,,首先分析系統(tǒng)業(yè)務(wù),, 根據(jù)職責(zé)定義對象。對象要符合封裝的特性,,確保與職責(zé)相關(guān)的數(shù)據(jù)項被定義在一個對象之內(nèi),,這些數(shù)據(jù)項能夠完整描述該職責(zé),不會出現(xiàn)職責(zé)描述缺失,。并且一個 對象有且只有一項職責(zé),,如果一個對象要負責(zé)兩個或兩個以上的職責(zé),應(yīng)進行分拆,。

(3)根據(jù)建立的領(lǐng)域模型進行數(shù)據(jù)庫表的映射,,此時應(yīng)參考數(shù)據(jù)庫設(shè)計第二范式:一個 表中的所有非關(guān)鍵字屬性都依賴于整個關(guān)鍵字。關(guān)鍵字可以是一個屬性,,也可以是多個屬性的集合,,不論那種方式,都應(yīng)確保關(guān)鍵字能夠保證唯一性,。在確定關(guān)鍵字 時,,應(yīng)保證關(guān)鍵字不會參與業(yè)務(wù)且不會出現(xiàn)更新異常,這時,,最優(yōu)解決方案為采用一個自增數(shù)值型屬性或一個隨機字符串作為表的關(guān)鍵字,。

(4)由于第一點所述的領(lǐng)域模型驅(qū)動的方式設(shè)計數(shù)據(jù)庫表結(jié)構(gòu),領(lǐng)域模型中的每一個對象只有一項職責(zé),,所以對象中的數(shù)據(jù)項不存在傳遞依賴,,所以,這種思路的數(shù)據(jù)庫表結(jié)構(gòu)設(shè)計從一開始即滿足第三范式:一個表應(yīng)滿足第二范式,,且屬性間不存在傳遞依賴,。

(5)同樣,由于對象職責(zé)的單一性以及對象之間的關(guān)系反映的是業(yè)務(wù)邏輯之間的關(guān)系,,所以在領(lǐng)域模型中的對象存在主對象和從對象之分,,從對象是從1-N或N-N的角度進一步主對象的業(yè)務(wù)邏輯,所以從對象及對象關(guān)系映射為的表及表關(guān)聯(lián)關(guān)系不存在刪除和插入異常,。

(6)在映射后得出的數(shù)據(jù)庫表結(jié)構(gòu)中,,應(yīng)再根據(jù)第四范式進行進一步修改,確保不存在 多值依賴,。這時,,應(yīng)根據(jù)反向工程的思路反饋給領(lǐng)域模型,。如果表結(jié)構(gòu)中存在多值依賴,則證明領(lǐng)域模型中的對象具有至少兩個以上的職責(zé),,應(yīng)根據(jù)第一條進行設(shè)計 修正,。第四范式:一個表如果滿足BCNF,不應(yīng)存在多值依賴,。

(7)在經(jīng)過分析后確認所有的表都滿足二,、三、四范式的情況下,,表和表之間的關(guān)聯(lián)盡 量采用弱關(guān)聯(lián)以便于對表字段和表結(jié)構(gòu)的調(diào)整和重構(gòu),。并且,我認為數(shù)據(jù)庫中的表是用來持久化一個對象實例在特定時間及特定條件下的狀態(tài)的,,只是一個存儲介 質(zhì),,所以,表和表之間也不應(yīng)用強關(guān)聯(lián)來表述業(yè)務(wù)(數(shù)據(jù)間的一致性),,這一職責(zé)應(yīng)由系統(tǒng)的邏輯層來保證,,這種方式也確保了系統(tǒng)對于不正確數(shù)據(jù)(臟數(shù)據(jù))的兼 容性。當(dāng)然,,從整個系統(tǒng)的角度來說我們還是要盡最大努力確保系統(tǒng)不會產(chǎn)生臟數(shù)據(jù),,單從另一個角度來說,臟數(shù)據(jù)的產(chǎn)生在一定程度上也是不可避免的,,我們也要 保證系統(tǒng)對這種情況的容錯性,。這是一個折中的方案。

(8)應(yīng)針對所有表的主鍵和外鍵建立索引,,有針對性的(針對一些大數(shù)據(jù)量和常用檢索 方式)建立組合屬性的索引,,提高檢索效率。雖然建立索引會消耗部分系統(tǒng)資源,,但比較起在檢索時搜索整張表中的數(shù)據(jù)尤其時表中的數(shù)據(jù)量較大時所帶來的性能影 響,,以及無索引時的排序操作所帶來的性能影響,這種方式仍然是值得提倡的,。

(9)盡量少采用存儲過程,,目前已經(jīng)有很多技術(shù)可以替代存儲過程的功能如“對象/關(guān) 系映射”等,將數(shù)據(jù)一致性的保證放在數(shù)據(jù)庫中,,無論對于版本控制,、開發(fā)和部署、以及數(shù)據(jù)庫的遷移都會帶來很大的影響,。但不可否認,存儲過程具有性能上的優(yōu) 勢,,所以,,當(dāng)系統(tǒng)可使用的硬件不會得到提升而性能又是非常重要的質(zhì)量屬性時,,可經(jīng)過平衡考慮選用存儲過程。

(10)當(dāng)處理表間的關(guān)聯(lián)約束所付出的代價(常常是使用性上的代價)超過了保證不會 出現(xiàn)修改,、刪除,、更改異常所付出的代價,并且數(shù)據(jù)冗余也不是主要的問題時,,表設(shè)計可以不符合四個范式,。四個范式確保了不會出現(xiàn)異常,但也可能由此導(dǎo)致過于 純潔的設(shè)計,,使得表結(jié)構(gòu)難于使用,,所以在設(shè)計時需要進行綜合判斷,但首先確保符合四個范式,,然后再進行精化修正是剛剛進入數(shù)據(jù)庫設(shè)計領(lǐng)域時可以采用的最好 辦法,。

(11)設(shè)計出的表要具有較好的使用性,主要體現(xiàn)在查詢時是否需要關(guān)聯(lián)多張表且還需使用復(fù)雜的SQL技巧,。

(12)設(shè)計出的表要盡可能減少數(shù)據(jù)冗余,,確保數(shù)據(jù)的準(zhǔn)確性,有效的控制冗余有助于提高數(shù)據(jù)庫的性能,。(責(zé)任編輯:盧兆林)


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多