摘要:數(shù)據(jù)模型常見有層次、網(wǎng)狀和關(guān)系三種模型,結(jié)合《某市農(nóng)業(yè)信息系統(tǒng)》的設(shè)計(jì)中遇到的層次型報(bào)表,該文研究了將層次型模型轉(zhuǎn)化為關(guān)系模型的三種方法,最終提出了基于樹型存儲(chǔ)法的字典目錄法數(shù)據(jù)存儲(chǔ)技術(shù),利用該技術(shù)實(shí)現(xiàn)了系統(tǒng)的成功開發(fā),證明了字典目錄法有效性。
關(guān)鍵詞:數(shù)據(jù)模型;層次型報(bào)表;存儲(chǔ)技術(shù)
中圖分類號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2008)25-1363-03
Based on the Level of Statements of the Data Storage Technology Research
JING Ya-qing1, SHI Yu-zhen2
(1. Dongying in Shandong Shengli Petroleum Geophysical Company Management, Qingdao 116029, China; 2. Pingdingshan University, Pingdingshan 467002, China)
Abstract: Date model usually has three forms which are level model, hierarchical model, network model and relational model Combining hierarchical models which exist in design of agriculture basic information system of a city, this paper researched three methods which convert hierarchical model to relational model and finally put forward a dictionary content data store technology based on tree model storing. Using this technology we successfully developed the system, and proved the efficience of dictionary content.
Key words: data model; the level of statements; storage technology
1 數(shù)據(jù)模型
數(shù)據(jù)庫是信息系統(tǒng)的核心和基礎(chǔ)。它把信息系統(tǒng)中的大量數(shù)據(jù)按照一定的模型組織起來,提供存儲(chǔ)、維護(hù)、檢索數(shù)據(jù)的功能,是信息系統(tǒng)可以方便、及時(shí)、準(zhǔn)確從數(shù)據(jù)庫中獲取所需的信息。一個(gè)信息系統(tǒng)的各個(gè)部分能否緊密的結(jié)合在一起以及如何結(jié)合,關(guān)鍵在數(shù)據(jù)庫。因此必須對(duì)數(shù)據(jù)庫進(jìn)行合理設(shè)計(jì)[1]。
1.1 常見數(shù)據(jù)模型
在數(shù)據(jù)庫系統(tǒng)中,主要的數(shù)據(jù)模型有[2]:層次模型(Hierarchical Model)、網(wǎng)狀模型(Network Model)和關(guān)系模型(Relational Model)。其中,應(yīng)用最廣泛的當(dāng)屬關(guān)系模型。
1.1.1 層次模型
層次模型:用樹型(層次)結(jié)構(gòu)表示實(shí)體類型及實(shí)體之間聯(lián)系的數(shù)據(jù)模型稱為層次模型。如圖1。層次結(jié)構(gòu)是一棵樹,樹的結(jié)點(diǎn)是記錄類型,非根結(jié)點(diǎn)有且只有一個(gè)父結(jié)點(diǎn)。上一層記錄類型和下一層記錄類型的聯(lián)系是1:M聯(lián)系。
1.1.2 網(wǎng)狀模型
網(wǎng)狀模型:用從結(jié)構(gòu)(網(wǎng)絡(luò)結(jié)構(gòu))表示實(shí)體類型及實(shí)體間聯(lián)系的數(shù)據(jù)模型稱為網(wǎng)狀模型。如圖2。記錄之間的聯(lián)系通過指針實(shí)現(xiàn),M:N聯(lián)系容易實(shí)現(xiàn)(一個(gè)M:N聯(lián)系可拆成兩個(gè)1:M聯(lián)系),查詢效率高。
1.1.3 關(guān)系模型
用規(guī)范化了的二維表格結(jié)構(gòu)表示實(shí)體集,用鍵表示實(shí)體間聯(lián)系。通常是若干個(gè)關(guān)系模型組成的集合。如表1所示。
1.2 項(xiàng)目中數(shù)據(jù)報(bào)表
作者負(fù)責(zé)開發(fā)的《某市農(nóng)業(yè)基礎(chǔ)信息系統(tǒng)》中,提供的基礎(chǔ)信息為如表2。本文為了簡要說明問題,僅以表2中部分信息為例,展開對(duì)層次型數(shù)據(jù)的存儲(chǔ)與檢索的討論。表中其他同結(jié)構(gòu)信息和系統(tǒng)中涉及到的其它12張,以及其基于此基礎(chǔ)信息的統(tǒng)計(jì)表實(shí)現(xiàn)方法雷同。
對(duì)該表中數(shù)據(jù)進(jìn)行構(gòu)造,吻合層次型數(shù)據(jù)模型。在傳統(tǒng)的項(xiàng)目開發(fā)中經(jīng)常遇到的多是如二維表結(jié)構(gòu)的模型,即便是其它例如層次模型、網(wǎng)狀模型均可以通過描述實(shí)體關(guān)系的E-R圖轉(zhuǎn)換為關(guān)系模型。
2 項(xiàng)目介紹
為了實(shí)現(xiàn)某市農(nóng)業(yè)局農(nóng)業(yè)基礎(chǔ)信息的積累,便于政府決策人員獲取農(nóng)村基層涉及基礎(chǔ)設(shè)施、文化、衛(wèi)生、福利情況、養(yǎng)殖業(yè)、種植業(yè)、專業(yè)村、經(jīng)濟(jì)收益分配、農(nóng)民負(fù)擔(dān)、村集體經(jīng)濟(jì)組織收益分配、村級(jí)資產(chǎn)負(fù)債等信息統(tǒng)計(jì),根據(jù)歷史信息,獲取農(nóng)業(yè)發(fā)展規(guī)律,為政府管理人員提供決策依據(jù),也便于隨時(shí)隨地了解該局下屬各級(jí)行政單位縣、鄉(xiāng)、村的基本信息。保證了信息傳遞的暢通性,真實(shí)性和公正性。
2.1 項(xiàng)目功能
2.1.1縣、鄉(xiāng)、村類別的行政單位基礎(chǔ)信息網(wǎng)上錄入
1) 村級(jí)農(nóng)經(jīng)基礎(chǔ)信息的逐年錄入
在每一年度,作為最小的基層單位,需要將本單位涉及到農(nóng)村基本情況表:基礎(chǔ)設(shè)施、文化、衛(wèi)生、福利情況、養(yǎng)殖業(yè)、種植業(yè)、專業(yè)村、經(jīng)濟(jì)收益分配、農(nóng)民負(fù)擔(dān)、村集體經(jīng)濟(jì)組織收益分配、村級(jí)資產(chǎn)負(fù)債等信息統(tǒng)計(jì),并錄入相應(yīng)的報(bào)表中,要求數(shù)據(jù)錄入簡捷,操作方便。
2) 鄉(xiāng)、縣、市年度統(tǒng)計(jì)信息
依據(jù)下屬逐年基礎(chǔ)信息的上報(bào)經(jīng)審核后由村→鄉(xiāng)→縣→市四個(gè)級(jí)別的自動(dòng)生成統(tǒng)計(jì)信息。上級(jí)部門僅有審核權(quán)限,沒有修改權(quán)限。保證了信息的真實(shí)性。
2.1.2 信息檢索
由不同行政級(jí)別的決策者查閱信息:年度基礎(chǔ)值、年度統(tǒng)計(jì)值、若干年指標(biāo)平均值、按指標(biāo)排名等。
2.1.3 信息打印
對(duì)于檢索的信息的在線打印,便于決策者查詢與參考。保障在網(wǎng)絡(luò)和電腦之外的其他傳統(tǒng)存儲(chǔ)介質(zhì)的使用,尤其在不能上網(wǎng)的情況下,照樣能隨時(shí)查閱農(nóng)村資料。
2.1.4 信息備份和恢復(fù)
信息備份和恢復(fù):對(duì)于存儲(chǔ)的基礎(chǔ)信息,為了安全起見,能導(dǎo)出到其它存儲(chǔ)空間。一旦出現(xiàn)意外,數(shù)據(jù)不會(huì)完全丟失。保證了信息的安全性。
2.2 關(guān)鍵技術(shù)
2.2.1 數(shù)據(jù)存儲(chǔ)
數(shù)據(jù)的存儲(chǔ)是開發(fā)的基石,但是表1是一個(gè)不規(guī)則的層次型表格。對(duì)于如此復(fù)雜結(jié)構(gòu)的報(bào)表想要通過關(guān)系之間轉(zhuǎn)換, 以及如何選擇數(shù)據(jù)庫進(jìn)行存儲(chǔ)、數(shù)據(jù)之間的邏輯關(guān)系、選取何種數(shù)據(jù)模型,該項(xiàng)目的關(guān)鍵技術(shù)。并且還要考慮到本項(xiàng)目中數(shù)據(jù)每年不同,同時(shí)還不能覆蓋歷史信息。以及類似此結(jié)構(gòu)的(村級(jí))基本信息表共12張,如此基本信息表生成的行政單位(鄉(xiāng),縣,市)的統(tǒng)計(jì)表也是12張。同時(shí)初步統(tǒng)計(jì)出該市共有2375個(gè)行政村,236個(gè)鄉(xiāng),5個(gè)縣。該項(xiàng)目中數(shù)據(jù)逐年增添的龐大性,也要求開發(fā)者從長遠(yuǎn)考慮,慎重選擇數(shù)據(jù)庫開發(fā)工具。
2.2.2 數(shù)據(jù)檢索
在信息找到解決方案后,如何在復(fù)雜的數(shù)據(jù)庫中依據(jù)數(shù)據(jù)表之間的對(duì)應(yīng)關(guān)系,根據(jù)散落的信息,瀏覽者中進(jìn)行查詢,要求操作簡單,查詢結(jié)果易于瀏覽,查詢信息有助于提供領(lǐng)導(dǎo)決策的要求。于是隱藏在數(shù)據(jù)之中的信息檢索也是本項(xiàng)目的重中之重。
3 層次型數(shù)據(jù)存儲(chǔ)技術(shù)
3.1 關(guān)系數(shù)據(jù)模型的確定
軟件開發(fā)中常用的數(shù)據(jù)庫技術(shù)現(xiàn)在比較流行大中型的有MySQL、IBM DB2、Oracle、SQL Server、SyBase、Informix等,個(gè)人用戶比較常用的主要是基于中小型數(shù)據(jù)庫MS SQL Server和Access。但是這些數(shù)據(jù)庫均是關(guān)系型數(shù)據(jù)庫。而現(xiàn)實(shí)項(xiàng)目開發(fā)中接觸的教多的初級(jí)信息多為不規(guī)范的數(shù)據(jù),需要進(jìn)行整合重組為關(guān)系數(shù)據(jù)庫。
3.2 層次模型轉(zhuǎn)換為關(guān)系模型的方法
3.2.1 分割表法
依據(jù)層次關(guān)系依據(jù)節(jié)點(diǎn)的父子關(guān)系可分割為關(guān)系模型,將表2中作為父節(jié)點(diǎn)的單元生成新表,只要其內(nèi)容下有分支,就要產(chǎn)生一個(gè)新二維表表,具有規(guī)則的行和列,分解后的關(guān)系模型以及組成字段的簡要描述如表3。
該方法雖然實(shí)現(xiàn)了將層次型數(shù)據(jù)轉(zhuǎn)換為關(guān)系型數(shù)據(jù)[3],但是將一個(gè)表中信息分解的支離破碎,考慮到數(shù)據(jù)的完整性,增、刪、改等操作中容易引發(fā)異常;表的數(shù)量過大,多表查詢時(shí)聯(lián)接頻繁,導(dǎo)致查詢信息的效率低下。同時(shí)對(duì)于每個(gè)行政單位的具體年份的信息無法存儲(chǔ)下來。結(jié)論:此方案不可行。
3.2.2 樹型存儲(chǔ)法
由于每個(gè)信息節(jié)點(diǎn)需要記錄其兩個(gè)組成部分:父節(jié)點(diǎn)(parentID)和自身(ID)的數(shù)據(jù)信息(Num)。借助于《數(shù)據(jù)結(jié)構(gòu)》課程中對(duì)樹型結(jié)構(gòu)數(shù)據(jù)的實(shí)現(xiàn)方法[4],設(shè)計(jì)出對(duì)于每個(gè)節(jié)點(diǎn)除保存本身信息外還要記錄每個(gè)節(jié)點(diǎn)的父節(jié)點(diǎn),對(duì)于表名視為樹的根(parentID為0),其它節(jié)點(diǎn)的parentID是通過記錄父親節(jié)點(diǎn)的(ID)實(shí)現(xiàn)的。
表3 分割表法實(shí)現(xiàn)的關(guān)系模型組成表4 字典目錄法的信息表
對(duì)于表1行的數(shù)量不發(fā)生改變,以添加新列記錄下每個(gè)單位每年度的信息數(shù)據(jù)。此方法中便于查詢和統(tǒng)計(jì)信息生成。因?yàn)樾械臄?shù)量固定,但是列的再逐年改變。依據(jù)開發(fā)經(jīng)驗(yàn),基于表的信息的操作,一般是表結(jié)構(gòu)固定下來后,添加數(shù)據(jù)、更新數(shù)據(jù)、查詢數(shù)據(jù)等操作不要做表的結(jié)構(gòu)變化。但是此方法雖然記錄了表之間的關(guān)系,然而表中信息的年度和行政單位等資料無法存儲(chǔ),如要存儲(chǔ)需要添加新列,而列的名字等信息還不穩(wěn)定的話,開發(fā)人員無法正確讀取信息[5]。同時(shí)在每個(gè)年度添加列,修改表的結(jié)構(gòu)會(huì)可能會(huì)導(dǎo)致表的部分重要信息丟失頻繁,尤其是對(duì)于特殊的數(shù)據(jù)(如必填字段)無法正常執(zhí)行,導(dǎo)致表的信息或修改表的結(jié)構(gòu)無法正常結(jié)束。結(jié)論:此方案不可行。
3.2.3 字典目錄法
結(jié)合樹型存儲(chǔ)法能記錄層次型數(shù)據(jù)報(bào)表的特點(diǎn),經(jīng)項(xiàng)目組研究將樹型存儲(chǔ)法延伸為兩部分組成,形同表1的報(bào)表結(jié)構(gòu),稱之為目錄表,表4稱為信息表。在表4中記錄每個(gè)節(jié)點(diǎn)在某個(gè)年度的數(shù)值信息,以及該信息來自何行政單位。而節(jié)點(diǎn)的名字和層次需要查詢表4來獲取。而查詢的依據(jù)是TableID的值是參照表1中ID而得到的,Depart指的是歸屬的行政單位名稱,Year代表數(shù)據(jù)是哪個(gè)年份。該方法的優(yōu)點(diǎn)是保存了表的結(jié)構(gòu),支持表的結(jié)構(gòu)修改,記錄了各個(gè)指標(biāo)的值。目錄表基本不變化,但是信息表每年均隨單位個(gè)數(shù)成倍遞增。查詢指定的統(tǒng)計(jì)信息較難,數(shù)據(jù)冗余較大。但是此方案實(shí)現(xiàn)了信息的完整保存:指標(biāo)名,指標(biāo)數(shù),單位和年度信息的一體化。結(jié)論:此方案對(duì)于本項(xiàng)目是可行的。
4 基于字典目錄法的系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)
系統(tǒng)確定了數(shù)據(jù)庫的設(shè)計(jì)思路后,基于字典目錄法的數(shù)據(jù)存儲(chǔ)實(shí)現(xiàn)由邏輯設(shè)計(jì)到物理設(shè)計(jì)的實(shí)現(xiàn),為開發(fā)基于WEB《某市農(nóng)業(yè)信息系統(tǒng)》的奠定了根基。
4.1 錄入實(shí)現(xiàn)
在本系統(tǒng)中確定了信息的存儲(chǔ)方法,由于用戶的涉及面廣,文化程度不一,對(duì)于信息技術(shù)的操作熟練程度不等,要求對(duì)于錄入界面要求界面友好,操作簡潔,信息數(shù)據(jù)錄入方便。根據(jù)用戶具體情況,設(shè)計(jì)如如圖3錄入界面,在系統(tǒng)使用過程中以操作方便、界面友好,能自動(dòng)校驗(yàn)數(shù)據(jù)之間的平衡關(guān)系等特點(diǎn),得到了用戶喜愛。
4.2 信息檢索
根據(jù)系統(tǒng)設(shè)計(jì)的表:結(jié)構(gòu)表,信息表,行政單位表三個(gè)基本表,將基于字典目錄法的數(shù)據(jù)存儲(chǔ)成功后,就可進(jìn)行信息查詢。查詢的基本思路如下:
查詢的條件-用戶要錄入選擇-查詢的指標(biāo)內(nèi)容和何年度指標(biāo)。
4.2.1 確定檢索指標(biāo)種類
選擇檢索的信息的種類,是基礎(chǔ)設(shè)施、文化、衛(wèi)生、福利情況、養(yǎng)殖業(yè)、種植業(yè)、專業(yè)村、經(jīng)濟(jì)收益分配、農(nóng)民負(fù)擔(dān)、村集體經(jīng)濟(jì)組織收益分配、村級(jí)資產(chǎn)負(fù)債等信息中的哪個(gè)類別。依次確定該類別信息涉及到的表名。
4.2.2 查找目錄表
根據(jù)信息種類依據(jù)目錄表來還原為層次模型結(jié)構(gòu)原型。
4.2.3 取出信息表數(shù)據(jù)
根據(jù)層次表原型,結(jié)合信息表中的年度信息,取出基本數(shù)據(jù)。
4.2.4 顯示檢索指標(biāo)數(shù)據(jù)
將基本數(shù)據(jù)載入到層次型結(jié)構(gòu)中。顯示用戶檢索信息。
由于篇幅有限,且此檢索功能需要涉及到項(xiàng)目中的各表,而本文僅重點(diǎn)討論層次型數(shù)據(jù)存儲(chǔ)技術(shù),檢索算法的詳細(xì)算法和流程圖略。
5 結(jié)束語
本文主要結(jié)合項(xiàng)目課題基于Web的《某市農(nóng)業(yè)信息系統(tǒng)》的設(shè)計(jì),延伸出對(duì)于層次型報(bào)表轉(zhuǎn)化為關(guān)系模型存儲(chǔ)中的重要技術(shù)作了討論;同時(shí)結(jié)合分割表法、樹型存儲(chǔ)法分析了常用方法的優(yōu)缺點(diǎn),提出了基于樹型存儲(chǔ)法的字典目錄法存儲(chǔ)數(shù)據(jù)。該方法解決了層次模型轉(zhuǎn)化為關(guān)系模型的困難,結(jié)合項(xiàng)目的功能要求,實(shí)現(xiàn)了與農(nóng)業(yè)局各級(jí)行政單位在指定年度的各項(xiàng)指標(biāo)信息的存儲(chǔ)問題。本系統(tǒng)的實(shí)現(xiàn)是新農(nóng)村信息化的具體表現(xiàn),解決了農(nóng)業(yè)部門信息資料收集區(qū)域廣,信息統(tǒng)計(jì)困難、數(shù)據(jù)誤差大等問題,真正實(shí)現(xiàn)了信息的時(shí)效性、真實(shí)性,為政府部門提供了決策依據(jù)。
參考文獻(xiàn):
[1] 王明鐘,李戰(zhàn)懷,董歡慶. 基于層次結(jié)構(gòu)的遠(yuǎn)程數(shù)據(jù)復(fù)制系統(tǒng)[J]. 微電子學(xué)與計(jì)算機(jī), 2005,22(5):98-101.
[2] 魏媛媛. 基于層次模型數(shù)據(jù)庫的算法設(shè)計(jì)[J]. 華中師范大學(xué)學(xué)報(bào)(自然科學(xué)版), 2001,35(2):150-153.
[3] 陳春燕, 張偉. 應(yīng)用摘要層次結(jié)構(gòu)的數(shù)據(jù)流聚類算法[J]. 計(jì)算機(jī)應(yīng)用與軟件, 2007,24(10):176-179.
[4] 葉飛躍, 蒙德龍, 員紅娟. 一種用于存儲(chǔ)與查詢半結(jié)構(gòu)化數(shù)據(jù)的新方法[J]. 計(jì)算機(jī)工程, 2006,32(19):91-95.
[5] 薩師煊, 王珊. 數(shù)據(jù)庫系統(tǒng)概論[M]. 北京:高等教育出版社,2000.