專利名稱:一種減少數(shù)據(jù)庫冗余的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)庫中的數(shù)據(jù)處理方法,特別是一種減少數(shù)據(jù)庫冗 余的方法。
背景技術(shù):
一般在各類數(shù)據(jù)庫管理系統(tǒng)中,都要設(shè)計(jì)成許多數(shù)據(jù)庫。通常數(shù) 據(jù)庫中個(gè)字段的名稱、類型、寬度都是根據(jù)用戶的實(shí)際需要在系統(tǒng)開 發(fā)時(shí)設(shè)計(jì)完成的,系統(tǒng)運(yùn)行時(shí)大多不會(huì)改變數(shù)據(jù)庫的結(jié)構(gòu)類型。系統(tǒng) 設(shè)計(jì)中如果數(shù)據(jù)庫中字段的類型、寬度大小設(shè)計(jì)不合適,將會(huì)造成大 量的數(shù)據(jù)空間的浪費(fèi)。VFP數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫的特性是,當(dāng)增加一條數(shù)據(jù)庫記錄時(shí), 即使沒有輸入任何數(shù)據(jù),也要占用相當(dāng)?shù)拇疟P空間。因?yàn)樵谠O(shè)計(jì)一個(gè) 數(shù)據(jù)庫結(jié)構(gòu)時(shí),每個(gè)字段都要考慮最大輸入情況,這樣即使大多數(shù)記 錄的數(shù)據(jù)內(nèi)容不多,也要占用同樣多的數(shù)據(jù)空間。當(dāng)一個(gè)數(shù)據(jù)庫中的 記錄數(shù)非常大時(shí),就會(huì)造成大量磁盤空間的浪費(fèi)。當(dāng)在VFP6系統(tǒng)中建立一個(gè)數(shù)據(jù)表時(shí),如果數(shù)據(jù)表中存在一個(gè)以上的備注字段,將會(huì)產(chǎn)生一個(gè)與該數(shù)據(jù)表同名的備注文件,后綴為.FPT。 當(dāng)其中一個(gè)字段數(shù)據(jù)的類型為備注型(M)時(shí),該數(shù)據(jù)表就會(huì)為備注字段預(yù)留4個(gè)字節(jié)作為其字段的特殊數(shù)據(jù),這4個(gè)字節(jié)并不是用來保存 數(shù)據(jù)的,而是用來存放該條記錄的備注字段數(shù)據(jù)在備注文件(.FPT) 中的位置,它相當(dāng)于一個(gè)指針,負(fù)責(zé)指出該記錄備注字段的數(shù)據(jù)庫存 放在備注文件中的位置。備注文件中包含一個(gè)頭記錄以及任意數(shù)目的 快結(jié)構(gòu)。頭記錄中包含指向下一個(gè)子有塊的指針以及以字節(jié)為單位表 示塊的大小。頭記錄之后是包含塊標(biāo)頭與備注文本的各個(gè)塊,表文件 中包含有用于引用備注塊的塊編號(hào)。備注文件中某個(gè)塊的位置可由該 塊的編號(hào)與塊的大小相乘得到。所有的備注塊均由偶數(shù)的塊邊界地址 開始。每一備注塊可以占用一個(gè)以上的連續(xù)塊。備注塊是備注字段的 最小處理單位。在每個(gè)備注塊前面的8個(gè)字節(jié)是系統(tǒng)占用的,這8個(gè) 字節(jié)前四個(gè)字節(jié)指明塊中數(shù)據(jù)的類型,第5到第8個(gè)字節(jié)代表該備注 字段的長度,這樣,當(dāng)我們?cè)O(shè)置備注塊大小為64時(shí)(系統(tǒng)默認(rèn)長度為 64),每個(gè)備注塊實(shí)際只能存放64-8=56個(gè)字節(jié)。當(dāng)存放的數(shù)據(jù)大于 56個(gè)字節(jié)時(shí),將會(huì)增加一個(gè)備注塊。因此,當(dāng)我們建立一個(gè)數(shù)據(jù)表時(shí),應(yīng)根據(jù)數(shù)據(jù)表存放數(shù)據(jù)的內(nèi)容來確定備注塊的大小,系統(tǒng)默認(rèn)的備注 塊大小為64個(gè)字節(jié),使用設(shè)置命令SET BLOCK-SIZE TO nBytes指定 系統(tǒng)為備注字段分配磁盤空間的塊的大小,如果nBytes等于O,磁盤 空間按單個(gè)字節(jié)分配,如果nBytes為1-32之間的一個(gè)整數(shù),系統(tǒng)分 配磁盤空間塊大小為nBytes乘以512, nBytes值大于32,系統(tǒng)將會(huì) 將nBytes看做備注塊的大小。一般情況下,可以通過mline ()讀取備注中某一行中的數(shù)據(jù)值,而備注字段每一行的字符大小可以通過SET MEMOWIDTH TO nColumns 來指定備注字段的寬度,這個(gè)nColumns值得大小在8到8192之間, 用戶可以根據(jù)數(shù)據(jù)庫中某一寬度最大字符型字段的寬度設(shè)置這個(gè)值, 如在數(shù)據(jù)庫中家庭住址為最大值,最多需要60個(gè)字符寬度,那么我們 可以把nColumns的設(shè)置為60,這樣就完成了對(duì)備注字段的設(shè)置。發(fā)明內(nèi)容本發(fā)明的目的是提供一種減少數(shù)據(jù)庫冗余的方法,主要解決現(xiàn)有 數(shù)據(jù)庫在字段設(shè)置中容易產(chǎn)生大量冗余的技術(shù)問題,提高了數(shù)據(jù)庫對(duì) 存儲(chǔ)空間的利用率。為解決上述技術(shù)問題,本發(fā)明是這樣實(shí)現(xiàn)的一種減少數(shù)據(jù)庫冗余的方法,其特征在于該設(shè)計(jì)的數(shù)據(jù)庫中, 設(shè)計(jì)一個(gè)備注字段用來存放用戶需要保存、字符寬度比較大的多個(gè)字 符型字段內(nèi)容,通過程序控制分別把輸入的數(shù)據(jù)保存在備注字段中的 某一行并在數(shù)據(jù)后加入特殊字符,這樣就保證了每一個(gè)字段內(nèi)容對(duì)應(yīng) 于備注字段中的特殊字符之間記錄內(nèi)容。所述的的減少數(shù)據(jù)庫冗余的方法,其特征在于其特征在于該特殊字符時(shí)回車換行字符。藉由上述技術(shù)方案,本發(fā)明具有的技術(shù)效果是 通過本發(fā)明方法,保證了在備注字段中只存放有用的數(shù)據(jù)內(nèi)容,而不保存后綴空格等無用信息,當(dāng)大寬度字符型字段比較多并且數(shù)據(jù)庫的記錄數(shù)非常大時(shí),利用這種方法減少數(shù)據(jù)冗余效果更加明顯。
具體實(shí)施方式
以下通過一個(gè)簡單的實(shí)施例來演示本發(fā)明方法一個(gè)數(shù)據(jù)庫,包括姓名、性別、其它內(nèi)容三個(gè)字段,這里姓名、 性別為字符型,寬度分別為8和2,其它內(nèi)容設(shè)為備注類型,存放工 作人員的聯(lián)系電話、工作單位、家庭住址、通信地址等內(nèi)容,設(shè)計(jì)完 成后,增加一條空記錄內(nèi)容。新建一個(gè)表單,表單中的姓名、性別編輯框?qū)?yīng)于數(shù)據(jù)庫中相應(yīng) 的數(shù)據(jù)字段,在表單中的INIT時(shí)間中寫入如下代碼SET MEMO-WIDTH TO 60狄以下為編輯框提取數(shù)據(jù)內(nèi)容;Thisform. text3. value:MLINE (其它內(nèi)容,1)Thisform. text4. value=MUNE (其它內(nèi)容,2)Thisform. text5. value=MLINE (其它內(nèi)容,3)Thisform. text6. value=MLINE (其它內(nèi)容,4)在聯(lián)系電話、工作單位、家庭住址、通信地址編輯框中的LOSTFOCUS 事件中分別寫入如下代碼NRW=1 &&表明該字段內(nèi)容為備注字段中第幾條內(nèi)容,1代表聯(lián)系 電話,2代表工作單位,3代表家庭住址,4代表通信地址;NR="FOR 1=1 TO 4 &&代碼共有4個(gè)字段內(nèi)容取自備注字段,用戶可 根據(jù)情況來設(shè)定; IF I=NRWZNR=NR+ALLT (THIS. VALUE) +CHR (13) ELSENR二NR+MLINE(其它內(nèi)容,1)+C服(13)ENDIFENFFORREPL其它內(nèi)容WITH NR運(yùn)行這個(gè)表單可以看到,輸入在編輯框中的數(shù)據(jù)將會(huì)保存在備注 字段中,下次運(yùn)行時(shí)刻將備注字段中的內(nèi)容取出來,這樣就減少了磁 盤的運(yùn)用空間。綜上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用來限定本發(fā)明的 實(shí)施范圍。即凡依本發(fā)明申請(qǐng)專利范圍的內(nèi)容所作的等效變化與修飾, 都應(yīng)為本發(fā)明的技術(shù)范疇。
權(quán)利要求
1. 一種減少數(shù)據(jù)庫冗余的方法,其特征在于該設(shè)計(jì)的數(shù)據(jù)庫中,設(shè)計(jì)一個(gè)備注字段用來存放用戶需要保存、字符寬度比較大的多個(gè)字符型字段內(nèi)容,通過程序控制分別把輸入的數(shù)據(jù)保存在備注字段中的某一行并在數(shù)據(jù)后加入特殊字符,這樣就保證了每一個(gè)字段內(nèi)容對(duì)應(yīng)于備注字段中的特殊字符之間記錄內(nèi)容。
2、 根據(jù)權(quán)利要求1所述的的減少數(shù)據(jù)庫冗余的方法,其特征在 于其特征在于該特殊字符時(shí)回車換行字符。
全文摘要
本發(fā)明涉及數(shù)據(jù)庫中的數(shù)據(jù)處理方法,特別是一種減少數(shù)據(jù)庫冗余的方法。該設(shè)計(jì)的數(shù)據(jù)庫中,設(shè)計(jì)一個(gè)備注字段用來存放用戶需要保存、字符寬度比較大的多個(gè)字符型字段內(nèi)容,通過程序控制分別把輸入的數(shù)據(jù)保存在備注字段中的某一行并在數(shù)據(jù)后加入特殊字符,這樣就保證了每一個(gè)字段內(nèi)容對(duì)應(yīng)于備注字段中的特殊字符之間記錄內(nèi)容。本方法主要解決現(xiàn)有數(shù)據(jù)庫在字段設(shè)置中容易產(chǎn)生大量冗余的技術(shù)問題,提高了數(shù)據(jù)庫對(duì)存儲(chǔ)空間的利用率。
文檔編號(hào)G06F17/30GK101241487SQ20071003713
公開日2008年8月13日 申請(qǐng)日期2007年2月5日 優(yōu)先權(quán)日2007年2月5日
發(fā)明者王曉崎, 敏 項(xiàng) 申請(qǐng)人:上海市民辦文綺中學(xué);項(xiàng) 敏