這篇文章主要介紹了大型數(shù)據(jù)庫設(shè)計所應(yīng)掌握的基本準(zhǔn)則,具體內(nèi)容請參考下文。
一個好的數(shù)據(jù)庫產(chǎn)品不等于就有一個好的應(yīng)用系統(tǒng),如果不能設(shè)計一個合理的數(shù)據(jù)庫模型,不僅會增加客戶端和服務(wù)器段程序的編程和維護的難度,而且將會影響系統(tǒng)實際運行的性能。一般來講,在一個MIS系統(tǒng)分析、設(shè)計、測試和試運行階段,因為數(shù)據(jù)量較小,設(shè)計人員和測試人員往往只注意到功能的實現(xiàn),而很難注意到性能的薄弱之處,等到系統(tǒng)投入實際運行一段時間后,才發(fā)現(xiàn)系統(tǒng)的性能在降低,這時再來考慮提高系統(tǒng)性能則要花費更多的人力物力,而整個系統(tǒng)也不可避免的形成了一個打補丁工程。筆者依據(jù)多年來設(shè)計和使用數(shù)據(jù)庫的經(jīng)驗,提出以下一些設(shè)計準(zhǔn)則,供同仁們參考。
命名的規(guī)范
---- 不同的數(shù)據(jù)庫產(chǎn)品對對象的命名有不同的要求,因此,數(shù)據(jù)庫中的各種對象的命名、后臺程序的代碼編寫應(yīng)采用大小寫敏感的形式,各種對象命名長度不要超過30個字符,這樣便于應(yīng)用系統(tǒng)適應(yīng)不同的數(shù)據(jù)庫。
游標(biāo)(Cursor)的慎用
---- 游標(biāo)提供了對特定集合中逐行掃描的手段,一般使用游標(biāo)逐行遍歷數(shù)據(jù),根據(jù)取出的數(shù)據(jù)不同條件進行不同的操作。尤其對多表和大表定義的游標(biāo)(大的數(shù)據(jù)集合)循環(huán)很容易使程序進入一個漫長的等特甚至死機,筆者在某市《住房公積金管理系統(tǒng)》進行日終帳戶滾積數(shù)計息處理時,對一個10萬個帳戶的游標(biāo)處理導(dǎo)致程序進入了一個無限期的等特(后經(jīng)測算需48個小時才能完成)(硬件環(huán)境:Alpha/4000 128Mram ,Sco Unix,Sybase 11.0),后根據(jù)不同的條件改成用不同的UPDATE語句得以在二十分鐘之內(nèi)完成。
| 以下為引用的內(nèi)容: Declare Mycursor cursor for select count_no from COUNT Open Mycursor Fetch Mycursor into @vcount_no While (@@sqlstatus=0) Begin If @vcount_no=’’ 條件1 操作1 If @vcount_no=’’ 條件2 操作2 ... Fetch Mycursor into @vcount_no End 改為 Update COUNT set 操作1 for 條件1 Update COUNT set 操作2 for 條件2 |
新聞熱點
疑難解答
圖片精選