使用 IBM Rational Data Architect 控制 DB2 数据库
2010-05-13 00:00:00 来源:WEB开发网简介
在建造房屋时,需要先做大量规划和设计工作,然后才能进行实际建造。如果不知道房屋的尺寸、规格以及用途,就开始砌墙和建房间,是很不明智的。还需要计划在发生意外变化(比如,如果降生了小孩)时扩大房屋空间。在构建数据库时也应该做相同的准备工作。应该先进行数据库的规划和设计,然后才能实际创建数据库和表。数据库应该能够适应未来的业务需求,为未来的增长留出容量。
首先对比一下建造房屋和构建数据库涉及的步骤。然后,使用这一对比帮助理解 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 可以帮助充分利用信息资产,让数据充分发挥作用。
更多精彩
赞助商链接