suitag@my.ibm.com),Developer Technical Support,IBM Nanda Pilaka (IBM Rational XDE Developer for Java">nandap@us.ib" name="description" />
英文原文 |
用 IBM Rational XDE Developer for Java 为 DB2 UDB 数据库建模
|
内容 | ||
简介 | ||
开始之前 | ||
为数据库和表空间建模 | ||
表及其关系 | ||
视图 | ||
存储过程 | ||
触发器 | ||
基于数据模型生成 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 数据库建模。
数据建模的好处
数据建模有许多优点,可以使开发小组中的数据设计师和管理员以及所涉及的程序员均从中受益。
如果项目中的所有建模都是用 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 表)建模。我们还将为这两个表之间的参照完整性关系建模。
创建表组件的步骤:
图 11. 给模型添加一个表
现在,我们将建立 employee 表(外键:workdept)和 department 表(主键:deptno)之间的参照完整性。可以通过创建这两个表之间的“identifying”关系来完成:
图 12. 设置参照完整性
图 13. 关系的具体指定
图 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 对话框中为视图选择各个列。
以下是创建视图组件的步骤:
图 17. 创建视图
图 18. 视图的具体指定
图 19. 视图的具体指定
存储过程
Rational XDE 还允许您为数据库建立存储过程的模型。所支持的 DBMS 有:
可是,请牢记数据库和存储过程之间必须存在 实现关系(realization relationship),才能对目标数据库执行 DDL。在 Rational XDE 中,存储过程在存储过程容器中被分组。在为该模型生成 DDL 之前,需要通过实现关系将表、存储过程和视图指派给该数据库。
创建存储过程组件的步骤:
图 20. 展示了实现关系的数据模型
图 21. 存储过程的具体指定
触发器
XDE 允许您创建用户定义的触发器,用以在数据库中实施业务规则。
为触发器建模:
图 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 有:
图 24. 连接数据库
逆向工程
我们已经介绍了正向工程(forward engineering)。通过逆向工程(reverse engineering),我们可以为已经存在的数据库建立模型。这将允许我们修改该模型,例如添加表、存储过程、触发器等,然后通过生成和执行被修改模型的 DDL 来进行正向工程(forward engineer)。
对数据库进行逆向工程:
比较和同步模式
Rational XDE 中的比较和同步(Compare and Sync)功能用于确保数据模型与所生成的 DDL 或目标数据库一致。比较和同步不包括图和比较模型之间的关系。在比较数据模型和数据库以及使之同步之前,请验证已经正确连接数据库,并且正确登录,口令无误。
将数据模型与 DDL 文件或数据库进行比较并使之同步
结束语
最后,下面的 图 25 展示了我们的测试项目“Data Model1”现在的数据库模型。
图 25. 数据库模型
最后,我们概述了使用 Rational XDE 进行数据库建模的过程,但没有讨论太多细节,以免使初级用户无法承受。这个简单示例已经为您开了个头,您可以开始使用该工具来满足您自己的数据库设计和建模需求。要获得该产品的更多信息,请从 Help 菜单查看 Rational XDE 的在线帮助。
注意
到页首
关于作者
Suita Gupta 是 WebSphere Competency Center 小组的技术支持代表。她具有应用程序开发和管理方面的 DB2 认证。在 WebSphere 支持小组工作之前,她在 Developer Relations DB2 Technical Support 小组中研究各种 DB2 应用程序的开发和管理问题。您可以通过 suitag@my.ibm.com 与 Suita 联系。
Nanda Pilaka 是德克萨斯州达拉斯 Content Manager Business Partner Support 小组的软件工程师。他具有应用程序开发和管理方面的 DB2 认证。在 Content Manager 支持小组工作之前,他在 IBM 达拉斯的 Developer Relations DB2 Technical Support 小组中研究各种 DB2 应用程序的开发和管理问题。您可以通过 nandap@us.ibm.com 与 Nanda 联系。