• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    面向對象的關系數據庫設計

    發布: 2009-9-29 11:05 | 作者: 不詳 | 來源: 領測軟件測試網 | 查看: 77次 | 進入軟件測試論壇討論

    領測軟件測試網

    1.三層數據庫模式面向對象模型的擴展 

      一般數據庫設計多參照ANSL/SPARC關于數據庫模式的3層標準結構提案。最接近物理數據庫的內部模式由 DBMS 提供的SQL來描述。概念模式可以由若干個內部模式聚集而成,它是由數據庫用戶規范的一些表的集合。例如,公路局計劃處數據庫模式、機務處數據庫模式等,它們是邏輯數據庫,常常通過庫表 ID來界定庫邊界。一般的概念模式是數據庫物理模式作用域的邊界,它能實現數據庫的物理意義、特定DBMS 的特殊操作對外部應用程序的信息隱蔽。外部模式是從特定用戶應用角度看待的數據庫模式,從不同的應用出發對同一概念模式可以給出多種不同的外部模式。例如:公路綠化情況查詢應用看到的數據庫是公路上的樹木種類、數量、分布比率等,橋梁隧道狀況查詢應用看到的是公路上的橋梁、隧道長度、個數、路段等,但是它們可能訪問的是同一個庫表的不同子集。 

      當外部應用系統以對象模型進行抽象時,從各個應用出發抽象出的對象模型可以映射到外部模型上,對此我們不妨稱之為外部對象模型。但是,外部模型只是概念模型的子集,所以面向對象的數據庫設計核心在于系統對象模型(不妨稱之為概念對象模型) 向數據庫概念模型的映射(參見圖1) 。 

      2.對象模型向數據庫表的映射規則 

      由于 RDBMS 是以二維表為基本管理單元的,所以對象模型最終是由二維表及表間關系來描述的。換言之,對象模型向數據庫概念模型的映射就是向數據庫表的變換過程。有關的變換規則簡單歸納如下: 

     。1)一個對象類可以映射為一個以上的庫表,當類間有一對多的關系時,一個表也可以對應多個類。 

       圖1 三層數據庫模式面向對象模型的擴展 

     。2)關系(一對一、一對多、多對多以及三項關系)的映射可能有多種情況,但一般映射為一個表,也可以在對象類表間定義相應的外鍵。對于條件關系的映射,一個表至少應有3個屬性。 

     。3)單一繼承的泛化關系可以對超類、子類分別映射表,也可以不定義父類表而讓子類表擁有父類屬性;反之,也可以不定義子類表而讓父類表擁有全部子類屬性。 

     。4)對多重繼承的超類和子類分別映射表,對多次多重繼承的泛化關系也映射一個表。 

     。5)對映射后的庫表進行冗余控制調整,使其達到合理的關系范式。 

      3.數據庫模式要面向應用系統 

      我們選擇面向對象的系統設計也好,面向對象的數據庫設計也好,根本目的是服務于應用系統的需要。 

      以公路局計劃處子系統為例。計劃處的最大工作量就是處理成堆的報表,因此如何有效地存取這些報表是計劃處數據庫設計的關鍵?紤]到每月上交的報表是同構的,我們可以創建一張庫表去存儲同一種報表,例如公路工程月報表。但是又產生另一個問題,當用戶想查詢某個月的公路工程月報表時,如何從庫表中取出數據呢?按照數據庫的思想應該有一個主鍵來標識這張報表。在公路局的報表里,區別月報表靠上報時間和上報單位,但如果為每條記錄都加上這兩個字段,無疑會加大庫表冗余,增加查詢時間,降低效率。更何況每張報表都有單位負責人、填表人的屬性,那么怎樣解決這個問題呢?我們設計了超類對象 X3 表和流水號表。X3 表和流水號表的表結構如下。 

      表1 X3表和流水號表的表結構: 

      將它們加入由應用對象模型映射出的數據庫概念模型后,得到圖2所示的結構。 

      每一個應用模塊對象對應建立一張流水號表,同一類的報表屬同一流水號表,由流水號表統一管理。流水號表對各分局、處室提交和建立的每一張報表分配一個流水號,該流水號在整個數據庫中是唯一的,因此在庫中存放任何一張報表都是明確的。流水號的數據類型為 Char(10),前4位為表號,后6位為序列號,其中序列號取自 X3表中最大序列號。也就是說,流水號就是對象標識符,報表是一個對象,一個對象標識符唯一決定一個對象。流水號一旦被分配出去后,在這張報表的生存期內就具有了永久不變性。無論報表的內容及結構怎么變化,它都不變,直到報表被刪除,流水號才會消失。流水號表是父類,報表是子類,流水號表之間的聯系只能通過 X3 表。5個應用模塊對象完全映射到數據庫概念模型中,形成應用對象與數據庫對象的一一對應,保持了5個應用對象在目標系統設計中原有的獨立性,具有很好的封裝性和信息隱蔽性。盡管流水號表會有一些冗余,但它是值得的。 

      圖2 超類對象間關系示意圖 

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    32/3<123>

    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>