用 IBM Rational XDE Developer for Java 為 DB2 UDB 數據
2024-09-06 23:58:04
供稿:網友
英文原文
用 ibm rational xde developer for java 為 db2 udb 數據庫建模
enter a subtitle
suita gupta([email protected]),developer technical support,ibm
nanda pilaka([email protected]),developer technical support,ibm
2004 年 6 月
內容 簡介 開始之前 為數據庫和表空間建模 表及其關系
視圖
存儲過程 觸發器 基于數據模型生成 ddl 腳本 連接數據庫 逆向工程 比較和同步模式 結束語
簡介
參與數據庫應用程序開發的每一個人都遵循著某套方法。而您所選擇的方法將幫助您分析需求,以及開發和交付最終的產品。這套方法中最重要的部分就是,基于業務需求的數據庫設計和建模。在這篇文章中,我將談論使用“rational® xde developer for java”進行的,專門針對“db2® universal database”的設計和建模!
統一建模語言(uml)是用于為業務和軟件應用需求建模的標準的圖形化表示法。過去的幾年里,已經開始廣泛地將 uml 用于面向對象的軟件開發中。除了適用于為對象建模之外,uml 還適用于設計和建立數據存儲模型,以供您的應用程序使用?;旧?,數據建模包括分析客戶需求,用以開發一個客戶的數據需求模型,然后,以該模型為藍圖或架構為應用程序構建數據庫。
本文將向您展示基于已熟悉的 db2 sample 數據庫來生成一個數據庫模型是多么容易。在文章的末尾,您將看到如何為 db2 sample 數據庫及其中的一些數據對象建模。我們還將向您展示如何從已完成的模型生成 ddl 腳本,以及如何使用這些腳本來創建最終的 db2 數據庫。
我們將使用 rational xde developer for java(版本:2003.06.00)和 ibm db2 universal database v8.1 進行建模。rational xde 支持遵循 ansi sql 92 標準的從 v5.2 開始的所有 db2 udb 版本和 db2 for os/390® 5.x、6.x、7.x 的數據建模。rational xde 也可以用于為 oracle、sybase 和 sql server 數據庫建模。
數據建模的好處
數據建模有許多優點,可以使開發小組中的數據設計師和管理員以及所涉及的程序員均從中受益。
數據庫設計師可以使用 rational xde 等工具來建立和可視化數據庫模型,確保數據庫規則,添加不同的數據庫對象,并設置關系。 數據庫管理員既可以為一個已經存在的數據庫創建模型,也可以從模型生成 ddl 并為特定的實現創建數據庫。 數據模型有助于應用程序開發人員更好地理解應用程序的總體架構,盡管一般說來,他們不需要深入了解數據庫體系結構的細節。他們可以用數據模型來建立類模型,例如由表結構產生。 數據模型對于終端用戶也十分有用,可驗證是否已準確地捕獲所有的數據需求。
如果項目中的所有建模都是用 uml 完成的,那么該數據模型將完全匹配其余的系統設計,并且幫助整個小組無縫地協同工作。
開始之前
在開始創建數據庫模型之前,讓我們來看一個 rational xde 的屏幕快照,以及我們將用于建立數據庫模型的菜單和選項,如 圖 1 所示:
圖 1. 從 rational xde 開始
我們需要為數據模型創建一個項目。單擊 file -> new -> project。選擇創建 data modeling project 并命名為“data model”。一旦創建了該項目,您就可以在 model explorer 窗格上看到它了,如下面的 圖 2 所示。
其中,已經為您創建了兩個模型 —— 一個物理數據模型和一個邏輯數據模型。數據架構師和數據庫設計師通常使用邏輯數據模型,以一種獨立于特定數據庫實現的形式捕獲數據需求。邏輯模型是用于與業務風險承擔者(stakeholder)進行通信以確保清晰地捕獲數據需求的好工具,因為它沒有牽扯到特定數據庫的細節。數據庫設計師通常將邏輯模型細化為一個或多個“范式”,以便消除數據重復和提高最終設計的質量。一旦對邏輯數據需求的準確性有了十足把握,您就可以將該邏輯模型轉換為物理數據模型,從而將該模型匹配特定的目標數據庫。然后,可以針對特定的數據庫系統或應用程序,改進和優化該物理數據模型。
邏輯數據模型的使用不屬于本文的討論范疇。接下來,我們將關注物理數據模型層次上的數據庫設計。
圖 2. model explorer
為數據庫和表空間建模
首先,我們將創建數據庫模型。正如您將在下面 圖 3 中看到的,數據庫是可以進行建模以及在數據模型中用 uml 符號 <<database>> 表示的最大元素。rational xde 允許您選擇任何一種它所支持的 dbms 作為數據模型的實現數據庫。本文中,我們選擇了 db2 udb v8 來演示數據建模的過程。
創建數據庫組件
在 model explorer 中,右擊 main ->add data modeler ->database。
圖 3. 創建數據庫模型
然后,單擊 model explorer 中新創建的數據庫組件,輸入一個名稱。我們將 sampledb 作為我們數據庫的獨有名稱。
右擊 model explorer 中的 sampledb,并單擊 data modeler -> open specification。
圖 4. 打開 specification
在 database specification 對話框中,在 database 列表中選擇 ibm db2 8.x 作為目標數據庫。
圖 5. 選擇目標數據庫
單擊 ok,并將該數據庫組件拖放到 diagram 視圖上。
rational xde 允許您建立表空間模型,并將表指派到這一表空間。我們將看到如何建立一個名為 sample_tbsp 的、已分配一個容器的表空間模型。請注意,您在以下步驟中指定的容器路徑應該已經存在。
在進一步繼續之前,您可以通過右擊 model explorer 中的 logical data model 來選擇邏輯數據模型。您可以隨時使用熱鍵 ctrl+s 保存您的模型。
創建表空間
在 model explorer 中,右擊數據庫后單擊 add data modeler -> tablespace。
圖 6. 添加表空間
在 model explorer 中,右擊新的表空間并單擊 data modeler -> open specification。
在 general 選項卡中,輸入表空間的名稱,例如 sample_tbsp。您還可以指定其他細節,例如表空間的類型、擴展塊大小、預取大小、頁面大小以及緩沖池名稱。
圖 7. 表空間的具體指定
完成后,單擊 ok 并將這個表空間組件拖放到 diagram 視圖上。您一旦建立了數據庫模型和表空間模型,rational xde 就會自動地創建數據庫和表空間之間的依賴關系,如下面圖 8 所示:
圖 8. 依賴關系
創建容器
在 model explorer 中,右擊一個表空間后單擊 data modeler -> open specification。
在 container 選項卡中,單擊 new 圖標,并輸入新容器的路徑名稱。
圖 9. 定義容器
檢查點:您的模型現在應該如 圖 10 所示:
圖 10. 此時的模型
表及其關系
我們將為原有的 sample 數據庫中的兩個表(employee 表和 department 表)建模。我們還將為這兩個表之間的參照完整性關系建模。
創建表組件的步驟:
在 model explorer 中,右擊數據模型,然后單擊 add data modeler ->table。 在 table specification 對話框的 general 選項卡中,指定表名稱,并在 columns 選項卡中添加該表的列。您還可以為該表指定主鍵。
圖 11. 給模型添加一個表
單擊 ok,您將在 model explorer 中看到這個表組件。將之拖放至 diagram 視圖上。
我們將分別為 employee 表和 department 表執行以上步驟。對于 employee 表,我們將省略“workdept”列的創建。在我們建立 employee 表和 department 表之間的參照完整性時,將自動為我們創建該列。
現在,我們將建立 employee 表(外鍵:workdept)和 department 表(主鍵:deptno)之間的參照完整性??梢酝ㄟ^創建這兩個表之間的“identifying”關系來完成:
從工具箱的 data modeler 列表中選擇 identifying relationship 選項,然后先單擊 diagram 視圖上的父表 department 組件,再單擊子表 employee 組件。
圖 12. 設置參照完整性
在 relationship specification 對話框中,您可以指定子角色和父角色。
圖 13. 關系的具體指定
在 relationship specification 對話框的 migrated keys 選項卡中,您還可以修改 employee 表中的外鍵列名稱:
圖 14. migrated keys
您將看到 employee 表中添加了一個新的列。在 table specification 對話框的 column 選項卡中,您可以修改“workdept”列在 employee 表中的位置,如下面 圖 15 所示:
圖 15. table specification 對話框
您的模型應該與下面 圖 16 所示相類似:
圖 16. 模型
視圖
rational xde 允許您基于表或 sql 查詢來創建視圖。這些查詢可以包括 where、group by 或 order by 子句。您既可以手工為視圖指定 sql 查詢,也可以在 view specification 對話框中為視圖選擇各個列。
以下是創建視圖組件的步驟:
在 model explorer 中,右擊模型后單擊 add data modeler -> view。一個新的視圖將顯示在 model explorer 中。 右擊這個新的視圖,然后單擊 data modeler > open specification。這將打開 view specification 對話框。 在 general 選項卡中,在 name 框中輸入“emp_view”作為視圖名稱。 單擊 ok 并將該視圖組件拖放至 diagram 視圖上。
為該視圖指定列:
從工具箱的 data modeler 列表中選擇 view dependency,然后先單擊圖(diagram)上的 view 組件(emp_view),再單擊源表組件(employee 表)。
圖 17. 創建視圖
源表中的所有列都將填充到您的視圖中。 此時,您可以通過啟用 view specification 對話框的 general 選項卡中的“user defined”復選框,為視圖指定定制的 sql 查詢:
圖 18. 視圖的具體指定
然后在同一對話框的 sql 選項卡中輸入定制的 sql 查詢。完成后單擊 ok。
圖 19. 視圖的具體指定
存儲過程
rational xde 還允許您為數據庫建立存儲過程的模型。所支持的 dbms 有:
ibm db2 udb 5.2、6.1、7.0 和 8.0 ibm db2 mvs 5.x、6.x 和 7.x oracle 7.3、8.x、和 9i for windows nt microsoft sql server 6.5、7.0 和 2000 sybase adaptive server 12.x
在 rational xde 中,術語“存儲過程”包括常規的存儲過程(返回多個結果)和存儲函數(返回標量值)。這兩種存儲過程都可以用相應的參數和一個動作體(action body)來進行定義和建模。
可是,請牢記數據庫和存儲過程之間必須存在 實現關系(realization relationship),才能對目標數據庫執行 ddl。在 rational xde 中,存儲過程在存儲過程容器中被分組。在為該模型生成 ddl 之前,需要通過實現關系將表、存儲過程和視圖指派給該數據庫。
創建存儲過程組件的步驟:
在 model explorer 窗口中,右擊 main。 選擇 add data modeler 并單擊 stored procedure container。這將在數據模型中創建一個默認名為“procedurecontainer1”的存儲過程容器。 您可以使用該容器默認的名稱,也可以通過位于 model explorer 窗口之下的 properties 窗口修改它。 右擊存儲過程容器“procedurecontainer1”,然后,選擇 add data modeler 并單擊 stored procedure。這將添加默認名為“procedure1”的存儲過程容器。同樣地,您可以使用這個默認名稱,如果希望,也可以通過 model explorer 窗口之下的 properties 窗口來提供另一名稱。 您還必須添加從數據庫到存儲過程的“數據庫實現”關系,用以為該存儲過程生成 ddl。 為了添加“數據庫實現”關系,單擊工具箱中的 data modeler,下滾該列表至“database realization”,單擊選擇它。 然后,先單擊數據庫組件,接著再單擊存儲過程容器組件以創建實現關系。該數據模型將如下面 圖 20 所示:
圖 20. 展示了實現關系的數據模型
此時或稍后,可以通過右擊 model explorer 中的存儲過程,選擇 data modeler 并單擊 open specification,來修改存儲過程的名稱和簽名(參數等等)。 這將打開 stored procedure specification 對話框。 在該對話框中,您可以通過 general 選項卡修改過程名、編寫語言等,通過 parameters 選項卡添加參數,以及最后通過 action body 選項卡指定一個動作體,如下面圖 21 所示:
圖 21. 存儲過程的具體指定
觸發器
xde 允許您創建用戶定義的觸發器,用以在數據庫中實施業務規則。
為觸發器建模:
在 model explorer 中右擊所需的表。 選擇 data modeler 并單擊 open specification 以打開該表的具體指定(specification)。 在 specification 對話框中,單擊 triggers 選項卡,然后單擊 new,為該表建立一個新的觸發器模型。 您可以創建一個“after”或“before”觸發器,以及為該觸發器創建一個動作體。下面的 圖 22 說明了是如何進行的:
圖 22. 創建觸發器
基于數據模型生成 ddl 腳本
rational xde 提供了 forward engineering 向導,用以為整個數據庫或數據模型中的指定組件生成數據定義語言(ddl)腳本。rational xde 生成的 ddl 遵循 ansi sql 92 標準。xde 還允許您對目標數據庫執行所生成的 ddl,而目標數據庫是您在啟動數據模型項目之前指定的。因此,要確保您已經正確連接了該目標數據庫。同時,該數據模型中的所有數據庫組件都必須利用前面小節中所闡明的關系連接該數據庫組件。如果沒有為任何組件進行該工作,那么就不會為特定的組件生成 ddl。
為了生成 ddl 腳本:
在 model explorer 中,右擊一個現有的數據庫、包或表,然后單擊 data modeler > forward engineer。這將打開用于數據建模的 forward engineering wizard 對話框。然后按照該向導中的指示進行。下面的圖 23 是通過 forward engineering 向導為整個數據庫生成 ddl 的屏幕快照:
圖 23. forward engineering 向導
連接數據庫
rational xde 允許您連接一個 dbms,并且執行所生成的 ddl 以創建數據庫對象。所支持的 dbms 有:
ibm db2 udb 5.2、6.1、7.0 和 8.0 ibm db2 mvs 5.x、6.x 和 7.x oracle 7.3、8.x 和 9i for windows nt microsoft sql server 6.5、7.0 和 2000 sybase adaptive server 12.x rational xde 支持下列用以連接以上數據庫系統的驅動程序:
ibm db2 app driver(odbc) ibm db2 udb jdbc driver oracle ole db provider oracle thin jdbc driver ole db provider ms ole db for odbc ms ole db for oracle(mdac) ms sql ole db provider sybase ase odbc driver為了連接目標數據庫,您必須將之配置成 odbc 數據源,并提供正確的訪問信息以便能夠連接它。既可以將該數據庫配置為系統 odbc 數據源,也可以配置為用戶 odbc 數據源。您既可以通過 forward engineering 或 reverse engineering 向導建立連接,也可以在比較和同步(compare and sync)模式[rlk1]下進行。還請注意,如果選擇連接數據庫,您可能需要為所選擇的數據庫系統安裝運行時客戶機(對于 db2 udb)或等效的客戶機組件(對于其他的 dbms)。關于這方面的更多信息,請查看 rational xde 幫助??梢詼y試到目標數據庫的連接,例如在 forward engineering 向導中通過 execute 復選框進行,如下面的圖 24 所示:
圖 24. 連接數據庫
逆向工程
我們已經介紹了正向工程(forward engineering)。通過逆向工程(reverse engineering),我們可以為已經存在的數據庫建立模型。這將允許我們修改該模型,例如添加表、存儲過程、觸發器等,然后通過生成和執行被修改模型的 ddl 來進行正向工程(forward engineer)。
對數據庫進行逆向工程:
在 model explorer 中,右擊該數據模型并單擊 data modeler -> reverse engineer。這將打開 reverse engineering 向導。 按照向導中的指示選擇數據庫以及逆向工程過程中所包含的所有元素。
比較和同步模式
rational xde 中的比較和同步(compare and sync)功能用于確保數據模型與所生成的 ddl 或目標數據庫一致。比較和同步不包括圖和比較模型之間的關系。在比較數據模型和數據庫以及使之同步之前,請驗證已經正確連接數據庫,并且正確登錄,口令無誤。
將數據模型與 ddl 文件或數據庫進行比較并使之同步
在 model explorer 或圖中,右擊一個現有的數據庫,然后單擊 data modeler > compare and sync。 這將打開數據模型的 database synchronization wizard。按照向導中的指示進行。 關于比較和同步功能,要記住以下幾點: 如果將逆向工程所生成的數據模型與 ddl 進行比較,您就必須將 owner/schema 屬性重新設置為您進行逆向工程的模式名。對于比較中包含的每個數據模型元素,您都必須完成該設置。 您應將需要在比較和同步中包含的所有元素指派給數據模型數據庫。在比較過程中,xde 會忽略所有未指派給數據模型數據庫的元素。 您的數據模型數據庫必須使用與所比較的 ddl 或 dbms 數據庫相同的名稱和目標數據庫。 如果將您數據模型中的視圖和 ddl 中的視圖進行比較,ddl 就必須使用全限定名,尤其是在該視圖的 sql 語句中。如果該 ddl 未使用全限定名,那么這些視圖在比較過程中看起來就不同,而您就必須手工查看每個視圖的 sql 語句,以發現真正的語法差別。
結束語
最后,下面的 圖 25 展示了我們的測試項目“data model1”現在的數據庫模型。
圖 25. 數據庫模型
最后,我們概述了使用 rational xde 進行數據庫建模的過程,但沒有討論太多細節,以免使初級用戶無法承受。這個簡單示例已經為您開了個頭,您可以開始使用該工具來滿足您自己的數據庫設計和建模需求。要獲得該產品的更多信息,請從 help 菜單查看 rational xde 的在線幫助。
注意
forward engineering 向導未在 ddl 文件中插入或生成數據庫 ddl(create database 命令)。這意味著在對目標數據庫執行 ddl 腳本之前,需要手工創建目標數據庫。 本文采用的 rational xde 版本為 2003.06.00。在建立存儲過程模型時,您可能會發現如果在存儲過程具體指定的 action body 選項卡中指定了一個動作體,該存儲過程的 ddl 中卻沒有這個動作體。該缺陷在 2004 年 4 月 9 日發布的 service release 2(fixpack 2)中得到了修復。關于當前修正版的更多信息,請查看 www.rational.com。 在為 db2 存儲過程指定動作體時,必須使用非傳統的 sql 語句終止字符,例如“@”等,因為分號在存儲過程體中用于終止存儲過程動作語句。然而,在通過 forward engineering 向導生成存儲過程 ddl 時,會在“@”后面額外生成一個分號,所以“@”是不需要的,否則 db2 的 sql 編譯器會發出錯誤。 可能需要編輯所生成的 ddl 腳本,以確保所使用的語句終止字符是正確的。
到頁首
resources
subgroup of resourcesexplanation of what the resources will provide for the developer. and then list the resources: title of resource title of resource -->
關于作者
suita gupta 是 websphere competency center 小組的技術支持代表。她具有應用程序開發和管理方面的 db2 認證。在 websphere 支持小組工作之前,她在 developer relations db2 technical support 小組中研究各種 db2 應用程序的開發和管理問題。您可以通過 [email protected] 與 suita 聯系。
nanda pilaka 是德克薩斯州達拉斯 content manager business partner support 小組的軟件工程師。他具有應用程序開發和管理方面的 db2 認證。在 content manager 支持小組工作之前,他在 ibm 達拉斯的 developer relations db2 technical support 小組中研究各種 db2 應用程序的開發和管理問題。您可以通過 [email protected] 與 nanda 聯系。
菜鳥學堂: