前页 | 后页 |
数据库比较
“数据库比较”选项卡提供了一种将当前数据模型与实时数据库进行比较的机制,并可选择同步任一方向的任何差异。使用“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是否在模型和实时数据库中配对。 配对对象
未配对的对象
例如,如果实时数据库有一个库表列“地址1”而模型没有,则将object “行动”设置为“ ===>” (从模型更新数据库中的object )设置列“项移动”到“Drop行动”,这将从实时数据库中删除该列。 |
实时数据库 |
显示实时数据库中检测到一个或多个差异的每个object的名称。空白值表示该object存在于模型中,但在实时数据库中缺失。 |
数数 |
显示在模型和实时数据库之间检测到的object (及其所有组件)差异的总数。 |
部件列表
柱子 |
描述 |
---|---|
物品 |
显示每个检测到的差异的组件名称或描述。差异分为三类:属性、列和约束,采用树形结构。 |
EA |
显示模型中检测到的给定组件的值。空白值表示模型中缺少该值,但在实时数据库中存在。 |
行动 |
默认为与“差异”列表中object “行动”字段的设置相对应的操作,以指示针对为组件检测到的差异要采取的操作。单击下拉箭头以选择替代操作;列表中的可用选项取决于组件的类型和检测到的差异。
|
实时数据库 |
显示活动数据库中选定组件的值。空白值表示该值存在于模型中,但在实时数据库中缺失。 |
数数 |
显示在所选组件中检测到的模型和实时数据库之间的差异数量。 |
使用数据库比较
每当您执行比较时, 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”(在示例模型中)中都被重命名,并执行了数据库比较;这张图片显示了发现的差异:
在图像中只有一个库表检测到差异 - 'public.customers_order_items';选择此项会填充“组件”列表。从检测结果可以确定数据模型包含实时数据库不包含的列 (tax_amount2) 和检查约束 (ck_customerordersitems_discount1),而实时数据库又包含列 (tax_amount) 和检查约束 (ck_customerordersitems_discount ) 数据模型没有。
与选项比较
“与选项比较”功能的工作方式与直接比较相同,只是提示您选择应执行的object /属性。这使您可以忽略当前不相关的特定差异。
这些库表描述了可以启用或禁用的不同比较。
所有对象,拥有着
比较 |
行动 |
---|---|
拥有着 |
选择表示所有数据库对象的“拥有着”属性应在对象“配对”后进行比较。 |
库表选项
选项 |
行动 |
---|---|
表 |
选择此父选项以启用所有库表比较选项。取消选择以禁用所有其他选项。然后,您将取消选择或选择列表中的特定选项。 |
库表-扩展属性 |
选择以指示应该比较表的扩展属性(例如 DB版本和表空间)。 |
库表-备注 |
选择表示应比较应用于表的备注。 |
列 |
选择此父选项以启用所有“列比较”选项。取消选择以禁用所有其他“列”选项。然后,您将取消选择或选择列表中的特定选项。 |
列 -类型 |
选择以指示应比较库表列的数据类型名称。 |
列 - 大小 |
选择以指示应比较库表列的数据类型大小。 |
列 - 默认值 |
选择表示应比较库表列的默认值。 |
列 - 位置 |
选择以指示应比较库表列的位置。 |
列 - 非空 |
选择表示应该比较库表列的非空属性。 |
列 -自动编号 |
选择以指示应比较库表列的自动编号属性(例如 AutoNum、StartNum 和 Increment)。 |
列 - 不匹配的列 |
选择以指示应比较模型和实时数据库之间不匹配的库表列。通常,这些列存在于一个系统中,但不存在于另一个系统中。 |
列 -扩展属性 |
选择以指示应比较库表列的扩展属性(例如 Unsigned 和 Zerofill)。 |
专栏 - 备注 |
选择以指示应比较应用于库表列的备注。 |
约束 |
选择此父选项以启用所有“库表约束比较”选项。取消选择以禁用所有“库表约束”选项。然后,您将取消选择或选择列表中的特定选项。 |
约束-主键 |
选择以指示应比较与主键相关的属性。 |
约束-外键 |
选择以指示应比较与外键相关的属性。 |
约束-索引 |
选择以指示应比较与索引相关的属性。 |
约束-约束独特 |
选择以指示应比较与唯一约束条件相关的属性。 |
约束-约束选择 |
选择以指示应比较与选择约束相关的属性。 |
约束-库表触发器 |
选择以触发器应比较与库表相关的属性。 |
约束-无与伦比约束 |
选择以指示应比较模型和实时数据库之间不匹配的库表约束。通常这些是存在于一个系统中但不存在于另一个系统中的约束。 |
约束-扩展属性 |
选择以指示应比较库表约束的扩展属性(如填充因子和集群)。 |
约束-备注 |
选择以指示应比较应用于库表约束的备注。 |
注记
- 数据库比较功能目前可以对库表、视图、过程、函数和序列object类型进行比较