汪 靜(江西工程學(xué)院,江西 新余 338029)
數(shù)據(jù)庫(kù)設(shè)計(jì)過程及注意事項(xiàng)
汪 靜
(江西工程學(xué)院,江西 新余 338029)
數(shù)據(jù)庫(kù)技術(shù)是計(jì)算機(jī)學(xué)科中的一個(gè)重要分支,也是應(yīng)用最廣范的技術(shù)之一,幾乎所有的企業(yè)級(jí)應(yīng)用程序中,后臺(tái)都有數(shù)據(jù)庫(kù)的支持。本文討論數(shù)據(jù)庫(kù)設(shè)計(jì)包括哪些過程,過程中很有可能會(huì)遇到一些問題,因此,我們要研究數(shù)據(jù)庫(kù)設(shè)計(jì)過程中的注意事項(xiàng),以及數(shù)據(jù)庫(kù)設(shè)計(jì)的一些技巧。
數(shù)據(jù)庫(kù)設(shè)計(jì)過程;注意事項(xiàng);優(yōu)化
目前,數(shù)據(jù)庫(kù)系統(tǒng)的應(yīng)用領(lǐng)域非常廣,幾乎所有的企業(yè)級(jí)應(yīng)用程序中,后臺(tái)都有數(shù)據(jù)庫(kù)的支持,這樣做的優(yōu)點(diǎn)是,把數(shù)據(jù)層與業(yè)務(wù)邏輯層輕松地分離開來,整體的性能也得到了大幅度的優(yōu)化。
經(jīng)過分析,不同數(shù)據(jù)庫(kù)規(guī)范化設(shè)計(jì)方法通常是把數(shù)據(jù)庫(kù)設(shè)計(jì)過程分成六個(gè)階段,依次為需求分析階段、概念結(jié)構(gòu)設(shè)計(jì)階段、邏輯結(jié)構(gòu)設(shè)計(jì)階段、數(shù)據(jù)庫(kù)物理設(shè)計(jì)階段、數(shù)據(jù)庫(kù)實(shí)施階段及數(shù)據(jù)庫(kù)運(yùn)行和維護(hù)階段。
首先要做的是,要先察原有的數(shù)據(jù)庫(kù)系統(tǒng)。因?yàn)榇蠖鄶?shù)數(shù)據(jù)庫(kù)項(xiàng)目一般都不是從無開始創(chuàng)建的,需求單位內(nèi)部很可能會(huì)早就有滿足一定需求的原有數(shù)據(jù)庫(kù)系統(tǒng),對(duì)原有系統(tǒng)考察完畢后再思考如何建立現(xiàn)在的新系統(tǒng)。建立新系統(tǒng)的過程中,數(shù)據(jù)庫(kù)設(shè)計(jì)人員及用戶的互相合作非常重要。需求分析的采集是由設(shè)計(jì)人員和需求單位合作完成的。
我們要開發(fā)的新系統(tǒng)要達(dá)到需求方的需要,滿足其各方面的要求。需求分析的結(jié)果要求要有文檔形式,也就是需求說明,需求說明文檔要得到相關(guān)管理人員的認(rèn)同。需求分析這一過程是我們進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì)的打基礎(chǔ)階段。
把應(yīng)用需求轉(zhuǎn)化為邏輯結(jié)構(gòu)就是概念結(jié)構(gòu)設(shè)計(jì)階段的工作。邏輯結(jié)構(gòu)也就是概念結(jié)構(gòu),它獨(dú)立于我們熟悉的數(shù)據(jù)庫(kù)管理系統(tǒng)。它既和用戶熟悉的現(xiàn)實(shí)世界關(guān)系密切,又能轉(zhuǎn)換為我們系統(tǒng)設(shè)計(jì)人員要研究的數(shù)據(jù)模型,起到了一個(gè)重要的橋梁作用。概念結(jié)構(gòu)可以很容易地對(duì)現(xiàn)實(shí)世界已經(jīng)改變的需求作出相應(yīng)的適應(yīng)性變動(dòng)。每個(gè)用戶都有各自對(duì)信息的要求和對(duì)處理的要求,因此應(yīng)先生成針對(duì)不同用戶的局部視圖,然后再得到數(shù)據(jù)庫(kù)概念模型,也就是全局視圖。概念結(jié)構(gòu)設(shè)計(jì)階段在整個(gè)數(shù)據(jù)庫(kù)設(shè)計(jì)過程中非常重要。
概念結(jié)構(gòu)比較獨(dú)立于具體的計(jì)算機(jī),相對(duì)來講穩(wěn)定性比較高。但我們的目的是用數(shù)據(jù)庫(kù)管理系統(tǒng)實(shí)現(xiàn)應(yīng)用單位的各方面的需要,因此,概念結(jié)構(gòu)不是最終,我們應(yīng)把它變?yōu)檫壿嫿Y(jié)構(gòu)。這個(gè)階段的工作涉及到了很多細(xì)節(jié)問題,工作量也比較大。在實(shí)際應(yīng)用中,我們可能沒有機(jī)會(huì)在眾多數(shù)據(jù)庫(kù)管理系統(tǒng)挑選出性價(jià)比最高的一款,用哪一個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng),大多已經(jīng)安排好了。當(dāng)今,我們實(shí)際應(yīng)用的數(shù)據(jù)庫(kù)管理系統(tǒng)通常只支持關(guān)系模型、網(wǎng)狀模型及層次模型三種模型中的某一種。所以設(shè)計(jì)邏輯結(jié)構(gòu)要先將概念結(jié)構(gòu)轉(zhuǎn)化為關(guān)系模型、網(wǎng)狀模型或?qū)哟文P?,再將轉(zhuǎn)化來的模型轉(zhuǎn)換為數(shù)據(jù)庫(kù)管理系統(tǒng)支持的模型。
通常情況下,一張二維表不能既無主鍵也無外鍵。主鍵是唯一的,它在一張二維表格中的重要性是不言而喻的。而外鍵的作用也是巨大的,在表和表之間的關(guān)聯(lián)中,外鍵就像一條黃金紐帶。
正確地掌握三個(gè)范式的精髓,對(duì)于我們數(shù)據(jù)庫(kù)的設(shè)計(jì)優(yōu)化必不可少。1NF即第一范式,任何一張二維表格都必須滿足第一范式,因?yàn)槭菍?duì)表最基本的要求,即屬性不能分割,不能嵌套。2NF即第二范式,它也是作為二維表格必須要滿足的,也就是說一張二維表格中記錄不能重復(fù),因?yàn)橹貜?fù)的記錄是毫無意義的,憑白浪費(fèi)空間。3NF即第三范式被認(rèn)為在性能、擴(kuò)展性及數(shù)據(jù)完整性方面達(dá)到了最好的平衡,它在字段的冗余性方面規(guī)定了約束條件。但是,第三范式并不是一定要被滿足的。字段沒有冗余的代價(jià)有可能會(huì)增加操作的時(shí)間,也就是數(shù)據(jù)庫(kù)的運(yùn)行效率會(huì)受影響,可能會(huì)變低,所以,為了運(yùn)行速度更快,我們可能要放棄第三范式。關(guān)系規(guī)范化的程序越高是否就越實(shí)用,要視具體情況而定。因?yàn)槿绻?guī)范化的程度越高,必須要將一張大表拆分成若干張小表,這些小表用一些鍵值聯(lián)接起來,查詢時(shí)就需要對(duì)多個(gè)表進(jìn)行聯(lián)接,大大影響查詢的效率。
為了優(yōu)化錄入界面,我們應(yīng)該確定的原始單據(jù)和基本表之間的對(duì)應(yīng)關(guān)系。它們之間可能是一對(duì)一的關(guān)系、一對(duì)多的關(guān)系、還有可能是多對(duì)多甚至多對(duì)一的關(guān)系。通常情況下,它們之間是一對(duì)一的關(guān)系:也就是一張?jiān)紗螕?jù)對(duì)應(yīng)且只對(duì)應(yīng)一張基本表。而在特殊情況下,它們也可能是一對(duì)多或者多對(duì)一的關(guān)系,也就是一張?jiān)紗螕?jù)對(duì)應(yīng)多張基本表,或者多張?jiān)紗螕?jù)對(duì)應(yīng)一張基本表。為了優(yōu)化我們?cè)O(shè)計(jì)的數(shù)據(jù)庫(kù),這點(diǎn)要引起注意。
物理設(shè)計(jì)階段是個(gè)實(shí)實(shí)在在的過程,之前幾個(gè)階段的努力在這個(gè)階段都會(huì)得到“眼見為實(shí)”的體驗(yàn),是真正看到勞動(dòng)成果的階段。這個(gè)階段的注意事項(xiàng)也很重要。在網(wǎng)狀模型和層次模型的系統(tǒng)中,這一部分內(nèi)容比較復(fù)雜,關(guān)系模型系統(tǒng)較簡(jiǎn)單。在設(shè)計(jì)時(shí),應(yīng)先確定物理結(jié)構(gòu),再進(jìn)行評(píng)價(jià)。物理結(jié)構(gòu)設(shè)計(jì)應(yīng)盡量減小存儲(chǔ)空間,盡量減少操作次數(shù)。得到物理設(shè)計(jì)完成之后的詳細(xì)數(shù)據(jù)后,我們就可以利用電腦創(chuàng)建數(shù)據(jù)庫(kù)了。
對(duì)上一階段的成果進(jìn)行初步評(píng)價(jià)并優(yōu)化后,另各方人員滿意后,我們就正式進(jìn)入數(shù)據(jù)庫(kù)實(shí)施階段了。這個(gè)階段具體的流程是先用數(shù)據(jù)庫(kù)管理系統(tǒng)建庫(kù)命令創(chuàng)建用戶數(shù)據(jù)庫(kù)結(jié)構(gòu),然后組織數(shù)據(jù)入庫(kù),最后編制及調(diào)試應(yīng)用程序。一切準(zhǔn)備就緒后,我們就可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行試運(yùn)行了。
這一階段,我們要注意密切關(guān)注試運(yùn)行過程中出現(xiàn)的問題并做好記錄,以期望之后解決。這個(gè)階段數(shù)據(jù)庫(kù)管理員擔(dān)當(dāng)重任,責(zé)任重大。
在數(shù)據(jù)庫(kù)設(shè)計(jì)的過程中,為了優(yōu)化我們?cè)O(shè)計(jì)的數(shù)據(jù)庫(kù)系統(tǒng),堅(jiān)決抵制系統(tǒng)出問題,我們應(yīng)該仔細(xì)思考,學(xué)習(xí)并積極研究數(shù)據(jù)庫(kù)的設(shè)計(jì)技巧。充分重視注意事項(xiàng),才會(huì)使數(shù)據(jù)庫(kù)設(shè)計(jì)更加科學(xué)、合理。
[1]何玉潔.數(shù)據(jù)庫(kù)設(shè)計(jì)[S].機(jī)械工業(yè)出版社,2003(06).
[2]王珊,薩師煊.數(shù)據(jù)庫(kù)系統(tǒng)概論[S].高等教育出版社,2006(05).
[3]西格爾,尹買華.數(shù)據(jù)庫(kù)管理系統(tǒng)[S].清華大學(xué)出版社,2004(07).
[4]王選.軟件設(shè)計(jì)方法[S].清華大學(xué)出版社,1992.
汪靜(1981-),女,山東昌邑人,碩士,講師,主要從事:計(jì)算機(jī)相關(guān)教學(xué)。