Visual Studio .NET Enterprise Architect 中基於 Visio 的資料庫建模:第二部分

來源:互聯網
上載者:User
enterprise|visual|資料|資料庫  
Terry Halpin
Microsoft Corporation
2001年11月

摘要:本文是介紹 Microsoft Visual Studio Enterprise Architect 中基於 Visio 的資料庫建模組件系列文章中的第二篇。第一部分討論了如何建立新的對象角色建模 (ORM) 源模型,如何在 fact editor(事實編輯器)中添加句子類型、基本內部約束及樣本,如何將事實類型從 business rules editor(商務規則編輯器)拖到繪圖視窗中,以及如何儲存模型。還說明了如何通過建立資料庫模型項目、添加 ORM 來源模型、然後構建邏輯模型,將 ORM 模型映射到邏輯資料庫模型。最後介紹了如何通過選擇目標 DBMS 和產生 DDL 指令碼來從邏輯模型產生物理資料庫模型。第二部分將討論如何使用描述器,將物件類型標記為獨立類型、對象化關聯以及將其他一些 ORM 約束添加到 ORM 來源模型中。

目錄

  • 簡介
  • 描述器
  • 獨立物件類型和資料庫屬性工作表
  • 對象化關聯(嵌套)
  • 添加外部唯一性限制式
  • 添加分離性強制角色(或)約束
  • 添加值約束
  • 總結
  • 參考書目
簡介
Microsoft® Visio® for Enterprise Architects (VEA) 包含在 Visual Studio® .NET 的 Enterprise Architect 版本中,當前為 Beta 2。發布 Beta 2 後,已經對產品做出了許多增強以及錯誤修正。VEA 的最終版本將成為 Microsoft Visio Professional 2002 的超集版本。同樣,該產品將包含 Visio Professional 中的簡單對象角色建模 (ORM) 圖形解決方案,以及可以提供到/自物理資料庫結構描述的正向/反向工程的深層 ORM 來源模型解決方案。本產品的協助檔案引用簡單繪圖模具作為 ORM 製圖器,引用深層建模解決方案作為 ORM 來源模型。ORM 來源模型可以用於製圖和工程,而且是本系列文章中討論的唯一 ORM 解決方案。Bate 版中通常不包括協助檔案,不過目前這些檔案可以從 Web 上下載。
本系列文章簡單介紹了如何在 Visual Studio Enterprise Architect 中使用基於 Visio 的資料庫建模解決方案。本文重點介紹 ORM 解決方案中的描述器、對象獨立、嵌套以及其他約束。假定本文的讀者已經熟悉 ORM 和關聯式資料庫建模。ORM 的概述可從網上下載 [參考書目 ]1 和參考書目 2],有關 ORM 和資料庫建模的處理方式,在我最新出版的書 [參考書目 ]3] 中進行了詳細的討論。
上一篇文章討論了如何建立簡單的 ORM 模型,以及如何先將該模型映射到邏輯資料庫結構描述,再將其映射到物理資料庫結構描述 [參考數目 ]4]。我在那篇文章中指出,所有 Visio 模具和模板都具有 U.S. 單位和公制單位兩種版本。在最終版本中,預設情況下只安裝適用於使用者所在地區的版本(U.S. 或公制)。如果要同時安裝兩個版本,應當選擇自訂安裝選項並指出還需要其他版本的解決方案。 描述器
ORM 來源模型和資料庫邏輯模型解決方案都能自動描述所選模型的任何部分,包括使用者可能輸入的任何樣本。在與非技術領域專家交流模型的意義時,此功能非常有用。為了說明此功能,請開啟隨產品提供的 Employee ORM 來源模型樣本,方法是:選擇 File | New | Browse Sample Drawings(檔案 | 建立 | 瀏覽繪圖樣本),然後選擇 Database(資料庫)檔案夾和 Employee ORM 來源樣本檔案,並單擊 Open(開啟)按鈕(參閱圖 1)。

圖 1:開啟 ORM 來源模型樣本(單擊映像以查看大圖片)
此時應顯示 Employee 源模型的 Employee 頁。完整的模型包括三頁:Employee、Project 和 Room。當前顯示頁的名稱顯示在繪圖視窗下方的選項卡中。預設情況下,在繪圖視窗下方僅顯示 Database Properties(資料庫屬性)和 Business Rules(商務規則)視窗。要開啟描述器視窗,請從主菜單中選擇 Database | View | Verbalizer(資料庫 | 視圖 | 描述器)。此時,應在繪圖視窗下方顯示描述器。現在,使用滑鼠選擇所要描述的模型的一部分。在圖 2 中,我選擇了主要的外部唯一性限制式。在描述器視窗中將顯示其描述。

圖 2:對主要的外部唯一性限制式的描述(單擊映像以查看大圖片)
要選擇單個模型元素,直接單擊該元素即可。要選擇所要描述的模型地區,請按住滑鼠左鍵,並沿這一地區的對角線拖動游標。描述器將描述該地區中模型的各個方面(如果添加了事實樣本,還包含這些樣本)。描述器視窗保持開啟狀態,直到您將它關閉,但我通常開著此視窗。通過選擇已顯示視窗底部的相關選項卡,可以隨時選擇在製圖器下方顯示哪個視窗,例如 Database Properties (資料庫屬性)視窗、Business Rules(商務規則)視窗或 Verbalizer(描述器)視窗。 獨立物件類型和資料庫屬性工作表
在圖 2 中,二元關聯 Employee took Course(僱員接受培訓)已經對象化為 Coursework(培訓工作)。由此討論範圍 (UoD),我們可以知道某個僱員接受了給定的培訓課程,但她/他不知道在培訓中獲得的最終等級。因此,無論這些僱員是否扮演 UoD 中的其他角色,培訓工作的執行個體都可以獨立存在。因此,培訓工作被標記為“independent”(獨立),顯示時名稱後帶有“!”。指定該物件類型為獨立時,工具將自動輸入此標記。
要將某物件類型指定為獨立,請選擇該物件類型,並在其資料庫屬性工作表中輸入一個條目。如果當前正在顯示資料庫屬性工作表,您只需單擊物件類型以查看其屬性。或者,雙擊該物件類型顯示其屬性工作表。
上一篇文章中討論了如何使用 Fact Editor(事實編輯器)指定單個句子類型的基本方面。使用資料庫屬性工作表可以執行使用 Fact Editor 能夠執行的全部操作,還可以執行更多的進階任務。其附加功能之一是帶有指定某物件類型是否獨立的複選框(參閱圖 3)。此處顯示此表的 Definition 窗格。只需在 Categories 列表上選擇屬性工作表的其他窗格,即可顯示該窗格。

圖 3:在資料庫屬性工作表中指定培訓工作的獨立性(單擊映像以查看大圖片) 對象化關聯(嵌套)
考慮 Employee took Course(僱員接受培訓)關聯。為了能夠記錄某僱員接受給定培訓的最終等級(如果有),該關聯被對象化為培訓工作,並添加事實類型 Coursework resulted in Grade(培訓工作結果等級)。由於培訓工作物件類型中嵌套了一個關聯,所以此物件類型被稱為巢狀型別。嵌套是使用 Fact Editor 的 Advanced 窗格指定的。如果您剛剛在 Fact Editor 中輸入了新的事實類型(例如, Employee plays Sport [僱員參與運動]),而且編輯器保持開啟狀態,則可以在關閉編輯器前添加嵌套。相反,如果您將物件類型放在要進行對象化的圖表中,則先選擇事實類型,再開啟 Fact Editor,可使用 Database | View | Fact Editor(資料庫 | 視圖 | 事實編輯器)。然後選擇 Advanced(進階)選項卡,並在“Objectify / Nest fact as:”欄位中輸入已對象化的關聯名稱。例如,將 Employee plays Sport(僱員參與運動)對象化為 Play。圖 4 顯示了模型樣本中的培訓工作關聯的嵌套聲明。

圖 4:使用 Fact Editor(事實編輯器)的 Advanced(進階)窗格指定 Nesting(嵌套)(單擊映像以查看大圖片)
如果該關聯已在繪圖視窗中,則單擊 Fact Editor(事實編輯器)中的 OK(確定)按鈕將會在該關聯的周圍顯示嵌套外框。也可以將嵌套的物件類型從商務規則編輯器中拖出來,以便顯示嵌套的物件類型。對象化關聯的名稱顯示在嵌套外框的外面(參閱圖 3)。可以選擇嵌套的物件類型,然後拖動其移駐夾(顯示為黃色小菱形),來調整此名稱的位置。拖動其形狀手柄(綠色小矩形)還可以豎直調整外框大小。
當前,ORM 需要每個對象化的關聯各具有產生的唯一性限制式,或是 1:1 的關聯。在執行 model error check(模型錯誤檢查)時強制執行此規則。從主菜單中選擇 Database | Model Error Check(資料庫 | 模型錯誤檢查),可以隨時執行基本的模型錯誤檢查。
在建立嵌套物件類型時,工具自動建立此嵌套的物件類型和其定義謂詞中涉及的物件類型之間的派生謂詞。這提供了從任意物件類型(嵌套的或未嵌套的)瀏覽到架構的其餘部分的統一方法,主要是為了便於概念查詢而設計的。預設情況下,派生的謂詞稱為“involves”(包括)或“is involved in”(包含於)。要重新命名這些謂詞,可以雙擊圖表視窗中嵌套的物件類型,顯示其資料庫屬性工作表,然後選擇 Nested Roles(嵌套角色)類別並重新命名嵌套的角色名稱。 添加外部唯一性限制式
第一部分討論了如何使用 Fact Editor 將內部唯一性及簡單強制角色約束添加到單一事實類型中。要聲明其他基於角色的約束,最好從繪圖視窗選擇相關謂詞,然後使用捷徑功能表中的 Add Constraint(添加約束)對話方塊,或者從主菜單中選擇 Database | Add Constraints(資料庫 | 添加約束)。
使用 Employee 樣本練習添加約束。先從模型中刪除約束(選擇約束,然後單擊 Delete 鍵),然後再使用 Add Constraint(添加約束)對話方塊將它添加回去。
假設圖 3 中的外部主要唯一性限制式已被刪除,可以按以下步驟再將它添加回去:按下 Shift 鍵,選擇 Room is in Building(房間位於大樓)和 Room has RoomNr(房間具有房間號)事實類型,然後單擊滑鼠右鍵並選擇 Add Constraint(添加約束)選項。 Add Constraint(添加約束)對話方塊開啟,並且約束類型被設定為唯一性。選中 Primary 框,表示此約束提供 Room(房間)的主要參考架構,然後選擇 Building(大樓)和 RoomNr(房間號)角色(依次單擊它們即可,無需按下 Shift 鍵)。約束描述顯示在框的底部(參閱圖 5)。如果外部唯一性限制式未用於主要參考,請不要選中 Primary(主要)框。

圖 5:在 Add Constraint(添加約束)對話方塊中添加主要的外部唯一性限制式(單擊映像以查看大圖片)
如果單擊 OK(確定)按鈕,則對話方塊關閉並在繪圖視窗中顯示約束。如果將其他約束應用到一個或多個謂詞,可以單擊 Apply(應用)按鈕應用約束,以保持對話方塊開啟,並添加這些謂詞的更多約束。 添加分離性強制角色(或)約束
圖 3 中的虛線圓是分離性強制角色(或)約束,表示每個僱員都必須有一個手機號或房間(或兩者都有)。例如,一個簽約人可能擁有手機號但沒有房間,而固定僱員可能擁有房間(可能還擁有手機號)。假設此約束已被刪除,可以按照以下步驟將它添加回去:選擇 Employee has MobileNr(僱員擁有手機號)和 Employee has Room(僱員擁有房間)事實類型;單擊滑鼠右鍵選擇 Add Constraint 選項;當顯示 Add Constraint(添加約束)對話方塊時,將約束類型改為 Mandatory(強制);單擊兩個僱員角色(參閱圖 6);單擊 OK(確定)或 Apply(應用)按鈕。

圖 6:在 Add Constraint(“添加約束”)對話方塊中添加分離性強制角色(或)約束(單擊映像以查看大圖片)
Add Constraint(添加約束)對話方塊也可以用於指定子集、排斥、等同、頻率、環式和索引約束(請參閱第三部分)。 添加值約束
單擊(或雙擊)繪圖視窗中的物件類型以顯示其屬性列表,選擇 Value(值)類別,然後輸入相關的值和/或值的範圍,從而聲明物件類型的值約束。在圖 3 中,Grade(等級)物件類型被約束為以下可能的字母集合:{'A', 'B', 'C', 'F'}。假設刪除了此約束,可以通過在 Value 欄位中輸入值 A(不包含引號),單擊 Add(添加)按鈕,然後對 B、C、F 重複此步驟,將它添加回去(參閱圖 7)。可以單擊 Remove(刪除)按鈕來刪除值。要調整圖表上的值約束,請選擇物件類型(不要選擇約束),然後移動顯示的移駐夾(黃色小菱形)。

圖 7:在資料庫屬性工作表中添加簡單的值約束(單擊映像以查看大圖片)
預設情況下,一個值約束中最多顯示五個條目。要更改此設定,請用滑鼠右鍵單擊該物件類型,選擇 Shape | Custom Properties(形狀 | 自訂屬性),然後更改自訂屬性表中 Value 列表的大小(參閱圖 8)。此對話方塊也可以引入您自己新建立的自訂屬性。

圖 8:通過自訂屬性控制在值約束中顯示的條目的最大數目
如果將此數目設定為小於約束中的條目數目,則該顯示列表後會附加一個省略符號“...”,表示此列表中還包含其他值,只是沒有顯示出來。當列表非常大時,此項功能非常有用。無論圖表中顯示了多少值,您在約束中輸入的所有值都包含在用於產生 DDL 的約束中。 總結
現在,已經講述了足夠的資訊,用來重新建立 Employee ORM 來源模型的 Employee 頁。作為一項挑戰,您可能希望瞭解是否能夠重建 Employee 模型的其他部分(如 Project 和 Room 頁所示)。第三部分將對上述操作進行詳細討論。如果您對本文有任何建設性的反饋意見,請給我寄送電子郵件(TerryHa@microsoft.com)。 參考書目
  1. Halpin, T. A. Object Role Modeling: An Overview(英文),MSDN,2001(也可以訪問 www.orm.net,1998)。
  2. Halpin, T.A. “Object Role Modeling (ORM/NIAM)”,Handbook on Architectures of Information Systems 的第四章,P. Bernus, K. Mertins 和 G. Schmidt 編(Heidelberg:Springer-Verlag,1998),也可以訪問 www.orm.net(英文)。
  3. Halpin, T.A.“Information Modeling and Relational Databases”(San Francisco:Morgan Kaufmann Publishers,2001),也可以訪問 http://www.mkp.com/books_catalog/catalog.asp?ISBN=1-55860-672-6(英文)。
  4. Halpin, T.A. Visual Studio .NET Enterprise Architect 中基於 Visio 的資料庫建模:第一部分,MSDN,2001。

(本文最初發表在 InConcept, Inc. 的 The Journal of Conceptual Modeling。)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.