?总进球数奖金怎么计算

4

01-2014

  網友fdshxp問道:  在軟件開發時要進行數據庫設計,現在通常的做法是需求分析,做數據流圖,畫ER圖,這些顯然是面向過程的東西,而在面向對象分析設計時,只是提數據庫設計的內容,具體怎樣做?雖然可以將數據庫操作封裝起來,但要設計的數據庫表不能通過拍腦袋的方法獲得,總不能再去畫一遍數據流圖吧!  我回答:  在面向對象中,是沒有數據流這一說法的。業務的完成是由對象及消息來完成的,只有“對象流”,沒有數據流。  只是在現實中,絕大部分的對象持久化是用關系數據庫實現的,我們還沒有在性能上和查詢上可以頂替關系數據庫的對象數據庫。設計數據庫表的目的是不考慮所謂“流”的,考慮的是如何把對象高效的持久化。可以說,數據庫設計和之前的面向對象設計是兩個領域的問題,面向對象設計解決業務執行邏輯問題,數據庫設計解決數據高效的問題(它根本不考慮流控制的概念),它們中間通過OR-mapping的機制結合起來。如果你對此一直有疑問,那說明你試圖在設計數據庫表時考慮通過數據庫表設計表達業務邏輯問題,而不是考慮如何高效的持久化對象。  假設,現在技術成熟到我們已經有性能不低于關系數據庫的XML持久化機制和對象查詢機制,任何對象都可以直接持久化而不需要OR-mapping,那么還需要設計數據庫表么?  網友fdshxp繼續問道:  譚老師,你好!很榮幸收到你的回信!  你回信中說:面向對象設計解決業務執行邏輯問題,數據庫設計解決數據高效的問題,說的真好。  我的確是通過數據庫表設計表達業務邏輯問題,因為在看許多數據庫方面的書籍的時候,書上都是這么說的,例如人大的王珊教授的《數據庫系統概論》中說:數據庫設計是指對于一個給定的應用,構造優化的數據庫邏輯模式和物理結構,并據此建立數據庫及其應用系統,使之能夠有效地存儲和管理數據,滿足各種用戶的應用需求,包括信息管理要求和數據操作要求。我的理解就像你所說的,通過數據庫表設計表達業務邏輯問題,比如可以設置約束限制數據,通過觸發器對相應的業務進行自動化處理。  我在軟件開發方面的學習可謂是一波三折,一開始,學習了C/C++,什么也不能做,后來接觸VC++,由于其體系龐大,也沒有做出什么來,轉到VB、Delphi上,很輕松,做一個小的項目,看到VB和Delphi由于其和當今技術的差別,現轉到.NET上來。(始終沒敢轉到JAVA上)  正像你大象書中說的那樣,我用面向對象純粹是為了改進開發效率,通過封裝、繼承、多態等手段重構代碼。進行數據庫主要是為了存儲業務數據,為了更好、更全面地管理業務,我按照數據庫書上講的,進行了面向過程的分析,畫數據流圖和數據字典,以求得對業務數據全方位的認知,接下來,整合業務數據畫ER圖,將其轉化為數據庫表。  說實話,Hibernate的orm映射,我沒用過。在進行面向對象分析和設計時,如果不用ORM,如何將數據庫設計融入其中,我現在還是一頭霧水。現在許多書上的做法是:先建立數據庫表,然后將其封裝,設計類。這種做法看起來很好。但是表是怎樣推出來的,究竟設計幾個表合適,還是不知道。  通過譚老師你的書,我認識到設計的重要性,認識到編程的可推導性,從分析設計中推導出編碼的要素。但是現在大部分的系統都需要數據庫的支持,用數據庫來存放業務數據。  面向對象設計中,如何設計數據庫的問題,請譚老師在不忙的情況下,給我一個設計程式。  ——————————————————————————–  我想是時候談談面向對象數據庫設計的一些想法了,在回答這位網友的同時更多的講講面向對象方法里如何設計數據庫。  首先想說的是面向過程的的數據流分析方法不是不正確,只是它不符合對象分析方法。兩者的出發點是不同的,就象向兩個不同方向前進的隊伍,是無法調合的。而現在很普遍的所謂面向對象設計時“先建立數據庫表,然后將其封裝,設計類”則是徹頭徹尾的錯誤! 套上一個面向對象的馬甲,干的是完全不面向對象的事情。面向過程方法下的表設計還有數據流為推導,而這種偽對象方法為了穿上面向對象的畫皮而拋棄了數據流的馬甲,卻又不按照對象分析方法行事,就更不知道數據庫表是如何推導出來的了。  運用最廣的Hibernate在實際中有太多的誤用,OR-mapping被僅僅當成數據庫物理表和對象之間的簡單一一對應,其本質還是先設計數據庫再設計類。再強調一次“面向對象設計解決業務執行邏輯問題,數據庫設計解決數據高效的問題”,它們本質上是兩個領域的設計,只是由OR-mapping來連接它們。要采用面向對象方法,首先要忘記數據庫的存在,采用對象分析方法,先把對象分析和定義出來,保證業務執行邏輯能夠被這些對象很好的完成。達到這一點后,再來考慮對象持久化的問題。依據數據庫的三大范式以及性能要求來把對象持久化。注意!!這時我們設計數據庫要解決的問題是“對象數據高效持久化”,而不是業務邏輯!它不是從需求中推導出來的! 例如面向過程的設計中,一張申請表很可能被設計成一張物理表;而面向對象設計中,很可能沒有申請表這么一張物理表,而只有“用戶資料”、“申請流程”、“申請資質”等對象表,所謂的申請對象,是在運行期由這些對象聚合而成的。

該日志 2014年01月04日發表在網絡安全技術分類下, 通告目前不可用,你可以至底部留下評論。
轉載請注明: 面向對象方法中的數據庫設計 | 鄭州計算機學校_鄭州電腦學校_鄭州電腦培訓
总进球世界杯 欢乐捕鱼人下载 男人赚钱的才艺 富易堂捕鱼王下载 现在抢购什么东西赚钱 日本代购什么产品赚钱 好运娱乐网址 苹果商店app怎么赚钱 诚信彩票群 开个电子产品店赚钱吗 安桌手机捕鱼达人 美子脱衣服赚钱 捕鱼达人官方版正式版 烈焰传奇可以赚钱 GPK钱龙捕鱼打法 感觉农村赚钱好难 魔兽世界德鲁伊