姚萬鵬
摘 要
在信息技術(shù)發(fā)展迅速的時代,數(shù)據(jù)庫技術(shù)的應(yīng)用也日益廣泛。鑒于此,本文主要對數(shù)據(jù)庫設(shè)計應(yīng)遵循的原則、數(shù)據(jù)編程及實踐情況等相關(guān)問題進(jìn)行了分析,以期為同行提供參考或借鑒。
【關(guān)鍵詞】軟件開發(fā) 數(shù)據(jù)庫設(shè)計 理論 實踐
在數(shù)據(jù)管理活動中,數(shù)據(jù)庫是最新的技術(shù)之一,具有冗余度最低、結(jié)構(gòu)優(yōu)化、方便補(bǔ)充及數(shù)據(jù)獨立等優(yōu)點,被認(rèn)為是大多數(shù)信息系統(tǒng)開發(fā)的前提,故在很多領(lǐng)域中得到了廣泛應(yīng)用。
1 數(shù)據(jù)庫設(shè)計的遵循原則
1.1 規(guī)范命名
不同的數(shù)據(jù)庫產(chǎn)品,其命名也應(yīng)各不相同。設(shè)計時,應(yīng)使用大小寫字母的標(biāo)識方法,包括后臺程序代碼,且命名字符應(yīng)不超過30個。
1.2 避免數(shù)據(jù)冗余
盡可能減少數(shù)據(jù)庫中的冗余數(shù)據(jù),且要避免出現(xiàn)重復(fù)字段,以免操作時造成數(shù)據(jù)不一致。
1.3 對數(shù)據(jù)庫性能進(jìn)行調(diào)整
在設(shè)計數(shù)據(jù)庫時,設(shè)計人員通常會使用這兩種方法:
1.3.1 物理設(shè)計數(shù)據(jù)庫
主要是對內(nèi)部物理結(jié)構(gòu)進(jìn)行調(diào)整,然后選擇最優(yōu)的存取路徑,加快訪問速度,進(jìn)一步提高空間利用率。
1.3.2 邏輯設(shè)計數(shù)庫
通過對數(shù)據(jù)庫性能進(jìn)作出調(diào)整,使連接運算進(jìn)一步減少,有利于保持各個關(guān)系數(shù)量的合理水平,最終達(dá)到提高存取效率的效果。
1.4 禁用游標(biāo)
除非是個別要求,否則一般情況需禁用游標(biāo)。若使用游標(biāo)集合大數(shù)據(jù),程序極可能發(fā)生死機(jī)、等待的情況。若要使用游標(biāo),可考慮建立臨時表,在表內(nèi)輸入需要的數(shù)據(jù)后再行游標(biāo)處理,這可有效提升游標(biāo)性能。
1.5 一致性與完整性
為了保證數(shù)據(jù)庫中數(shù)據(jù)的一致性與完整性,可通過使用主鍵與外鍵、check達(dá)到這個目標(biāo)。
2 數(shù)據(jù)庫編程
標(biāo)準(zhǔn)SQL屬于一種非過程化查詢語言,功能豐富、操作統(tǒng)一、使用簡單。以下主要對應(yīng)用系統(tǒng)中嵌入式ODBC、SQL及PL/SQL編程的相關(guān)問題進(jìn)行分析。
2.1 嵌入式SQL
在程序語言中嵌入SQL語句,即為嵌入式SQL。比如,Java、C及C++稱為宿主語言,也稱主語言。
2.2 存儲過程
基本的SQL屬于高度非過程化語言。PL/SQL程序以塊為基本結(jié)構(gòu),塊和塊之間可相互嵌套,每個塊能完成一個邏輯操作。PL/SQL具有過程化語句功能,可起到擴(kuò)展SQL的作用。存儲主要包括創(chuàng)建、執(zhí)行與刪除這幾個環(huán)節(jié)。存儲過程進(jìn)行編譯與優(yōu)化后,可存儲于數(shù)據(jù)庫服務(wù)器,達(dá)到高效運行的效果,不但使客戶機(jī)與服務(wù)器間的通信量下降,且有利于控制和維護(hù)。
2.3 ODBC編程
根據(jù)ODBC開發(fā)的應(yīng)用系統(tǒng),可分為用戶應(yīng)用程序、數(shù)據(jù)庫驅(qū)動程序、驅(qū)動程序管理器及數(shù)據(jù)源這幾個部分。該類應(yīng)用系統(tǒng),主要的工作流程為:
2.3.1 數(shù)據(jù)源的配置
對數(shù)據(jù)源的配置,常用方法有兩種:
(1)使用數(shù)據(jù)源管理工具完成配置;
(2)利用ConfigDsn函數(shù)修改、刪除或增加數(shù)據(jù)源。
2.3.2 對環(huán)境進(jìn)行初始化處理
Driver Manager主要用于控制與配置環(huán)境屬性,并未關(guān)聯(lián)具體驅(qū)動程序。當(dāng)應(yīng)用程序調(diào)用連接函數(shù),并連接某個數(shù)據(jù)源后,才可調(diào)用選擇的驅(qū)動程序中的的SQLAlloc Handle,實現(xiàn)對環(huán)境句柄數(shù)據(jù)結(jié)構(gòu)的真正分配。
2.3.3 建立連接
與數(shù)據(jù)源連接后,可實現(xiàn)對應(yīng)用程序與連接句病的分配,并需要在已經(jīng)設(shè)置好的用戶名ID、數(shù)據(jù)源名稱與口令中輸入?yún)?shù)。
2.3.4 語句句柄的分配
在對SQL所有語句進(jìn)行處理前,應(yīng)用程序需先分配有1個語句句柄。在語句句柄中,必須包含真實的SQL語句、輸出結(jié)果集等重要信息。在后期執(zhí)行的函數(shù)中,要求語句句柄為必要性輸入?yún)?shù)。
2.3.5 SQL語句的執(zhí)行
應(yīng)用程序?qū)QL語句的處理方式,主要有2種,分別是直接執(zhí)行、預(yù)處理。如果SQL含參數(shù),可對SQL Bind Parameter進(jìn)行調(diào)用,并綁定至應(yīng)用程序變量。
2.3.6 對結(jié)果集的處理
2.3.7 中止處理
3 實踐要點分析
進(jìn)行數(shù)據(jù)庫設(shè)計。最終目的是為用戶與操作系統(tǒng)營造高效的運行環(huán)境。數(shù)據(jù)庫設(shè)計,從規(guī)范角度來說可分成6個階段。
3.1 需求分析
這是數(shù)據(jù)庫設(shè)計第一階段,也是最重要階段。進(jìn)行數(shù)據(jù)庫設(shè)計,首要工作是對用戶需求有較精準(zhǔn)的了解。在該階段,需進(jìn)行分析的需求主要包括這些,如信息需求、安全性與完整性需求、處理要求。這些需求反映的是用戶基本需求,通過它們可獲取到一些有用的數(shù)據(jù)信息,如數(shù)據(jù)定義、類型等。
3.2 概念結(jié)構(gòu)的設(shè)計
該環(huán)節(jié)也是數(shù)據(jù)庫設(shè)計的關(guān)鍵部分。其中,最重要的則是找出數(shù)據(jù)間的內(nèi)在關(guān)聯(lián),并對用戶需求進(jìn)行歸納與總結(jié),形成一個抽象的概念模型。在實踐過程中,以視圖集成設(shè)計、集中式模式設(shè)計這兩種方法為主。前者主要是先分解一個單位,再對局部各個部分進(jìn)行分解,最后建立起每個部分視圖,在視圖基礎(chǔ)上集成。后者是以需求為基礎(chǔ),由一個統(tǒng)一機(jī)構(gòu)或者操作人員設(shè)計出綜合的全局模式,多適用于復(fù)雜程度較低的企事業(yè)單位軟件產(chǎn)品的設(shè)計中。
3.3 邏輯結(jié)構(gòu)設(shè)計
在該環(huán)節(jié)中,對外模式關(guān)系的設(shè)計十分重要。具體而言,主要包括三個方面的內(nèi)容:
(1)數(shù)據(jù)具有邏輯獨立性時,軟件成品受邏輯模式的影響較小。
(2)可滿足用戶對不同數(shù)據(jù)的需求。因為大多數(shù)據(jù)庫結(jié)構(gòu)巨大,當(dāng)發(fā)送用戶需求時,可自動將用戶不需要的模式屏蔽,僅呈現(xiàn)需要的模式。
(3)應(yīng)融入保密功能。當(dāng)用戶獲取數(shù)據(jù)時,不相關(guān)數(shù)據(jù)會被屏蔽,用戶只能看到需要的數(shù)據(jù)。
3.4 物理設(shè)計
該環(huán)節(jié)的工作內(nèi)容主要是調(diào)整數(shù)據(jù)庫內(nèi)的物理結(jié)構(gòu),并合理選擇存儲路徑,多采用集簇、索引設(shè)計與分區(qū)設(shè)計的方式。
3.5 驗證設(shè)計
在設(shè)計或建立每一個數(shù)據(jù)庫時,往往需要進(jìn)行反復(fù)驗證。假如數(shù)據(jù)庫內(nèi)步驟或者數(shù)據(jù)被損壞或者出錯,必須及時校正,并盡快恢復(fù)正常。
3.6 軟件運行與維護(hù)
這是最后一個環(huán)節(jié)。當(dāng)數(shù)據(jù)正式運行后,應(yīng)經(jīng)常對其進(jìn)行調(diào)整與維護(hù)。
4 小結(jié)
由上述可知,軟件開發(fā)的數(shù)據(jù)庫設(shè)計是一項非常重要的工作,與整個系統(tǒng)后期的穩(wěn)定運行密切相關(guān)。在進(jìn)行數(shù)據(jù)庫設(shè)計時,應(yīng)遵循相關(guān)原則,并在對各種關(guān)系數(shù)據(jù)庫進(jìn)行有效處理,以提高數(shù)據(jù)庫設(shè)計與應(yīng)用的合理性。
參考文獻(xiàn)
[1]賈榮秀,周楊.軟件開發(fā)中數(shù)據(jù)庫設(shè)計理論的思考[J].信息與電腦,2016(09):119-120.