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