簡介
在建造房屋時,需要先做大量規劃和設計工作,然後才能進行實際建造。如果不知道房屋的尺寸、規格以及用途,就開始砌牆和建房間,是很不明智的。還需要計劃在發生意外變化(比如,如果降生了小孩)時擴大房屋空間。在構建數據庫時也應該做相同的准備工作。應該先進行數據庫的規劃和設計,然後才能實際創建數據庫和表。數據庫應該能夠適應未來的業務需求,為未來的增長留出容量。
首先對比一下建造房屋和構建數據庫涉及的步驟。然後,使用這一對比幫助理解 RDA 和 DB2 9 如何幫助您建立合理的數據庫設計。
表 1. 建造房屋和構建數據庫的對比
建造房屋
構建數據庫
設計和規劃需要哪些房間以及尺寸。
了解希望捕捉的業務數據,以及如何在數據庫結構中正確地布置這些數據。
常常需要修改原來的計劃來適應設計的變化。
計劃修改,並在進行任何修改之前評估它對總體設計的影響。
需要使用正確的工具建造房屋,並確保房屋具有最好的品質。
RDA 提供了構建查詢的工具,而且在 DB2 9 中還能夠操作 XML 數據。
連接數據庫
通過使用 RDA,可以非常簡便地連接數據源,而且它已經識別出所有已經編目的數據庫。可以在 Database Explorer 窗口中找到這些連接。
圖 1. 使用 Database Explorer 窗口連接數據庫
查看原圖(大圖)
連接數據庫的方法是右擊要連接的數據庫,然後單擊 Reconnect。
輸入用戶 ID 和密碼,完成之後,就會看到與這個數據庫相關的所有數據。因為已經連接了一個 V9.1 示例數據庫,所以應該能夠看到所有表、列、表空間和其他重要的數據庫對象。
圖 2. Database Explorer 窗口
這是 RDA 中非常強大的一個部分,因為可以查看表的內容和做任何必要的修改。
圖 3. 直接查看表中的數據
查看原圖(大圖)
您已經看到了如何連接 DB2 V9.1 數據庫並查看各種數據庫對象。
邏輯數據建模或物理數據建模以及兩者之間的所有東西
可以使用 RDA 從頭規劃設計或者操作現有設計,從而准確地理解執行的操作的含義其對修改的影響。利用 RDA 的數據設計特性並與 DB2 9 相結合,就可以全面控制所有信息資產。
邏輯數據建模
RDA 中的邏輯數據模型對於數據庫的意義,就如同設計草圖對於建造房屋的意義。在規劃房屋的整體藍圖之前,會進行某種類型的設計,以獲得要建造的房屋的總體效果。
在 RDA 中創建邏輯數據模型,就可以顯示各種實體之間的關系、這些實體的屬性和所有這些不同對象之間的關系。通常的做法是,先定義一個邏輯數據模型,然後再把它轉換為物理模型。這樣就能夠在進行任何物理設計之前,讓業務用戶檢驗數據模型。這就相當於先查看房屋的總體設計,然後再設計管道等細節。
創建邏輯數據模型的方法是導航到 File > New > Logical Data Model。
圖 4. 創建新的邏輯數據模型
還有其他創建邏輯數據模型的方法,但是我們看看使用這種方法時會發生什麼。
如果要創建一個新的邏輯數據模型,那麼可以使用模板創建一個 “空白邏輯數據模型”。
圖 5. 創建新的邏輯數據模型(續)
查看原圖(大圖)
單擊 Finish 之後,應該會在 Data Project Explorer 窗口中當前項目下面看到創建的邏輯數據模型的名稱。
圖 6. 新的邏輯數據模型圖
現在,試著理解領域的概念以及它在這裡的作用。在邏輯數據模型中,要描述一些事物及其屬性。RDA 已經定義了一些與邏輯數據模型相關的對象,例如,可以在現有的數據類型中添加屬性,這些數據類型包括:
CHAR
VARCHAR
INT
DECIMAL
TIMESTAMP
在定義屬性時,必須從業務的角度做出決定。假設公司的業務分析師希望定義公司需要的數據類型。他們並不知道如何用上面這些預定義類型表示他們希望的數據類型。他們使用的術語很可能像下面這樣。
一家公司的業務是為家庭用戶生產定制的躺椅。家用躺椅具有以下性質:
家用座位的寬度只能是 17.8"。
如果地板是深色的,躺椅的面料就應該是淺色的天鵝絨;如果地板是淺色的,面料就應該是深色的天鵝絨。
為某些客戶生產的躺椅有視頻屏幕插座,這與常規的躺椅不一樣。
一些躺椅配有固定嬰兒座位的裝置,有的沒有。
所以,業務用戶定義他們的需求;而且在大多數情況下,這些術語超出了 RDA 中標准預定義類型的范圍。例如,無法只用 VARHCAR(20) 描述上面的條件。
這就是領域發揮作用的地方。可以創建一個領域模型,這種模型可以在其他領域模型或其他邏輯數據模型中使用。
在 RDA 中創建領域模型的方法是導航到 File > New > Domain Model。
圖 7. 創建新的領域模型
還可以右鍵單擊邏輯數據模型中的包,然後導航到 Add Data Object > Atomic Domain。
圖 8. 創建領域模型的另一種方法
如果要在邏輯數據模型中添加領域,就可以采用圖 8 所示的方法。然後,可以添加約束或文檔來描述業務分析師提出的規則。
物理數據建模
物理數據建模相當於房屋的藍圖。它描述數據庫的所有細節,並根據需要的操作,提供操作模型所需的所有信息。
物理數據建模有多種方式,比如使用 Physical Data Modeling 向導從頭創建新的數據模型。還可以從現有的另一個物理模型的元素創建物理模型。這只需在 Data Project Explorer 窗口中拖放元素。
還可以對實際數據庫或數據定義語言(DDL)文件進行反向工程,生成物理數據模型。還可以把邏輯數據模型轉換為物理數據模型。
下面介紹幾種物理數據建模方式的步驟,不過還可以執行其他一些步驟:
從頭創建物理數據模型
從 Data Project Explorer 窗口向物理數據模型中添加對象
反向工程
把邏輯數據模型轉換為物理數據模型
從頭創建物理數據模型的方法是導航到 File > New > Physical Data Model。
這會啟動 Physical Data Model 向導。
圖 9. 創建一個新的物理數據模型
下一個屏幕提示您輸入關於要使用的數據庫版本的一些基本信息。在選擇 DB2 UDB V9.1 時,就使 RDA 能夠基於 DB2 9 中的所有新特性進行數據庫建模:
圖 10. New Physical Data Model 屏幕
查看原圖(大圖)
然後為新模型選擇一個模板,在目前情況下,選擇包含空白物理模型的模板。
圖 11. Physical Data Model 模板
查看原圖(大圖)
單擊 Finish 之後,可以看到在 Data Project Explorer 窗口中創建了一個新模型,它帶擴展名 dbm,這表示物理數據模型。
圖 12. Data Project Explorer 窗口中的物理數據模型
從 Data Project Explorer 窗口向物理數據模型中添加對象。
有了空白物理數據模型之後,就可以以這個模型為起點做許多工作。如果希望添加另一個圖中的某些元素,那麼只需將元素從 Data Project Explorer 窗口中拖放到剛才創建的物理數據模型中。也可以把鼠標放在圖的空白區域中,RDA 會向您提示要做的操作,比如添加表。
反向工程
上面的示例演示了如何創建空白物理數據模型,但是如果已經定義了數據庫,希望修改設計,那麼應該怎麼辦?這稱為 “反向工程”。可以通過一個向導對數據庫或 DDL 文件進行反向工程,生成物理模型。
把邏輯數據模型轉換為物理數據模型。
我們看看在已經定義了邏輯數據模型的情況下,如何創建物理數據模型。
看一下 Data Project Explorer 窗口中的 HOME.ldm 以及描述這個數據庫的表和數據。
圖 13. 邏輯數據模型到物理數據模型的轉換
查看原圖(大圖)
把邏輯數據模型轉換為物理數據模型有兩種方法。下面使用 Data Transformation 向導完成這個任務。
首先,單擊 Home.ldm。然後導航到 Data > Transform > Physical Data Model。
圖 14. 將邏輯數據模型轉換為物理數據模型
查看原圖(大圖)
Transform to Physical Data Model 向導打開。
選中 Create New Data Model。
圖 15. 轉換為物理數據模型選項
查看原圖(大圖)
單擊 Finish 把邏輯數據模型轉換為物理數據模型。
現在可以展開 Data Models 下面的物理數據模型,查看所有表。
圖 16. Data Project Explorer 窗口中轉換產生的物理數據模型
為了看到物理數據模型中的圖,右鍵單擊 Diagrams Folder 並選擇 New OvervIEw Diagram。
選擇要查看的所有元素。其他元素保持默認設置並單擊 OK。
單擊 Show Key 和 Show non-key,可以進一步顯示圖中的元素。
圖 17. 新的物理數據模型圖
查看原圖(大圖)
到目前為止,已經介紹了邏輯數據模型、領域模型和物理數據模型的概念。現在看看如何修改物理數據模型,並從物理數據模型創建 DDL。
修改物理數據模型需要展開要修改的對象,進行修改,然後保存模型。
我們以在 CUSTOMER 表中添加索引為例。
通過展開 Data Models > Home.dbm > Database > Home_schema > 展開 BuildHome 項目。右鍵單擊 CUSTOMER 並導航到 Add Data Object > Index。
圖 18. 在 customer 表中添加索引
這會創建 CUSTOMER_IDX,可以在 customer 表的下拉菜單中看到這個索引。
如果希望指定要創建的索引的類型,只需單擊創建索引並查看 PropertIEs 視圖的 Details 部分。
圖 19. 索引細節
查看原圖(大圖)
可以為索引指定以下選項:
惟一
可以指定 Key Columns 並用工具欄上的箭頭指定次序。
可以指定索引中包含哪些非鍵列並用箭頭指定次序。
如果需要,可以指定 PCTFree 值。
保存 Home.dbm 物理數據模型及其更改。
從物理數據模型創建 DDL
如果要創建新數據庫,就可以使用這種方式。否則,可以使用對比和同步特性生成 DDL。
為項目生成 DDL 的方法是右鍵單擊 Home_schema 並選擇 Generate DDL。
圖 20. 從 Explorer 生成 DDL
在 Options 頁面上保持默認設置。在 Objects 頁面上,只選擇 Tables 和 Indexes,因為我們只有表和索引。
最後,應該會看到 Save and Run DDL,可以通過它預覽 DDL。還能夠在服務器上運行 DDL。
圖 21. Generate DDL 窗口
查看原圖(大圖)
單擊 Finish 之後,應該會在 Data Project Explorer 窗口中 SQL Scripts 下面看到 DDL 腳本文件。SQL Scripts 文件夾在當前操作的項目下面。可以在任何時候查看或編輯這個文件。
圖 22. DDL 在 SQL Scripts 文件夾中的位置
本文已經講解了如何在 RDA 中操作表,但是可做的事情不只如此。數據建模功能可以在以下方面擴展模型對象:
緩沖池
分區組
表空間
索引
觸發器
我們看看如何使用存儲圖設置這些元素。存儲圖顯示表中的所有物理數據保存在哪裡。可以從 RDA 直接構建存儲圖。
圖 23. 模型存儲圖
在右鍵單擊 Add Storage OvervIEw Diagram 時,選擇需要的元素。
然後會看到存儲圖,其中包含前面選擇的所有元素。
圖 24. 模型表空間屬性
查看原圖(大圖)
假設您有一個分區的數據庫,這意味著它是一個數據庫的一部分,它包含自己的數據、索引、配置文件和事務日志。Data Partioning Feature(DPF)是 DB2 9 中的新特性,可以用來操作這些分區的數據庫。
在查看 DB2 9 中的存儲圖時,還應該會看到分區組,因為它是 DB2 9 的 DPF 的組成部分。
如果單擊上面的表空間,就可以看到這個表空間的屬性並可以修改各種屬性。
如果希望查看表空間中所有表的列表,那麼單擊 Tables。
圖 25. 表空間中表的列表
對 DB2 9 中的所有數據元素進行建模的用途並不僅限於此。如果希望向相關人員展示此圖,那麼可以使用調色板生成需要的形狀和線條。
邏輯數據模型用來創建設計數據庫所需的藍圖。領域模型用來擴展模型中對象的深度和廣度。物理數據模型可以提供數據庫實體的視圖,您可以做出設計決策,然後在當前的數據庫模型中實現這些決策。
對 DB2 進行對比和同步及影響分析
可以對模型或數據庫中的對象進行對比,了解不同對象之間的差異。可以對比:
數據庫與數據庫
模型與模型
模型與數據庫
數據庫與模型
掌握了這些信息之後,用戶就可以決定要做哪些修改,還可以通過影響分析了解這些修改如何影響整個系統。RDA 可以清楚地展示修改如何影響系統,甚至可以生成分析報告,以便查看和與其他人分享。
我們來詳細討論一下 RDA 中的對比和同步及影響分析功能。
先看一個使用 RDA 對比和同步特性的示例。作為組織中的 DBA,經常要考慮的一個問題是變化。用戶經常要求在現有的基礎結構中添加新信息,而且越快越好。RDA 讓您能夠輕松地理解並實現這些變化。
下面對一個物理數據庫模型和一個已經實現的數據庫進行對比。
我們仍然以 BuildHome 項目為例。假設這個項目中有一個 CUSTOMER 表,但是還有另一個表,其中包含來自另一個部門的另一個項目的其他信息。如果希望對比這兩個表,可以使用對比編輯器查看差異。
右鍵單擊 BuildHome 項目中的 CUSTOMER 並導航到 Compare With > Another Data Object。
圖 26. RDA 中的對比特性
然後,只需展開另一個數據庫,顯示要對比的表。在這個示例中,要與 SAMPLE 數據庫中的 STAFF 表進行對比。
假設希望把 BuildHome CUSTOMER 表的 Cust_Id 列中的修改與 STAFF 表中的 ID 列合並。
圖 27. 對比圖
查看原圖(大圖)
在對比和同步菜單中,可以看到這兩個表中的列。可以使用 Copy from Left to Right 或 Copy from Right to Left 菜單項執行修改。這些修改會立即實現。
在此之後,可以創建進行這些修改所需的 DDL,可以在服務器上直接運行這些 DDL,也可以將其保存為 SQL 腳本供以後執行。
圖 28. 從對比輸出生成 DDL
查看原圖(大圖)
圖 29. 執行對比之後的新圖
查看原圖(大圖)
可以查看模型中受到影響的其他表,然後決定是否進行修改。
如果要修改 XML 列等實體並分析修改的影響,這個特性尤其有幫助。在 DB2 9 中,處理 XML 數據與處理關系數據同樣簡單。在 RDA 中,對比和同步及影響分析也同樣簡單。
在 RDA 中查看 XML 數據類型與查看其他數據類型同樣容易。
圖 30. XML 建模
您可以看到,可以像對待其他數據庫對象一樣,在 Database Explorer 中操作 XML 數據。
構建查詢
在開發應用程序時,需要使用工具幫助您使用數據庫中的信息。SQL Builder 是一個圖形工具,用來構建針對關系數據或 XML 數據的查詢。在 DB2 9 中,XML 數據存儲為原生形式,可以像操作關系數據一樣輕松地操作 XML 數據。
訪問 SQL Builder 的方法是導航到 File > New > SQL Statement。
這會啟動 SQL Builder。
圖 31. 創建新的 SQL 語句
可以給這個 SQL 語句提供一個名稱,這樣就可以將它以 .sql 為擴展名保存,可以在以後執行或編輯。
然後,一個窗口提示您選擇連接。輸入數據庫的名稱並單擊 Reconnect。輸入用戶 ID 和密碼。
這時會打開 SQL Builder 窗口。
圖 32. SQL Builder
查看原圖(大圖)
如果要在中間面板中添加表,應該右鍵單擊空白區域並選擇 Add Table,然後選擇要添加的表。
可以使用底部面板設計 SQL 語句中要包含的內容。還可以使用 SQL Expression Builder 設計更復雜的 SQL 語句。
在使用 SQL Builder 時,還可以把特定表中的元素拖放到 SQL Builder 面板中。完整的說明參見 DB2 9 Information Center 文檔中的 SQL Builder 部分。
因為 XML 數據是 DB2 9 中的重要特性,我們看看如何在 RDA 中查看 XML 數據。仍然以 BuildHome 公司為例。假設公司中有另一個組(暑期學生雇傭組),他們負責雇傭學生參加暑期建築工程。但是,他們的數據並未保存在任何數據庫中,而是使用一種 XML 格式記錄學生的信息。
可以通過 File-> Import 輕松地導入 XML 文件。
圖 33. 導入 XML 文件
在此之後,這個文件就會出現在項目的 XML Schemas 文件夾中。
圖 34. XML schemas 文件夾
如果雙擊 Student_details.xml,就可以看到這個 XML 文件和它的值,還可以展開數據元素,查看每個元素的值。在這個示例中,記錄了學生 ID、學生姓名和學生的電子郵件地址。
圖 35. RDA 中顯示的 XML 文件
查看原圖(大圖)
如果希望生成 SQL 或 XML 查詢,那麼最簡單的方法是使用映射編輯器。可以為生成 SQL 或 XML 查詢指定一個源和目標。在這個示例中,源是您的關系數據庫,目標是一個包含 XML 文檔結構的 XML 模式定義(XSD)文檔。
在 RDA 中創建映射模型的方法是導航到 Mappings > New > Mapping Model。
圖 36. 映射模型
給映射文件指定名稱。
圖 37. 映射編輯器
單擊 Finish 在編輯器中創建一個新的映射(msl)文件。現在,可以把物理數據模型拖到源框中,把 XML 模式文檔拖到目標框中。
為了創建映射,右鍵單擊源中要映射的對象和目標中要映射到的 XML 元素。右鍵單擊目標 XML 元素並選擇 CREATE MAPPING。
圖 38. XML 映射編輯器
查看原圖(大圖)
為了生成實際的 SQL 或 XML,只需使用工具欄中的 Generate Script 圖標。
圖 39. 生成 SQL 或 XML
查看原圖(大圖)
采用默認的 Generate Script 選項,就會看到映射這些元素所需的 SQL 或 XML。
單擊 Finish 之後,SQL 或 XML 腳本出現在編輯器中,可以查看或編輯這個腳本。
圖 40. 生成的 SQL 或 XML 腳本
查看原圖(大圖)
建造房屋需要做大量規劃和設計工作。構建數據庫,或者跟蹤組織中的所有信息,也需要做大量規劃和設計工作。RDA 不但為所有信息資產提供了規劃和設計工具,還提供了根據設計構造數據庫的能力。與設計房屋一樣,RDA 可以幫助充分利用信息資產,讓數據充分發揮作用。