mixlee

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            6 隨筆 :: 9 文章 :: 4 評論 :: 0 Trackbacks
          對于應用系統(tǒng)。 長久以來存在著兩個建模。 一個是在數(shù)據(jù)庫層的ER關系模型, 另一個是在應用系統(tǒng)里的OO模型。 應用系統(tǒng)為什么開發(fā)麻煩,很大一個原因是因為要在一套系統(tǒng)里同時維護兩個模型,動了ER模型,必然會影響到OO模型,動了OO模型必然會影響到ER模型。我們很大一部分精力是在維護這兩個模型的統(tǒng)一。這完全是做無用功。 一個有效率的系統(tǒng)只應該存在一個現(xiàn)實模型。這樣就不必為了維護與另一個模型的對應而絞盡腦汁。 在OO思想還未出現(xiàn)的時候,是沒有這種煩惱的。那時的應用系統(tǒng)是數(shù)據(jù)庫驅動型,只需要在數(shù)據(jù)庫里建立一個ER模型,則整個現(xiàn)實的模型就已經(jīng)建立,剩下的只是操作和顯示。 OO的引入是對應用系統(tǒng)開發(fā)的一次變革,但遺憾的是數(shù)據(jù)庫方面并沒有同時跟進。面向對象的開發(fā)其中心思想是在應用系統(tǒng)里用對象來建立一個現(xiàn)實系統(tǒng)的模型。要遵循面向對象的開發(fā)方式則必然會在OO層面建立一個模型,但傳統(tǒng)的數(shù)據(jù)庫模型并沒有拋棄,同樣存在在系統(tǒng)里。這樣我們需要建兩次模,同時需要維護兩個模型,而且還需要維護這兩個模型之間的統(tǒng)一。這無疑是一個愚蠢的做法。 有兩條出路來解決這個問題。 第一,以數(shù)據(jù)庫模型為標準,放棄系統(tǒng)的OO模型,這就是數(shù)據(jù)庫驅動的開發(fā)方式。不需要對象。這種開發(fā)方式很高效,但麻煩也是顯而易見的,不夠靈活。當需求發(fā)生變動的時候,改動ER模型會帶來巨大的影響。當初拋棄這種方式也應該是為了解決這個問題吧。 第二:拋棄ER模型,只專注于OO模型。這樣系統(tǒng)比較直觀,對于系統(tǒng)的擴展和維護人員的接手都是比較容易的。但麻煩是對象需要存儲。這就需要以一種結構存儲在數(shù)據(jù)庫中。這種結構絕對不能是ER關系。這就需要創(chuàng)造出另一種關系模型。然后在對象與數(shù)據(jù)庫之間做好轉換。數(shù)據(jù)庫層對對象來說是不可見的,開發(fā)人員只需關心對象的模型就OK。在對象與數(shù)據(jù)存儲上需要提供一種轉換,比如隨著業(yè)務的變更,對象需要新增一個屬性,那么必須要提供一個后臺的轉換機制,把這個新增的屬性自動添加到數(shù)據(jù)庫中。還需要提供一個對象的查詢機制。
          posted on 2006-04-11 20:48 mixlee 閱讀(158) 評論(0)  編輯  收藏 所屬分類: 系統(tǒng)架構
          主站蜘蛛池模板: 开化县| 原阳县| 平顺县| 海安县| 石林| 乐业县| 怀仁县| 美姑县| 新河县| 垦利县| 新丰县| 桂林市| 衡南县| 牡丹江市| 金山区| 深水埗区| 华坪县| 布拖县| 海城市| 页游| 兴文县| 遂昌县| 盐池县| 济源市| 青河县| 衡山县| 嘉黎县| 金寨县| 屯昌县| 青铜峡市| 富阳市| 义马市| 梅州市| 镇巴县| 如东县| 望奎县| 哈尔滨市| 五常市| 呼和浩特市| 库尔勒市| 日喀则市|