可動態(tài)擴展的數(shù)據(jù)庫設計_第1頁
可動態(tài)擴展的數(shù)據(jù)庫設計_第2頁
可動態(tài)擴展的數(shù)據(jù)庫設計_第3頁
可動態(tài)擴展的數(shù)據(jù)庫設計_第4頁
可動態(tài)擴展的數(shù)據(jù)庫設計_第5頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、可動態(tài)擴展的數(shù)據(jù)庫設計摘要:數(shù)據(jù)庫設計的核心問題是建立模型。對于信息系統(tǒng)中出現(xiàn)的數(shù)據(jù)結構改變和擴展的需求,采用了一種基于鍵值對的對象屬性可擴展模型。關鍵詞:數(shù)據(jù)庫設計;可擴展;對象;關系數(shù)據(jù)庫0引言數(shù)據(jù)庫設計是建立數(shù)據(jù)庫及其應用系統(tǒng)的技術,是信息系統(tǒng)開發(fā)和建設的核心。數(shù)據(jù)庫設計是指對于給定的應用環(huán)境,構造最優(yōu)的數(shù)據(jù)庫模式,建立數(shù)據(jù)庫及其應用系統(tǒng),使之能夠有效地存儲數(shù)據(jù),滿足各種用戶的應用要求(信息要求和處理要求)。數(shù)據(jù)庫設計的核心問題是建立模型。一般而言這個模型要滿足兩類準則:結構準則和性能準則。前者主要考慮如何保持數(shù)據(jù)的特性,后者主要考慮資源的合理使用和數(shù)據(jù)庫的存儲效率。在所有數(shù)據(jù)庫設計準則

2、中最重要的原則是:最終產(chǎn)品必須滿足用戶的最終要求。但是,首先需要存儲的信息是動態(tài)的,應用自身的發(fā)展也會產(chǎn)生新的和擴展的信息需求;其次,信息化是分步進行的,用戶很難一次提出完整的需求;第三,用戶和設計人員之間存在理解上的差異。因此,數(shù)據(jù)庫應用系統(tǒng)在完成以后,系統(tǒng)功能很可能不能完全滿足用戶需求,而且隨著時間的發(fā)展系統(tǒng)功能會逐漸偏離用戶或企業(yè)的需求。所以,數(shù)據(jù)庫應用系統(tǒng)必須要不斷地改進和擴展以適應環(huán)境的變化以及組織自身的發(fā)展需求。目前數(shù)據(jù)庫設計普遍采用“需求驅動”的數(shù)據(jù)庫設計模式。但是,如果在數(shù)據(jù)庫設計階段,建立數(shù)據(jù)庫模型時沒有充分考慮到數(shù)據(jù)庫應用系統(tǒng)以后可能的改變及擴展,將使系統(tǒng)以后的維護工作變得

3、極其困難,甚至必須重新開發(fā)數(shù)據(jù)庫應用系統(tǒng)。本文針對數(shù)據(jù)庫應用系統(tǒng)開發(fā)過程中遇到的動態(tài)可擴展問題提出了一種數(shù)據(jù)庫設計模型基于鍵值對的對象屬性可擴展模型,它區(qū)分了應用中的不同對象的類型,通過設計屬性分類提高了數(shù)據(jù)庫應用系統(tǒng)中數(shù)據(jù)的可改變性和可擴展性。1信息系統(tǒng)中的傳統(tǒng)數(shù)據(jù)庫設計模型通常,在傳統(tǒng)數(shù)據(jù)庫設計模型中,設計人員在設計階段總是將數(shù)據(jù)信息表達的盡可能豐富,使其不僅滿足所有需求分析階段得到的用戶需求,而且還要盡可能考慮到應用以后可能的改變以及擴展。采用這種方式設計的數(shù)據(jù)庫應用不僅數(shù)據(jù)表過于“臃腫”,而且對于未來的應用難于改變或者擴展。例如,在某校園建筑管理信息系統(tǒng)中,系統(tǒng)成立初期,只要求該系統(tǒng)能

4、夠展示建筑的基本信息,如名稱、簡述等。設計人員有可能將數(shù)據(jù)表格設計成,我們稱之為方案1。包括編號、建筑名稱、建筑描述是建筑的最基本屬性,此外設計人員也考慮到了系統(tǒng)將來的擴展,加入了諸如建設日期,高度,等屬性。由于設計人員不可能完全預見學校未來發(fā)展狀況,所以對于系統(tǒng)現(xiàn)階段的需求來說,盡管建筑信息表已經(jīng)非常詳盡了,但是隨著時間的推移系統(tǒng)仍有可能不適應實際需求。隨著需求的發(fā)展,建筑的信息需求有可能發(fā)生變化。例如:為了獲取建筑質量,有可能對該建筑的施工文件等信息保存;隨著校園信息系統(tǒng)的建立,可能有更多的不同類型的建筑需要存入系統(tǒng),比如管道信息,一些標志性雕塑,或者植被信息;隨著系統(tǒng)的擴展,原有數(shù)據(jù)表可

5、能不能滿足日益增多的該類建筑所有信息的存儲,所以需要建立新的數(shù)據(jù)表擴展其屬性;對于一些簡單的建筑或者物體比如一棵樹一個石凳,存儲的信息明顯和一座教學樓不同,需要按照類型的不同,設計多個不同的數(shù)據(jù)表分別存儲不同類型的物體信息。2數(shù)據(jù)庫設計中的擴展性需求在應用中,類似這樣的數(shù)據(jù)存儲結構改變以及應用擴展的情況還有很多。如果用傳統(tǒng)數(shù)據(jù)庫設計模型,那么在設計初始階段就必須考慮到應用未來所有的改變及擴展,盡可能使表格的信息詳盡,否則當應用發(fā)生改變或擴展時,必須重新設計表結構,并對應用程序中相關片段全部重寫。如果同一變化出現(xiàn)在不同部位,由于不同的原因,出現(xiàn)在不同的階段,那么現(xiàn)有表結構不能滿足要求;如果需要增

6、加過多的對象屬性信息,那么表結構將必須修改。但是,如果我們將數(shù)據(jù)對象化,并采用定義其屬性和值的設計模型,上述問題將迎刃而解。作為開發(fā)人員,總會面對業(yè)務方提出的數(shù)據(jù)結構變化的需求,字段的增加,數(shù)據(jù)表的修改總是隨時可能根據(jù)需求發(fā)生。因為業(yè)務在發(fā)展,或者需求就有可能需要一個完全動態(tài)的可擴展的數(shù)據(jù)庫設計方案,但是以目前的關系數(shù)據(jù)庫實現(xiàn)這種動態(tài)擴展的特性,在系統(tǒng)一定規(guī)模之后所付出的代價是昂貴的,也是不安全的。為了這種動態(tài)擴展性,有這樣三種常用的方法:第一種方法:預留字段。既然很難加字段,就預先留好一些備用,但是這樣沒那么靈活,有一定的實用性,不過因為預先留的字段一般是沒什么含義的,需要有額外的信息來描述

7、,這種方法在擴展性要求不是太強的地方可以不影響性能的前提下提供一定的擴展性。第二種方法:使用復雜字段。在某些特殊要求下還是很有用的,比如,某個業(yè)務實體(某張表),有一些標記位,都是true/false的標記,可以理解為這個實體的一些屬性,經(jīng)常需要添加,這種情況,在生產(chǎn)中我們使用過用一個數(shù)字,按位來表示這些標記的,比如第三位表示他是不是付費用戶,第四位表示他是合作方來的用戶還是自己注冊的,等等。還有一種情況,需要更復雜的屬性列表,屬性個數(shù)經(jīng)常變,可以考慮使用一個文本字段,保存結構化的數(shù)據(jù),然后在使用時需要動態(tài)解析該字段。使用復雜字段的好處就在于比較靈活,同一類型的數(shù)據(jù)可以放在一起(實際上相當于把

8、應該是一個關聯(lián)表的數(shù)據(jù)放一個字段里了),操作的性能也不錯,但是復雜字段里面的內容查詢比較困難,程序實現(xiàn)和修改起來也更復雜。第三種方法:將數(shù)據(jù)的存儲和索引(需要查詢的內容)分開存放,相當于主表就一個keyvalue,把需要查詢的字段放到其他單獨的表里去,這種方法對數(shù)據(jù)的實時查詢的效率有一定的影響,但是針對實時性的要求并不是所有系統(tǒng)都有要求的,在有些地方是很好的解決方案。3基于鍵值對的對象屬性可擴展模型本文的基于鍵值對的對象屬性可擴展模型就是結合上面提到的第三種方法,使用數(shù)據(jù)表分別單獨存儲對象分類和分類的屬性信息的定義,并且實現(xiàn)了分類屬性之間的樹形的可擴展結構,對象信息的存儲用過一張表用來存儲所有

9、對象公有的可快速查詢的數(shù)據(jù)信息,另一張屬性值表存儲所有的對象的特有屬性的keyvalue。通過這樣的設計可以在不修改原數(shù)據(jù)表結構的前提下,實現(xiàn)所有存儲對象的動態(tài)可擴展,如圖1所示。圖1對象屬性信息結構模型由圖1所示,表t_class保存對象的分類信息如建筑,管道,雕塑等;t_attibute_def保存的是每個分類所對應對象的屬性信息如建筑的高度,施工單位等;t_entity保存的是分類對象的公共信息,是具體的物體如1號教學樓;t_entity_content保存每個具體的對象所有屬性的信息值;t?倕_file表用來保存一些擴展的文件信息。通過這樣一個模型我們可以在需要是動態(tài)定義一個大的分類并

10、且可以動態(tài)的設置每個已有分類擁有哪些屬性,所有對象的的具體內容分別存儲在對象公共信息表,對象屬性信息表和文件信息表中。在實際應用中,還涉及到屬性冗余,查詢,修改等方面的問題,通過在校園管理系統(tǒng)中應用的結果來看,這些都可以實現(xiàn),并能獲得較好的效率。4結束語綜上所述,傳統(tǒng)的數(shù)據(jù)庫設計適用于簡單的、業(yè)務數(shù)據(jù)固定或變化極少的集中式數(shù)據(jù)庫應用。在應用范圍更廣需要更靈活數(shù)據(jù)結構的系統(tǒng)中,顯然面向對象屬性的擴展設計更加適宜。隨著網(wǎng)絡環(huán)境的日益普及,新的應用呈現(xiàn)出來的開放性與分布性特點,Web應用系統(tǒng)也由簡單的數(shù)據(jù)庫系統(tǒng)逐具有了更靈活多變應用環(huán)境,在這種環(huán)境下,能夠滿足擴展和動態(tài)改變的需求,將有更廣闊的應用前景。參考文獻:薩師煊,王珊數(shù)據(jù)庫系統(tǒng)概論(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論