面向對象(OO)和三範式(3NF)都是成熟的設計方法,本文基於面向對象設計思想和三範式資料庫,提出一種實體對象分層建模的思路,其目的是設計簡單明了、標準化的資料庫結構,同時能夠更好的支持模型驅動模型(MDA)的代碼自動生成和代碼復用,減少代碼編寫工作量。
基本介紹
- 中文名:對象關係模型
- 面向:對象(OO)和三範式(3NF)
- 基於:設計方法
- 提出:一種實體對象分層建模的思路
概述,基本關係模型,變更對象關係模型,不定屬性關係模型,
概述
業務對象(BO)包含複雜的邏輯關係,通過對業務對象及實體對象之間的關係的分析,將對象的關係簡化為對象基本關係、對象變更關係、對象匯總關係、類別對象關係等,針對對象數據不確定的對象,建立屬性不確定對象關係。除了對象之間的關係外,本模型增加了一個附加對象層,包含樹裝結構、時間結構等,用於處理一個特殊的業務需求。
在本模型中,實體對象基本關係是核心,確定了基本關係,也就把資料庫的整體框架搭建起來了,其他模型可以看作僅僅是一個範式,在設計資料庫的時候選擇一個範式即可。本文雖然是以實體對象進行建模,但是其和業務對象是對應的,所以其關係模型也適應於業務對象。
基本關係模型
標準元實體對象:實體對象完全獨立,不依賴於任何其他的實體對象,典型標準元實體對象如組織機構、國家等內容。標準元實體對象完全獨立,有標準的編碼體系(一般都有企業標準、國標或者國際標準),不會因為在不同的系統不同有不同編碼體系。標準元實體對象只有一個主鍵。元實體對象:獨立的實體對象,和標準元實體對象不同,一般沒有一個唯一的標識符,需要增加一個唯一標識符(比如單位編碼,需要制定一個編碼規則,主要目的在於未來數據合併的時候不會因為多個系統合併而使得數據重複),然後才能唯一標示對象。元實體對象是建模中最基本、最核心的對象。如客戶,訂單、流程等,是業務邏輯、對外接口的核心實體對象。標準元實體對象是有標準編碼體系特殊的元實體對象。關聯實體對象:標準元實體對象、元實體對象之間的關聯對象,有些僅僅是簡單的關聯,有些關聯對象中含有其他的業務信息。前者僅僅是對應關係,後者包含對應關係的其他屬性。如具體一個公司的商品價格信息,是實體對象-商品和組織機構關聯之後的信息。關聯對象本身也是一個特殊的實體對象。關聯實體對象主鍵一般是兩個或者兩個以上,一般來說,應該儘量減少關聯對象的主鍵數量。根據實體對象(含元實體對象和關聯實體對象)數量增長的快慢,可以把實體對象分成基礎實體對象和流水實體對象,前者實體對象一般變化緩慢,如客戶數據(比較重要的基礎元實體對象一般對應著的是主數據),後者變化快,如訂單數據等。
除了以上基本關係之外,還有一些特殊的實體對象關係,包含附屬關聯實體對象、主從關聯實體對象等
附屬關聯實體對象:實體對象的附屬信息,和實體對象是一對一或者一對多關係。一對一關係一般是為了把一個屬性太多的對象分解成多個(在IDA中可以用繼承來描述);一對多關係採用增加序號的方式,增加多條信息。如人員的學歷、工作經歷等。不同於關聯對象,其只是簡單的序號的增加。訂單可以以客戶編碼和流水號作為主鍵,但是這種有流水號主鍵的一般是可以將幾個主鍵合併為一個主鍵,如果能合併為一個主鍵,則合併為一個主鍵,從而簡化模型的層次。附屬關係一般是為了解決簡單一對多的附屬信息,如果附屬對象需要複雜的業務邏輯,需要將多個主鍵合併為一個主鍵。分身附屬關聯實體對象,如果不同的業務領域,不同的組件之間,為了增加復用,採用增加表而不是欄位的方式,減少組件間的耦合。分身附屬關聯實體對象,是一種特殊的附屬關聯實體對象、主從關聯實體對象:關聯實體對象的一種特殊情況,關聯的兩個對象之間有強烈的主從關係,如訂單和訂單項等。主從管理實體對象一般從對象內容有限,在軟體實現中一般以單據方式進行展示。
變更對象關係模型
實體對象屬性變更,對屬性變化的歷史進行記錄。根據記錄的先後順序可以分成兩種:採用申請單的方式,先記錄變化的信息,然後更改實體對象;監控對象變化,變化之後記錄變化之後的屬性。對於不重要的屬性可以選擇不記錄變更情況。實體對象整體變更,對實體對象的變更情況整體記錄,記錄更改後的完整信息,一般適合於流水元實體對象,用於記錄流水對象的變化情況。實體對象快照,為了便於記錄歷史信息,可以完整的還原當時的場景,記錄當時所有實體對象的信息,作為實體對象的快照進行管理。快照不同於後文所述的匯總表,快照僅僅是對原始對象的原樣備份,匯總表則是實現對內容“匯總”之後的記錄。實體對象操作痕跡化管理,對於一些關鍵業務數據,業務上需要保留操作痕跡,比如訂單數量修改和刪除需要記錄相應的信息。採用兩種方式來解決,一個是不允許刪除實體對象,只做實體對象除刪除標記,適用於整條記錄刪除的情況;對於記錄變更的情況,採用增加一個廢棄實體對象,記錄實體對象的修改記錄。
對於變更信息,在一些特殊的情況下需要增加一個變更審批,記錄變更信息的審批確認情況,從而實現痕跡化管理,一般來說需要結合流程管理。
不定屬性關係模型
不定屬性實體對象屬性多變,沒有固定的屬性,需要靈活處理每個對象的屬性,典型的如考核指標,不同的部門、不同的公司指標的差異非常大,因此需要按照每個指標的類別,在行上進行存儲。一般來說,指標本身是一種樹,指標本身有關聯。
不定屬性對象其特點和一般的實體對象一樣,其特殊之處在於其屬性是變化的,對象實例化的時候,對象是存儲是在行上存儲的。
如果屬性數量是明確的,但是不同類別實體對象具有的屬性不同,可以通過繼承或者關聯關係建立附屬關聯關係。比如商品信息,分別建立消費品商品信息、電器商品信息等,用與分別記錄其不同的信息。
如果屬性相對來說是穩定的,但是存在變化的可能,則需要考慮實體對象屬性動態增加的模式。比如工資條,存在著工資條內容的增減,因此需要特殊考慮。
本模型以面向對象的分析為基本方法,首先找出業務對象(BO),然後基於範式理論把業務對象轉化成實體對象(PO),並進行分類分層管理,根據主鍵的特點,設定實體對象的基本層級,最終建立實體對象分層模型。