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