摘要:數據模型常見有層次、網狀和關系三種模型,結合《某市農業信息系統》的設計中遇到的層次型報表,該文研究了將層次型模型轉化為關系模型的三種方法,最終提出了基于樹型存儲法的字典目錄法數據存儲技術,利用該技術實現了系統的成功開發,證明了字典目錄法有效性。
關鍵詞:數據模型;層次型報表;存儲技術
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)27-1885-04
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 數據模型
數據庫是信息系統的核心和基礎。它把信息系統中的大量數據按照一定的模型組織起來,提供存儲、維護、檢索數據的功能,是信息系統可以方便、及時、準確從數據庫中獲取所需的信息。一個信息系統的各個部分能否緊密的結合在一起以及如何結合,關鍵在數據庫。因此必須對數據庫進行合理設計[1]。
1.1 常見數據模型
在數據庫系統中,主要的數據模型有[2]:層次模型(Hierarchical Model)、網狀模型(Network Model)和關系模型(Relational Model)。其中,應用最廣泛的當屬關系模型。
1.1.1 層次模型
層次模型:用樹型(層次)結構表示實體類型及實體之間聯系的數據模型稱為層次模型。如圖1。層次結構是一棵樹,樹的結點是記錄類型,非根結點有且只有一個父結點。上一層記錄類型和下一層記錄類型的聯系是1:M聯系。
1.1.2 網狀模型
網狀模型:用從結構(網絡結構)表示實體類型及實體間聯系的數據模型稱為網狀模型。如圖2。記錄之間的聯系通過指針實現,M:N聯系容易實現(一個M:N聯系可拆成兩個1:M聯系),查詢效率高。

1.1.3 關系模型
用規范化了的二維表格結構表示實體集,用鍵表示實體間聯系。通常是若干個關系模型組成的集合。如表1所示。
1.2 項目中數據報表
作者負責開發的《某市農業基礎信息系統》中,提供的基礎信息為如表2。本文為了簡要說明問題,僅以表2中部分信息為例,展開對層次型數據的存儲與檢索的討論。表中其他同結構信息和系統中涉及到的其它12張,以及其基于此基礎信息的統計表實現方法雷同。

對該表中數據進行構造,吻合層次型數據模型。在傳統的項目開發中經常遇到的多是如二維表結構的模型,即便是其它例如層次模型、網狀模型均可以通過描述實體關系的E-R圖轉換為關系模型。
2 項目介紹
為了實現某市農業局農業基礎信息的積累,便于政府決策人員獲取農村基層涉及基礎設施、文化、衛生、福利情況、養殖業、種植業、專業村、經濟收益分配、農民負擔、村集體經濟組織收益分配、村級資產負債等信息統計,根據歷史信息,獲取農業發展規律,為政府管理人員提供決策依據,也便于隨時隨地了解該局下屬各級行政單位縣、鄉、村的基本信息。保證了信息傳遞的暢通性,真實性和公正性。
2.1 項目功能
2.1.1縣、鄉、村類別的行政單位基礎信息網上錄入
2.1.1 村級農經基礎信息的逐年錄入
在每一年度,作為最小的基層單位,需要將本單位涉及到農村基本情況表:基礎設施、文化、衛生、福利情況、養殖業、種植業、專業村、經濟收益分配、農民負擔、村集體經濟組織收益分配、村級資產負債等信息統計,并錄入相應的報表中,要求數據錄入簡捷,操作方便。
2.1.2 鄉,縣,市年度統計信息
依據下屬逐年基礎信息的上報經審核后由村→鄉→縣→市四個級別的自動生成統計信息。上級部門僅有審核權限,沒有修改權限。保證了信息的真實性。
2.1.2 信息檢索
由不同行政級別的決策者查閱信息:年度基礎值、年度統計值、若干年指標平均值、按指標排名等。
2.1.3 信息打印
對于檢索的信息的在線打印,便于決策者查詢與參考。保障在網絡和電腦之外的其他傳統存儲介質的使用,尤其在不能上網的情況下,照樣能隨時查閱農村資料。
2.1.4 信息備份和恢復
信息備份和恢復:對于存儲的基礎信息,為了安全起見,能導出到其它存儲空間。一旦出現意外,數據不會完全丟失。保證了信息的安全性。
2.2 關鍵技術
2.2.1 數據存儲
數據的存儲是開發的基石,但是表1是一個不規則的層次型表格。對于如此復雜結構的報表想要通過關系之間轉換, 以及如何選擇數據庫進行存儲、數據之間的邏輯關系、選取何種數據模型,該項目的關鍵技術。并且還要考慮到本項目中數據每年不同,同時還不能覆蓋歷史信息。以及類似此結構的(村級)基本信息表共12張,如此基本信息表生成的行政單位(鄉,縣,市)的統計表也是12張。同時初步統計出該市共有2375個行政村,236個鄉,5個縣。該項目中數據逐年增添的龐大性,也要求開發者從長遠考慮,慎重選擇數據庫開發工具。
2.2.2 數據檢索
在信息找到解決方案后,如何在復雜的數據庫中依據數據表之間的對應關系,根據散落的信息,瀏覽者中進行查詢,要求操作簡單,查詢結果易于瀏覽,查詢信息有助于提供領導決策的要求。于是隱藏在數據之中的信息檢索也是本項目的重中之重。
3 層次型數據存儲技術
3.1 關系數據模型的確定
軟件開發中常用的數據庫技術現在比較流行大中型的有MySQL、IBM DB2、Oracle、SQL Server、SyBase、Informix等,個人用戶比較常用的主要是基于中小型數據庫MS SQL Server和Access。但是這些數據庫均是關系型數據庫。而現實項目開發中接觸的教多的初級信息多為不規范的數據,需要進行整合重組為關系數據庫。
3.2 層次模型轉換為關系模型的方法
3.2.1 分割表法
依據層次關系依據節點的父子關系可分割為關系模型,將表2中作為父節點的單元生成新表,只要其內容下有分支,就要產生一個新二維表表,具有規則的行和列,分解后的關系模型以及組成字段的簡要描述如表3。
該方法雖然實現了將層次型數據轉換為關系型數據[3],但是將一個表中信息分解的支離破碎,考慮到數據的完整性,增、刪、改等操作中容易引發異常;表的數量過大,多表查詢時聯接頻繁,導致查詢信息的效率低下。同時對于每個行政單位的具體年份的信息無法存儲下來。結論:此方案不可行。
3.2.2 樹型存儲法
由于每個信息節點需要記錄其兩個組成部分:父節點(parentID)和自身(ID)的數據信息(Num)。借助于《數據結構》課程中對樹型結構數據的實現方法[4],設計出對于每個節點除保存本身信息外還要記錄每個節點的父節點,對于表名視為樹的根(parentID為0),其它節點的parentID是通過記錄父親節點的(ID)實現的。

對于表1行的數量不發生改變,以添加新列記錄下每個單位每年度的信息數據。此方法中便于查詢和統計信息生成。因為行的數量固定,但是列的再逐年改變。依據開發經驗,基于表的信息的操作,一般是表結構固定下來后,添加數據、更新數據、查詢數據等操作不要做表的結構變化。但是此方法雖然記錄了表之間的關系,然而表中信息的年度和行政單位等資料無法存儲,如要存儲需要添加新列,而列的名字等信息還不穩定的話,開發人員無法正確讀取信息[5]。同時在每個年度添加列,修改表的結構會可能會導致表的部分重要信息丟失頻繁,尤其是對于特殊的數據(如必填字段)無法正常執行,導致表的信息或修改表的結構無法正常結束。結論:此方案不可行。
3.2.3 字典目錄法
結合樹型存儲法能記錄層次型數據報表的特點,經項目組研究將樹型存儲法延伸為兩部分組成,形同表1的報表結構,稱之為目錄表,表4稱為信息表。在表4中記錄每個節點在某個年度的數值信息,以及該信息來自何行政單位。而節點的名字和層次需要查詢表4來獲取。而查詢的依據是TableID的值是參照表1中ID而得到的,Depart指的是歸屬的行政單位名稱,Year代表數據是哪個年份。該方法的優點是保存了表的結構,支持表的結構修改,記錄了各個指標的值。目錄表基本不變化,但是信息表每年均隨單位個數成倍遞增。查詢指定的統計信息較難,數據冗余較大。但是此方案實現了信息的完整保存:指標名,指標數,單位和年度信息的一體化。結論:此方案對于本項目是可行的。
4 基于字典目錄法的系統設計實現
系統確定了數據庫的設計思路后,基于字典目錄法的數據存儲實現由邏輯設計到物理設計的實現,為開發基于WEB《某市農業信息系統》的奠定了根基。
4.1 錄入實現
在本系統中確定了信息的存儲方法,由于用戶的涉及面廣,文化程度不一,對于信息技術的操作熟練程度不等,要求對于錄入界面要求界面友好,操作簡潔,信息數據錄入方便。根據用戶具體情況,設計如如圖3錄入界面,在系統使用過程中以操作方便、界面友好,能自動校驗數據之間的平衡關系等特點,得到了用戶喜愛。
4.2 信息檢索
根據系統設計的表:結構表,信息表,行政單位表三個基本表,將基于字典目錄法的數據存儲成功后,就可進行信息查詢。查詢的基本思路如下:
查詢的條件-用戶要錄入選擇-查詢的指標內容和何年度指標。
4.2.1 確定檢索指標種類
選擇檢索的信息的種類,是基礎設施、文化、衛生、福利情況、養殖業、種植業、專業村、經濟收益分配、農民負擔、村集體經濟組織收益分配、村級資產負債等信息中的哪個類別。依次確定該類別信息涉及到的表名。

4.2.2 查找目錄表
根據信息種類依據目錄表來還原為層次模型結構原型。
4.2.3 取出信息表數據
根據層次表原型,結合信息表中的年度信息,取出基本數據。
4.2.4 顯示檢索指標數據
將基本數據載入到層次型結構中。顯示用戶檢索信息。
由于篇幅有限,且此檢索功能需要涉及到項目中的各表,而本文僅重點討論層次型數據存儲技術,檢索算法的詳
細算法和流程圖略。
5 結束語
本文主要結合項目課題基于Web的《某市農業信息系統》的設計,延伸出對于層次型報表轉化為關系模型存儲中的重要技術作了討論;同時結合分割表法、樹型存儲法分析了常用方法的優缺點,提出了基于樹型存儲法的字典目錄法存儲數據。該方法解決了層次模型轉化為關系模型的困難,結合項目的功能要求,實現了與農業局各級行政單位在指定年度的各項指標信息的存儲問題。本系統的實現是新農村信息化的具體表現,解決了農業部門信息資料收集區域廣,信息統計困難、數據誤差大等問題,真正實現了信息的時效性、真實性,為政府部門提供了決策依據。
參考文獻:
[1] 王明鐘,李戰懷,董歡慶.基于層次結構的遠程數據復制系統[J]. 微電子學與計算機,2005,22(5):98-101.
[2] 魏媛媛.基于層次模型數據庫的算法設計[J]. 華中師范大學學報(自然科學版),2001,35(2):150-153.
[3] 陳春燕,張偉.應用摘要層次結構的數據流聚類算法[J]. 計算機應用與軟件,2007,24(10):176-179.
[4] 葉飛躍,蒙德龍,員紅娟.一種用于存儲與查詢半結構化數據的新方法[J].計算機工程,2006,32(19):91-95.
[5] 薩師煊,王珊.數據庫系統概論[M].北京:高等教育出版社,2000.