張橋珍
【摘 要】數(shù)據(jù)庫技術(shù)是現(xiàn)代信息科學(xué)與技術(shù)的重要組成部分,是計(jì)算機(jī)數(shù)據(jù)處理與信息管理系統(tǒng)的核心。數(shù)據(jù)庫技術(shù)研究和解決了計(jì)算機(jī)信息處理過程中大量數(shù)據(jù)有效地組織和存儲的問題。本文主要論述規(guī)范數(shù)據(jù)庫設(shè)計(jì)的必要性和數(shù)據(jù)庫設(shè)計(jì)的流程。
【關(guān)鍵詞】數(shù)據(jù)庫應(yīng)用 數(shù)據(jù)庫設(shè)計(jì)規(guī)范 數(shù)據(jù)庫設(shè)計(jì)流程
引言
隨著計(jì)算機(jī)技術(shù)與網(wǎng)絡(luò)通信技術(shù)的發(fā)展,數(shù)據(jù)庫技術(shù)已成為信息社會中對大量數(shù)據(jù)進(jìn)行組織與管理的重要技術(shù)手段及軟件技術(shù)。數(shù)據(jù)庫的應(yīng)用領(lǐng)域非常廣泛,不管是家庭、公司或大型企業(yè),還是政府部門,都需要使用數(shù)據(jù)庫來存儲數(shù)據(jù)信息。目前關(guān)系型數(shù)據(jù)庫已成為主流,下面也是針對關(guān)系型數(shù)據(jù)庫進(jìn)行論述的。
一、規(guī)范數(shù)據(jù)庫設(shè)計(jì)的必要性
數(shù)據(jù)庫設(shè)計(jì),簡單地說就是規(guī)劃和結(jié)構(gòu)化數(shù)據(jù)庫中數(shù)據(jù)對象以及這些對象之間關(guān)系的過程。良好的數(shù)據(jù)設(shè)計(jì)能夠節(jié)省數(shù)據(jù)庫的存儲空間,能夠保證數(shù)據(jù)的完整性,方便進(jìn)行數(shù)據(jù)庫應(yīng)用系統(tǒng)的開發(fā)。無論是SQL Server還是Oracle數(shù)據(jù)庫,通過進(jìn)行規(guī)范化的數(shù)據(jù)庫設(shè)計(jì),都可以使你的程序更具有可讀性,更容易擴(kuò)展,從而也會提升項(xiàng)目的應(yīng)用性能。
二、數(shù)據(jù)庫設(shè)計(jì)的流程
目前設(shè)計(jì)數(shù)據(jù)庫系統(tǒng)主要采用的是以邏輯數(shù)據(jù)庫設(shè)計(jì)和物理數(shù)據(jù)庫設(shè)計(jì)為核心的規(guī)范設(shè)計(jì)方法。其中邏輯數(shù)據(jù)庫設(shè)計(jì)是根據(jù)用戶要求和特定數(shù)據(jù)庫管理系統(tǒng)的具體特點(diǎn),以數(shù)據(jù)庫設(shè)計(jì)理論為依據(jù),設(shè)計(jì)數(shù)據(jù)庫的全局邏輯結(jié)構(gòu)和每個用戶的局部邏輯結(jié)構(gòu)。物理數(shù)據(jù)庫設(shè)計(jì)是在邏輯結(jié)構(gòu)確定之后,設(shè)計(jì)數(shù)據(jù)庫的存儲結(jié)構(gòu)及其他實(shí)現(xiàn)細(xì)節(jié)。一般將數(shù)據(jù)庫設(shè)計(jì)分為以下六個階段:需求分析階段、概要設(shè)計(jì)階段、邏輯設(shè)計(jì)階段、物理設(shè)計(jì)階段、數(shù)據(jù)庫實(shí)施階段、數(shù)據(jù)庫運(yùn)行維護(hù)階段。這里重點(diǎn)討論在各個階段的數(shù)據(jù)庫設(shè)計(jì)過程。
1.需求分析階段
主要是分析客戶的業(yè)務(wù)和數(shù)據(jù)處理需求。
需求分析階段的重點(diǎn)是調(diào)查、收集并分析客戶業(yè)務(wù)數(shù)據(jù)需求、處理需求、安全性與完整性需求等。
常用的需求調(diào)查方法有:在客戶的單位跟班實(shí)習(xí)、組織召開調(diào)查會、邀請專人介紹、設(shè)計(jì)調(diào)查表并請用戶填寫、查閱業(yè)務(wù)相關(guān)記錄等。
常用的需求分析方法有:調(diào)查客戶的單位組織情況、各部門的業(yè)務(wù)需求情況、協(xié)助客戶分析系統(tǒng)的各種業(yè)務(wù)需求、確定新系統(tǒng)的邊界。無論數(shù)據(jù)庫的大小和復(fù)雜程序如何,在進(jìn)行數(shù)據(jù)庫的系統(tǒng)分析時,都可以參考下列基本步驟:收集信息、標(biāo)識實(shí)體、標(biāo)識每個對象需要存儲的詳細(xì)信息、標(biāo)識對象之間的關(guān)系。
2.概要設(shè)計(jì)階段
主要是繪制E-R圖,用于在項(xiàng)目團(tuán)隊(duì)內(nèi)部、設(shè)計(jì)人員和客戶之間進(jìn)行溝通,確認(rèn)需求信息的正確和完整。
在需求階段解決了客戶的業(yè)務(wù)和數(shù)據(jù)處理需求后,就進(jìn)入了概要設(shè)計(jì)階段,此時需要和項(xiàng)目團(tuán)隊(duì)的其他成員以及客戶溝通,討論數(shù)據(jù)庫的設(shè)計(jì)是否滿足客戶的業(yè)務(wù)和數(shù)據(jù)處理需求。與機(jī)械行業(yè)需要機(jī)械制圖、建筑行業(yè)需要施工圖紙一樣,數(shù)據(jù)庫設(shè)計(jì)也需要圖形化的表達(dá)式——E-R實(shí)體關(guān)系圖,它也包括一些具有特定含義的圖形符號,分兩個步驟完成:
◆確定“實(shí)體-關(guān)系”模型;
◆繪制E-R圖。
3.邏輯設(shè)計(jì)階段
將E-R圖轉(zhuǎn)換為多張表,進(jìn)行邏輯設(shè)計(jì),確認(rèn)各表的主外鍵,并應(yīng)用數(shù)據(jù)數(shù)據(jù)庫的3大規(guī)范進(jìn)行審核。
(1)將E-R圖轉(zhuǎn)換為表。
◆將各實(shí)體轉(zhuǎn)換為對應(yīng)的表,將各屬性轉(zhuǎn)換為各表的對應(yīng)的列。
◆標(biāo)識每個表的主鍵列,需要注意的是:對沒有主鍵的表添加ID編號列,它沒有實(shí)際含義,只用作主健或外鍵。
◆在表之間體現(xiàn)實(shí)體之間的映射關(guān)系。
(2)規(guī)范設(shè)計(jì)要求
◆第一范式(1NF)。第一范式的目標(biāo)是確保每列的原子性,即每個列都是不可分的最小數(shù)據(jù)單元。
◆第二范式(2NF)。第二范式在第一范式的基本上,更進(jìn)一層,其目標(biāo)是確保表中的每列都和主鍵相關(guān):如果一個關(guān)系滿足了第一范式(1NF),并且除了主鍵以外的其他列,都依賴于該主鍵,則滿足第二范式(2NF)。
◆第三范式(3NF)。第三范式在第二范式的基礎(chǔ)上,更進(jìn)一層,第三范式的目標(biāo)是確保每列都和主鍵直接相關(guān),而不是間接相關(guān);如果一個關(guān)系滿足不了第二范式(2NF),并且除了主鍵(或組合鍵)以外的其他列都不依賴于主鍵(或組合鍵),則滿足第三范式(3NF)。
4.物理設(shè)計(jì)階段
邏輯數(shù)據(jù)模型要選取一個具體的工作環(huán)境,這個工作環(huán)境提供了數(shù)據(jù)存儲結(jié)構(gòu)與存取方法,這個過程就是數(shù)據(jù)庫的物理設(shè)計(jì)。物理結(jié)構(gòu)依賴于給定的DBMS和和硬件系統(tǒng),因此設(shè)計(jì)人員必須充分了解所用RDBMS的內(nèi)部特征、存儲結(jié)構(gòu)、存取方法。數(shù)據(jù)庫的物理設(shè)計(jì)通常分為兩步,第一,確定數(shù)據(jù)庫的物理結(jié)構(gòu),第二,評價(jià)實(shí)施空間效率和時間效率。數(shù)據(jù)庫物理設(shè)計(jì)過程中需要對時間效率、空間效率、維護(hù)代價(jià)和各種用戶要求進(jìn)行權(quán)衡,選擇一個優(yōu)化方案作為數(shù)據(jù)庫物理結(jié)構(gòu)。在數(shù)據(jù)庫物理設(shè)計(jì)中,最有效的方式是集中地存儲和檢索對象。物理設(shè)計(jì)完成之后,就應(yīng)該得到詳細(xì)的磁盤分配方案、存儲方案、各種基表的詳細(xì)信息等。根據(jù)這些信息就可以建立數(shù)據(jù)庫了。
5.數(shù)據(jù)庫實(shí)施階段
數(shù)據(jù)庫的實(shí)施,就是組織數(shù)據(jù)入庫、編制應(yīng)用程序、試運(yùn)行。包括建立數(shù)據(jù)庫、創(chuàng)建數(shù)據(jù)表、增加約束和創(chuàng)建視圖、觸發(fā)器和存儲過程等。為了完成相應(yīng)的操作和檢索,需要編制很多程序,形成一個程序系統(tǒng)來使用該數(shù)據(jù)庫,這部分是程序設(shè)計(jì)的任務(wù)。一切就緒之后,就可以試運(yùn)行數(shù)據(jù)庫了。
6.系統(tǒng)管理和維護(hù)
數(shù)據(jù)庫試運(yùn)行結(jié)果符合設(shè)計(jì)目標(biāo)后就可以真正投入運(yùn)行了。數(shù)據(jù)庫投入運(yùn)行標(biāo)志著開發(fā)任務(wù)基本完成和維護(hù)工作開始,并不意味著設(shè)計(jì)過程的終結(jié)。由于應(yīng)用環(huán)境在不斷地變化,數(shù)據(jù)庫運(yùn)行過程中物理存儲也不會不斷變化。對數(shù)據(jù)庫設(shè)計(jì)進(jìn)行評價(jià)、調(diào)整、修改等維護(hù)工作是一項(xiàng)長期的任務(wù),也是設(shè)計(jì)工作的繼續(xù)和改進(jìn)。
結(jié)論
總之,我們在進(jìn)行數(shù)據(jù)庫設(shè)計(jì)時,每個階段都要認(rèn)真、全面的分析。設(shè)計(jì)的結(jié)果既能滿足應(yīng)用系統(tǒng)的業(yè)務(wù)需求,準(zhǔn)確的表達(dá)數(shù)據(jù)間關(guān)系,又能保證數(shù)據(jù)的準(zhǔn)確性和一致性,提高數(shù)據(jù)的查詢效率,有好的擴(kuò)展性,在必要時能根據(jù)需求擴(kuò)展數(shù)據(jù)結(jié)構(gòu)。