摘要:文章針對(duì)數(shù)據(jù)層存儲(chǔ)方案設(shè)計(jì)問(wèn)題,討論了軟件開發(fā)生命周期中幾大階段與數(shù)據(jù)存儲(chǔ)設(shè)計(jì)的關(guān)系及每階段的內(nèi)容、成果輸出,最后,舉例分析了數(shù)據(jù)存儲(chǔ)方案設(shè)計(jì)過(guò)程中需要遵守的重要準(zhǔn)則以及核心要點(diǎn)。
關(guān)鍵詞:實(shí)體模型;E-R關(guān)系;概念設(shè)計(jì);范式原則
數(shù)據(jù)庫(kù)設(shè)計(jì)涉及信息系統(tǒng)的性能、效率、安全等方面,好的設(shè)計(jì)方案能極大地減輕實(shí)施階段的工作量,減少運(yùn)維的成本與投入。數(shù)據(jù)庫(kù)設(shè)計(jì)需要從數(shù)據(jù)模型、負(fù)載、數(shù)據(jù)存儲(chǔ)量、并發(fā)數(shù)等方面著手考慮,需要遵守相關(guān)的原則與規(guī)范。
1 數(shù)據(jù)模型
數(shù)據(jù)模型是數(shù)據(jù)存儲(chǔ)方案設(shè)計(jì)過(guò)程中首要考慮的問(wèn)題,模型是對(duì)客觀事物的模擬描述,模型既是了解事物本質(zhì)的需要,也是與不同角色人員間溝通討論解決方案的重要工具。數(shù)據(jù)建模作為數(shù)據(jù)存儲(chǔ)設(shè)計(jì)的第一步,其輸出結(jié)果就是得到符合實(shí)際需求的數(shù)據(jù)模型,再進(jìn)而得到可實(shí)施的執(zhí)行方案。在理論上來(lái)說(shuō),一個(gè)完整數(shù)據(jù)模型包括結(jié)構(gòu)、操作、約束3個(gè)方面[2]。
(1)結(jié)構(gòu):是指數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),如模型中的存儲(chǔ)項(xiàng)以及每個(gè)項(xiàng)的類型,以及存儲(chǔ)結(jié)構(gòu)所占據(jù)的存儲(chǔ)空間的大小及存儲(chǔ)空間所在位置區(qū)域等方面。
(2)操作:是指外部對(duì)存儲(chǔ)結(jié)構(gòu)的讀或?qū)懛矫娴牟僮?,或者增、刪、改、查的數(shù)據(jù)交互過(guò)程。
(3)約束:是指數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)內(nèi)部數(shù)據(jù)項(xiàng)的限制條件,如數(shù)據(jù)項(xiàng)各種類型的長(zhǎng)度、大小,不同存儲(chǔ)結(jié)構(gòu)間數(shù)據(jù)項(xiàng)的依賴關(guān)系等。
在數(shù)據(jù)存儲(chǔ)領(lǐng)域,存儲(chǔ)結(jié)構(gòu)中存在眾多的數(shù)據(jù)存儲(chǔ)模型,其中相對(duì)成熟的數(shù)據(jù)模型有如下幾種。
(l)層次模型:也叫樹狀模型,模型中有一個(gè)根節(jié)點(diǎn),然后在這個(gè)節(jié)點(diǎn)下生成眾多的葉子分支。
(2)網(wǎng)狀模型:模型中的實(shí)體節(jié)點(diǎn)縱橫交錯(cuò)的發(fā)生關(guān)聯(lián)關(guān)系,實(shí)體之間沒(méi)有主次、子父之分,呈現(xiàn)一個(gè)板平的網(wǎng)狀。
(3)關(guān)系模型:以平面表為基礎(chǔ),表中有行與列,其中列定義的是存儲(chǔ)結(jié)構(gòu)的數(shù)據(jù)項(xiàng),行代表的是存儲(chǔ)結(jié)構(gòu)中的數(shù)據(jù)記錄,是目前關(guān)系數(shù)據(jù)庫(kù)中的普遍形式。
2 數(shù)據(jù)庫(kù)設(shè)計(jì)過(guò)程
數(shù)據(jù)存儲(chǔ)方案設(shè)計(jì)是軟件開發(fā)生命周期的概要設(shè)計(jì)階段必須考慮的問(wèn)題,從應(yīng)用程序的運(yùn)行數(shù)據(jù)持久化需求著手到最終數(shù)據(jù)庫(kù)環(huán)境的建立,大概包含以下幾個(gè)方面的過(guò)程[4],每個(gè)方面的工作內(nèi)容及成果輸出如圖1所示。
(l)概念定義:是數(shù)據(jù)存儲(chǔ)方案定義的初始階段,在這一過(guò)程主要是對(duì)客戶業(yè)務(wù)功能教據(jù)需求的歸納,得到業(yè)務(wù)的概念模型。概念模型是一個(gè)對(duì)客觀事物抽象表述且與技術(shù)無(wú)關(guān)的模型,是設(shè)計(jì)人員與客戶交流模型工具。通過(guò)概念模型可以清楚地展示數(shù)據(jù)層的存儲(chǔ)功能。
(2)邏輯定義:是對(duì)概念模型的實(shí)現(xiàn)方案的定義,是數(shù)據(jù)存儲(chǔ)層的一種實(shí)現(xiàn)思想,定義存儲(chǔ)模型中的相關(guān)內(nèi)在實(shí)現(xiàn),對(duì)應(yīng)的成果輸出是邏輯模型。
(3)物理定義:是根據(jù)數(shù)據(jù)存儲(chǔ)方案的邏輯實(shí)現(xiàn)思想定義出具體的數(shù)據(jù)庫(kù)存儲(chǔ)環(huán)境,包括可運(yùn)行數(shù)據(jù)庫(kù)運(yùn)行腳本、表空間的分配、觸發(fā)器、存儲(chǔ)過(guò)程、視圖等方面的建立。
3 范式原則
關(guān)系數(shù)據(jù)庫(kù)范式原則是進(jìn)行數(shù)據(jù)存儲(chǔ)設(shè)計(jì)的一個(gè)重要準(zhǔn)則,范式設(shè)計(jì)原則將直接指向數(shù)據(jù)庫(kù)中表的字段定義、字段關(guān)系、記錄唯一性標(biāo)識(shí)是否合理。當(dāng)前在關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)中存在6種范式原則,其中基礎(chǔ)的原則有3種,分別是:第一范式(INF)、第二范式(2NF)、第三范式(3NF)[5],如圖2所示。
(1)INF:要求數(shù)據(jù)表中字段不可再分,且字段只能單值存儲(chǔ)。這是最基本的范式原則,所有數(shù)據(jù)表都必須滿足這一條,否則關(guān)系數(shù)據(jù)庫(kù)將不支持所設(shè)計(jì)的數(shù)據(jù)模型。如果一個(gè)“電話”字段可以拆分成“手機(jī)”與“座機(jī)”兩個(gè)屬性,或者在同一條記錄中“電話”屬性字段存儲(chǔ)了兩個(gè)值,都是不符合該范式的設(shè)計(jì)要求[6]。
(2) 2NF:要求每個(gè)數(shù)據(jù)實(shí)體中必須有唯一標(biāo)識(shí),如果唯一標(biāo)識(shí)為聯(lián)合標(biāo)識(shí),則其他普通屬性不能存在對(duì)聯(lián)合標(biāo)識(shí)的部分依賴。本范式解決的是數(shù)據(jù)表中的唯一標(biāo)識(shí)問(wèn)題,及非主屬性對(duì)碼的部分依賴。如一個(gè)表中有:“開戶人”“開戶銀行”“開戶人聯(lián)系電話”“開戶行地址”“帳戶余額”等字段,其中“開戶人,“‘開戶銀行”為聯(lián)合標(biāo)識(shí)(聯(lián)合主鍵),因普通屬性“開戶人聯(lián)系電話”卻依賴“開戶人屬性,“開戶行地址”屬性依賴“開戶行”屬性,因而存在普通屬性對(duì)聯(lián)合標(biāo)識(shí)的部分依賴,不符合該要求。
(3)3NF:要求數(shù)據(jù)實(shí)體的普通屬性間不能存在傳遞依賴,本范式所要解決的是普通屬性的互相依賴問(wèn)題。如一個(gè)表中有如下屬性:“職工號(hào)”“職工姓名”“所屬部門”“部門辦公電話”“部門經(jīng)理”因?yàn)槠胀▽傩浴安块T辦公電話”“部門經(jīng)理”“所屬部門”三者間存在依賴關(guān)系,“所屬部門”屬性可直接決定“部門辦公電話”與“部門經(jīng)理”,因而數(shù)據(jù)表該不符合該要求。
4 性能與理論范式平衡點(diǎn)
數(shù)據(jù)庫(kù)領(lǐng)域有兩種崗位,一種是數(shù)據(jù)庫(kù)管理員崗位( DatabaseAdministrator,DBA),另一種是數(shù)據(jù)庫(kù)編程開發(fā)人員崗位(Database Programming,DBP),作為數(shù)據(jù)庫(kù)管理員,希望所有的存儲(chǔ)方案能盡可能是范式原則理想狀態(tài)下最佳實(shí)現(xiàn),以便以日后數(shù)據(jù)維護(hù)方便、清晰;而作為一名數(shù)據(jù)庫(kù)開發(fā)人員,在為應(yīng)用系統(tǒng)設(shè)計(jì)存儲(chǔ)方案時(shí)(數(shù)據(jù)庫(kù)設(shè)計(jì)方案),總是希望盡可能地提高存儲(chǔ)方案性能與效率,但在提高性能與效率的同時(shí),總是不可避免地要以違反理論范式為代價(jià)。就如編程界在提高應(yīng)用程序?qū)崟r(shí)并發(fā)數(shù)量級(jí)與維護(hù)數(shù)據(jù)準(zhǔn)確性一樣,程序?qū)崟r(shí)并發(fā)數(shù)量級(jí)提高了,數(shù)據(jù)的準(zhǔn)確度就得不到保障,若要提升數(shù)據(jù)的精準(zhǔn)度,則不得不降低應(yīng)用系統(tǒng)的實(shí)時(shí)并發(fā)數(shù),究竟應(yīng)用程序?qū)崟r(shí)并發(fā)數(shù)量級(jí)與數(shù)據(jù)精準(zhǔn)度,誰(shuí)輕誰(shuí)重要,在業(yè)界沒(méi)有一個(gè)統(tǒng)一的標(biāo)準(zhǔn),但有一個(gè)重要原則就是根據(jù)實(shí)際需求來(lái)取舍兩者的權(quán)重。
同樣的道理在進(jìn)行數(shù)據(jù)數(shù)據(jù)庫(kù)存儲(chǔ)方案設(shè)計(jì)時(shí),并不能一概而論,是提升存儲(chǔ)方案的性能效率重要,還是保證理論范式原則完美、完整性重要;一般來(lái)說(shuō),在進(jìn)行表實(shí)體設(shè)計(jì)時(shí),為了提升性能,避免頻繁的表聯(lián)結(jié)操作,一般會(huì)考慮在主要業(yè)務(wù)實(shí)體中適當(dāng)冗余其他次要業(yè)務(wù)的關(guān)鍵信息,以降低表聯(lián)結(jié)操作對(duì)系統(tǒng)性能所造成的額外開銷。這雖然在一定程度上破壞了實(shí)體的范式原則,卻是允許和可接受的,特別是在大數(shù)據(jù)業(yè)務(wù)實(shí)體中,進(jìn)行響應(yīng)優(yōu)化時(shí)特別重要;當(dāng)然為了保證業(yè)務(wù)實(shí)體的科學(xué)合、理性,也不能完全拋開范式原理,一味追求性能,從而造成實(shí)體過(guò)分冗余而導(dǎo)致存儲(chǔ)方案變得非常糟糕而難以維護(hù)。
5 結(jié)語(yǔ)
數(shù)據(jù)存儲(chǔ)方案是信息系統(tǒng)開發(fā)必不可少的環(huán)節(jié),方案優(yōu)勢(shì)將會(huì)成為系統(tǒng)開發(fā)周期中的一個(gè)風(fēng)險(xiǎn)點(diǎn),合理的存儲(chǔ)方案將極大地降低開發(fā)過(guò)程中的風(fēng)險(xiǎn),反之則會(huì)極大地提升系統(tǒng)開發(fā)風(fēng)險(xiǎn)。數(shù)據(jù)存儲(chǔ)設(shè)計(jì)過(guò)程中既要考慮客戶的需求,同時(shí)也要考慮相關(guān)的理論原則,只有兩者相結(jié)合,才能提供合理、合格的存儲(chǔ)方案。
[參考文獻(xiàn)]
[1]姚萬(wàn)鵬.軟件開發(fā)中數(shù)據(jù)庫(kù)設(shè)計(jì)理論的實(shí)踐[J].電子技術(shù)與軟件工程,2016 (18):201
[2]黃輝.淺談數(shù)據(jù)庫(kù)設(shè)計(jì)與安全性策略[J]西部皮革,2016 (18):69.
[3]王慶利,王璐.計(jì)算機(jī)軟件數(shù)據(jù)庫(kù)設(shè)計(jì)的原則及應(yīng)用探究[J].數(shù)字技術(shù)與應(yīng)用,2016 (5):187
[4]溫立輝.數(shù)據(jù)庫(kù)高級(jí)應(yīng)用技術(shù)[M].北京:北京理工大學(xué)出版社,2016
[5]王延武.淺談數(shù)據(jù)庫(kù)設(shè)計(jì)方法[J].山東工業(yè)技術(shù),2016 (18):139.
[6]劉霜.數(shù)據(jù)庫(kù)設(shè)計(jì)對(duì)SQL Server數(shù)據(jù)庫(kù)性能優(yōu)化分析[J]中國(guó)新通信,2016 (15):3-4.
[7]姚萬(wàn)鵬.軟件開發(fā)中數(shù)據(jù)庫(kù)設(shè)計(jì)理論的實(shí)踐[J]電子技術(shù)與軟件工程,2016 (18):201