簡介
概念數據模型是面向用戶、面向現實世界的數據模型,是與DBMS無關的。它主要用來描述一個單位的概念化結構。采用概念數據模型,數據庫設計人員可以在設計的開始階段,把主要精力用于了解和描述現實世界上,而把涉及DBMS的一些技術性的問題推遲到設計階段去考慮。
由于概念模型用于信息世界的建模型,是現實世界到信息世界的第一層抽象,是用戶與數據庫設計人員之間進行交流的語言,因此概念模型一方面應該具有較強的語義表達能力,能夠方便、直接地表達應用中的各種語義知識,另一方面它還應該簡單、清晰、易于用戶理解。由于概念模型在此次的叠代過程非常簡單,所以本來計劃PASS掉其中的具體分析,不過概念模型的确非常之重要,他是OOD的一個基石。除了用例,應該說概念模型是OO開發過程中另一個充滿主觀色彩的工件。
然而不同的人對同一個場景進行研究,可能提煉出來的概念模型都不一樣,所以說這是頗受主觀認識影響的一個過程。然而,概念模型的質量對整個系統的影響至關緊要,因為,所謂的面向對象,就是從這裡開始。
一般來說,構建概念模型的過程與程序員的關系并不大。最适合進行這項活動的人,應該是那些有較深資曆的領域專家,極端一點,甚至可以就是最為熟悉自身業務流程的客戶代表。隻要稍稍學習簡單的建模知識,他們就可以勝任了。技術出身的人要做好這個工作,在開始之前他可能首先需要做的就是:忘掉VB,忘掉JAVA,忘掉.Net,忘掉C++。
不過,作為開發人員,比較認可一個思維跳出技術的條框,學習真正從“映射現實世界”的角度考慮問題的好辦法,就是——假想一下,自己正在通過某部電影的故事來制作一個RPG遊戲,電影裡的橋段與遊戲中的場景相對應,然後思考,其中需要表達哪些不同概念。好吧,試着弄一個簡單的例子,這裡,用《無間道》來試試。
構建模型
構建概念模型,需要從場景中提取各種“對系統目标有用”的概念。通常的方法是通過識别主要的領域詞彙,或者通過已有的概念目錄檢查表來查找。由于時間關系,已經預先想好了一些。看過的朋友知道,像“卧底”、“警察”、“黑社會”、“情報”等等,都是《無間道》這部電影裡的一些核心概念。
這樣看起來比較直觀。“警察”和“黑幫成員”是兩個較大的概念,下面分别有較小的兩個子概念。像黃Sir和韓琛這樣的角色,是可以很直接地歸入到“正規警察”和“普通黑幫成員”的範圍中去的,而陳永仁和劉健明都分别屬于不同的卧底角色。但這樣出現了一個問題,就是陳和劉都是同時具有警察、黑幫的雙重身份(盡管一個在明,一個在暗)的人,他們都有可能同時擁有警察和黑幫的某些行為。比如陳永仁在擁有黑幫“劈友”,“收數”的行為時,也有可能執行警察“逮捕”,“救死扶傷”這樣的責任,劉健明表面上是警察,暗中也有進行黑幫“洗錢”的行為。兩個人的行為相似,但本質立場不同,怎樣在模型中表達出這樣的概念呢?
曾經也想過将“卧底”同時作為“警察”和“黑幫成員”的子概念,但覺得這樣比較複雜且僵硬,實現起來也不容易(對不起,又想到實現了)。後來覺得可以試試将“身份”和“行為”概念提取出來,于是建立一個模型。
在這個模型中,每個人物可以機動地擁有1個以上的身份,多個行為。每個行為也可以與特定的身份挂鈎。這樣的話,對表達不同角色的複雜身份就可以比較靈活了。對陳、劉之間的本性問題,又引入“價值觀”這樣的概念描述。但可以看到,改變後的模型複雜度提高了,尤其當人物的“行為”很多的時候,就可能會在其下面出現比較大的概念群了。
系統的靈活性和複雜度的矛盾,是在提煉概念模型時必須慎重思考的問題。
找出模型
最好是能夠盡量充分地使用細粒度的概念來描述模型,而避免粗略描述。
這是書中推薦的一條指導原則,沒有從正面理解也沒有找到論據去推翻他,這是讓困惑的地方。其他一些指導性的原則包括:不能簡單地因為需求說明中沒有明顯的要求保留某個概念的信息或是概念中沒有屬性,就去掉概念,在問題領域中,那些隻擔當純行為的概念也是存在的。其後便是一個用于搜索概念的‘黑名單’,這讓更覺得不可思議,為什麼是這樣一個長長的黑名單而不是幾條簡潔的依據。
抄完了一遍,沒有找出一個通用性的指導原則,書中接下來給出的是根據名詞性短語找出概念,這讓想起了某一期的程序員中有關于建模的文章,其中的概念模型的建立就是說根據名詞來找,想來這是一種極其幼稚的做法了,其中還有這樣一種情況,某些名詞隻作為對象的屬性。
模型設計
概念模型設計
概念模型不依賴于具體的計算機系統,他是純粹反映信息需求的概念結構。
建模是在需求分析結果的基礎上展開,常常要對數據進行抽象處理。常用的數據抽象方法是‘聚集’和‘概括’。
E-R方法是設計概念模型時常用的方法。用設計好的ER圖再附以相應的說明書可作為階段成果
概念模型設計可分三步完成:
局部模型
①确定局部概念模型的範圍
②定義實體
③定義聯系
④确定屬性
⑤逐一畫出所有的局部ER圖,并附以相應的說明文件
全局模型
建立全局E-R圖的步驟如下:
①确定公共實體類型
②合并局部E-R圖
③消除不一緻因素
④優化全局E-R圖
⑤畫出全局E-R圖,并附以相應的說明文件。
模型評審
概念模型的評審分兩部分進行:
第一部分是用戶評審。
第二部分是開發人員評審。



















