XDE 允许您创建用户定义的触发器,用以在数据库中实施业务规则。
为触发器建模:
- 在 Model Explorer 中右击所需的表。
- 选择 Data Modeler并单击 Open Specification以打开该表的具体指定(Specification)。
- 在 Specification 对话框中,单击 Triggers选项卡,然后单击 New,为该表建立一个新的触发器模型。
- 您可以创建一个“after”或“before”触发器,以及为该触发器创建一个动作体。下面的 图 22说明了是如何进行的:
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 的屏幕快照:
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
- 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
我们已经介绍了正向工程(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 语句,以发现真正的语法差别。