预订演示
前页 后页

数据库比较

“数据库比较”选项卡提供了一种将当前数据模型与实时数据库进行比较的机制,并可选择同步任一方向的任何差异。使用“Alter DDL”语句执行“推送”到实时数据库的差异,而从实时数据库导入的更改可以直接“拉”到模型中。

数据库比较功能要求数据库生成器与实时数据库建立有效连接。此数据库连接由数据库构建器的“ SQL便签本”、“数据库比较”和“执行 DDL”选项卡共享。

访问

打开数据库生成器窗口,然后显示“数据库比较”选项卡。

功能区

开发 >数据建模>数据库构建器 >数据库比较

DDL 比较选项卡

'数据库比较' 选项卡有许多控件,如此处所述。

编号及名称

描述

1区分大小写

单击此复选框可使所有属性比较识别属性文本中字母大小写的差异。

2使用别名(如果可用)

单击此复选框以指示应使用任何已定义的别名而不是object名称(在object和列级别)。

3 全部重置

单击此按钮可将所有对象的“行动”标志设置回默认值。

4 设置全部导入

单击此按钮可将所有检测到的差异的“行动”标志设置为<====;也就是说,使用实时数据库中的值更新模型。

5 设置全部同步

单击此按钮可将所有检测到的差异的“行动”标志设置为 ====>;也就是说,使用模型中的值更新实时数据库。

6 差异

审阅发现模型与实时数据库不匹配的对象列表。在此列表中选择一个项目将填充“组件”列表。

(有关每列的详细说明,请参阅差异列表表。)

7 个组件

审阅此模型和实时数据库之间不同的所选object的属性列表。

(有关每列的详细说明,请参阅部件列表表。)

8 重置

单击此按钮可将当前object的所有属性的“行动”标志设置回默认值。

9从 Live DB导入

单击此按钮可将实时数据库中的所有属性值(带有 <=== 的“行动”)导入模型。

10生成DDL

单击此按钮可为所有具有 ====> '行动'的对象生成'Alter DDL'语句,并将语句发送到'Execute DDL'选项卡。

差异列表

柱子

描述

EA

显示模型中检测到一个或多个差异的每个object的名称。空白值表示模型中缺少object ,但在实时数据库中存在。

行动

考虑到此object的差异,默认为“无行动”作为要采取的行动。单击下拉箭头并选择特定操作。列表中可用操作的列表将取决于给定object是否在模型和实时数据库中配对。

配对对象

  • 无行动- 不更新数据库或模型与此更改
  • ===> - 从模型更新数据库中的object
  • <=== - 从数据库更新模型中的object
  • 自定义 - 在下方面板中对每个项目设置不同的操作之前,将项目设置为无行动
  • Unpair - 将配对的对象分开,这样它们就不会相互比较或相互更新

未配对的对象

  • Create < object name> - 在数据库或模型中创建缺失的数据库object ,视情况而定
  • 删除< object名称> - 从模型中删除object
  • Drop < object名称> - 从数据库中删除object
  • Pair with < object name> - 将数据库中的object与模型中的命名(未配对) object配对,以便比较它们之间的差异
“组件列表”(下部面板)中的“行动”字段将根据该字段的选择进行更新。

例如,如果实时数据库有一个库表列“地址1”而模型没有,则将object “行动”设置为“ ===>” (从模型更新数据库中的object )设置列“项移动”到“Drop行动”,这将从实时数据库中删除该列。

实时数据库

显示实时数据库中检测到一个或多个差异的每个object的名称。空白值表示该object存在于模型中,但在实时数据库中缺失。

数数

显示在模型和实时数据库之间检测到的object (及其所有组件)差异的总数。

部件列表

柱子

描述

物品

显示每个检测到的差异的组件名称或描述。差异分为三类:属性、列和约束,采用树形结构。

EA

显示模型中检测到的给定组件的值。空白值表示模型中缺少该值,但在实时数据库中存在。

行动

默认为与“差异”列表中object “行动”字段的设置相对应的操作,以指示针对为组件检测到的差异要采取的操作。单击下拉箭头以选择替代操作;列表中的可用选项取决于组件的类型和检测到的差异。

  • 无行动——不更新数据库或模型
  • ===> - 从模型更新实时数据库中的object
  • <=== - 从实时数据库更新模型中的object
  • 添加 <项目名称> - 在数据库或模型中创建缺少的项目,视情况而定
  • 删除<项目名称> - 从模型中删除项目
  • Drop <item name> - 从实时数据库中删除该项目

实时数据库

显示活动数据库中选定组件的值。空白值表示该值存在于模型中,但在实时数据库中缺失。

数数

显示在所选组件中检测到的模型和实时数据库之间的差异数量。

使用数据库比较

每当您执行比较时, Enterprise Architect都会从实时数据库和模型中读取定义,然后尝试使用其名称(和模式,如果与当前 DBMS 相关)将来自一个源的每个object与另一个源“配对” .

如果找到匹配项,则object名称将显示在“EA”和“Live DB”列中,默认操作为“无行动”。 “计数”列表示为object及其组件或属性找到的差异总数。

如果在系统之间未找到匹配项,则object名称显示在源列(“EA”或“Live DB”)中,而另一列为空白。在这种状态下,可以将object与不同名称的object配对; “行动”下拉列表将显示可用对象。如果进行了新配对,则会比较两个对象的定义是否存在差异,结果将显示在“组件”列表中,并选择默认操作“====>”。

如果您在object级别选择一个动作,这将为object的所有组件和属性设置匹配动作。但是,如果您在object级别选择“自定义”操作,您可以为每个组件确定不同的操作。

例如,列 (tax_amount) 和约束 (ck_customersordersitems_discount) 在库表“public.customers_order_items”(在示例模型中)中都被重命名,并执行了数据库比较;这张图片显示了发现的差异:

Showing the Database Compare tab of the Database Builder, in Sparx Systems Enterprise Architect.

在图像中只有一个库表检测到差异 - 'public.customers_order_items';选择此项会填充“组件”列表。从检测结果可以确定数据模型包含实时数据库不包含的列 (tax_amount2) 和检查约束 (ck_customerordersitems_discount1),而实时数据库又包含列 (tax_amount) 和检查约束 (ck_customerordersitems_discount ) 数据模型没有。

与选项比较

“与选项比较”功能的工作方式与直接比较相同,只是提示您选择应执行的object /属性。这使您可以忽略当前不相关的特定差异。

这些库表描述了可以启用或禁用的不同比较。

所有对象,拥有着

比较

行动

拥有着

选择表示所有数据库对象的“拥有着”属性应在对象“配对”后进行比较。

库表选项

选项

行动

选择此父选项以启用所有库表比较选项。取消选择以禁用所有其他选项。然后,您将取消选择或选择列表中的特定选项。

库表-扩展属性

选择以指示应该比较表的扩展属性(例如 DB版本和表空间)。

库表-备注

选择表示应比较应用于表的备注。

选择此父选项以启用所有“列比较”选项。取消选择以禁用所有其他“列”选项。然后,您将取消选择或选择列表中的特定选项。

列 -类型

选择以指示应比较库表列的数据类型名称。

列 - 大小

选择以指示应比较库表列的数据类型大小。

列 - 默认值

选择表示应比较库表列的默认值。

列 - 位置

选择以指示应比较库表列的位置。

列 - 非空

选择表示应该比较库表列的非空属性。

列 -自动编号

选择以指示应比较库表列的自动编号属性(例如 AutoNum、StartNum 和 Increment)。

列 - 不匹配的列

选择以指示应比较模型和实时数据库之间不匹配的库表列。通常,这些列存在于一个系统中,但不存在于另一个系统中。

列 -扩展属性

选择以指示应比较库表列的扩展属性(例如 Unsigned 和 Zerofill)。

专栏 - 备注

选择以指示应比较应用于库表列的备注。

约束

选择此父选项以启用所有“库表约束比较”选项。取消选择以禁用所有“库表约束”选项。然后,您将取消选择或选择列表中的特定选项。

约束-主键

选择以指示应比较与主键相关的属性。

约束-外键

选择以指示应比较与外键相关的属性。

约束-索引

选择以指示应比较与索引相关的属性。

约束-约束独特

选择以指示应比较与唯一约束条件相关的属性。

约束-约束选择

选择以指示应比较与选择约束相关的属性。

约束-库表触发器

选择以触发器应比较与库表相关的属性。

约束-无与伦比约束

选择以指示应比较模型和实时数据库之间不匹配的库表约束。通常这些是存在于一个系统中但不存在于另一个系统中的约束。

约束-扩展属性

选择以指示应比较库表约束的扩展属性(如填充因子和集群)。

约束-备注

选择以指示应比较应用于库表约束的备注。

注记

  • 数据库比较功能目前可以对库表、视图、过程、函数和序列object类型进行比较

了解更多