前页 | 后页 |
数据库比较
“数据库比较”选项卡提供了一种机制,用于将当前数据模型与实时数据库进行比较,并可以选择同步任一方向上的任何差异。使用“ Alter DDL”语句将差异“推入”到实时数据库中,而从实时数据库导入的更改可以直接“推入”到模型中。
数据库比较功能需要数据库构建器具有与活动数据库的有效ODBC连接。此数据库连接由数据库构建器的“ SQL Scratch Pad”,“数据库比较”和“执行DDL”选项卡共享。
访问
打开“数据库构建器”窗口,然后显示“数据库比较”选项卡。
色带 |
开发>数据建模>数据库生成器>数据库比较 |
DDL比较选项卡
如此处所述,“数据库比较”选项卡具有许多控件。
编号和名称 |
描述 |
---|---|
1个区分大小写 |
单击此复选框,使所有属性比较都能识别属性文本中字母大小写的差异。 |
2如果可用,请使用别名 |
单击此复选框以指示应使用任何定义的别名代替对象名称(在对象和列级别)。 |
3全部重置 |
单击此按钮可将所有对象的“操作”标志设置回默认值。 |
4套全部导入 |
单击此按钮可将所有检测到的差异的“操作”标记设置为<====;也就是说,使用实时数据库中的值更新模型。 |
5设置全部同步 |
单击此按钮将所有检测到的差异的“操作”标志设置为====>;也就是说,使用模型中的值更新实时数据库。 |
6个差异 |
查看发现的模型与实时数据库不匹配的对象列表。在此列表中选择一个项目将填充“组件”列表。 (有关各列的详细说明,请参见“ 差异列表”表。) |
7个组成部分 |
查看此选定对象的属性列表,这些属性在模型和实时数据库之间有所不同。 (有关各列的详细说明,请参见“ 组件列表”表。) |
8重设 |
单击此按钮可将当前对象的所有属性的“操作”标志设置回默认值。 |
9从ODBC导入 |
单击此按钮可将实时数据库中的所有属性值(“动作”为<===)导入模型。 |
10生成DDL |
单击此按钮可以为所有具有====>“动作”的对象生成“更改DDL”语句,并将该语句发送到“执行DDL”选项卡。 |
差异表
柱 |
描述 |
---|---|
EA |
显示模型中具有一个或多个检测到的差异的每个对象的名称。空值表示该对象在模型中丢失,但在实时数据库中存在。 |
行动 |
默认为“无操作”作为考虑此对象差异的操作。单击下拉箭头,然后选择特定操作。列表中的可用操作列表将取决于给定对象在模型和实时数据库中是否配对。 配对对象
未配对的物体
例如,如果实时数据库具有一个Table列“ Address1”,而模型则没有,则将对象“ Action”设置为“ ===>” (从模型中更新数据库中的对象)将设置列“ Item”操作”到“删除地址1”,这将从实时数据库中删除该列。 |
ODBC |
显示实时数据库中具有一个或多个检测到的差异的每个对象的名称。空值表示该对象存在于模型中,但在实时数据库中丢失。 |
计数 |
显示在模型和实时数据库之间检测到的对象(及其所有组件)差异的总数。 |
组件清单
柱 |
描述 |
---|---|
项目 |
显示每个检测到的差异的组件名称或描述。差异在树状结构中分为三类:属性,列和约束。 |
EA |
显示在模型中检测到的给定组件的值。空白值表示该模型中缺少该值,但存在于实时数据库中。 |
行动 |
默认为与“差异”(Differences)列表中的对象“动作”(Action)字段的设置相对应的动作,以指示针对检测到的组件差异采取的动作。单击下拉箭头以选择其他操作;列表中的可用选项取决于组件的类型和检测到的差异。
|
ODBC |
显示实时数据库中所选组件的值。空值表示该值存在于模型中,但在实时数据库中丢失。 |
计数 |
显示在选定组件中检测到的模型与实时数据库之间的差异数。 |
使用数据库比较
每当执行比较时, Enterprise Architect都会从实时数据库和模型中读取定义,然后尝试使用其名称(和模式(如果与当前DBMS相关),将一个源中的每个对象与另一个源“配对”) 。
如果找到匹配项,则对象名称同时显示在“ EA”和“ ODBC”列中,默认操作为“无操作”。 “计数”列指示为对象及其组件或属性找到的差异总数。
如果在系统之间找不到匹配项,则对象名称将显示在源列(“ EA”或“ ODBC”)中,而另一列为空白。在这种状态下,可以将对象与其他名称的对象配对; “操作”下拉列表将显示可用的对象。如果进行了新的配对,则将比较两个对象的定义是否存在差异,并将结果显示在“组件”列表中,并选择默认操作“ ====>”。
如果在对象级别选择一个动作,这将为该对象的所有组件和属性设置匹配的动作。但是,如果在对象级别选择“自定义”操作,则可以为每个组件确定不同的操作。
例如,在表“ public.customers_order_items”(在示例模型中)中,将列(tax_amount)和约束(ck_customersordersitems_discount)都重命名,并执行数据库比较;此图显示发现的差异:
在图像中,只有一个检测到差异的表-'public.customers_order_items';选择此项将填充“组件”列表。根据检测到的结果,可以确定数据模型包含一列(tax_amount2)和一个检查约束(ck_customerordersitems_discount1),而活动数据库则不包含该约束,而该活动数据库则包含一列(tax_amount)和检查约束(ck_customerordersitems_discount ),而数据模型则没有。
与选项比较
“与选项比较”功能的功能与直接比较的功能相同,只是会提示您选择要执行的对象/属性比较。这使您可以忽略当前不相关的特定差异。
这些表描述了可以启用或禁用的不同比较。
所有对象,所有者
比较方式 |
行动 |
---|---|
所有者 |
选择以指示在对象已“配对”之后,应比较所有数据库对象的“所有者”属性。 |
表格选项
选项 |
行动 |
---|---|
桌子 |
选择此父选项以启用所有表比较选项。取消选择以禁用所有其他选项。然后,您将取消选择或选择列表中的特定选项。 |
表-扩展属性 |
选择以指示应该比较表的扩展属性(例如,数据库版本和表空间)。 |
表-备注 |
选择以指示应该比较应用于表的备注。 |
列 |
选择此父选项以启用所有“列比较”选项。取消选择以禁用所有其他“列”选项。然后,您将取消选择或选择列表中的特定选项。 |
列-类型 |
选择以指示应该比较表列的数据类型名称。 |
栏-大小 |
选择以指示应该比较表列的数据类型大小。 |
列-默认值 |
选择以指示应该比较表列的默认值。 |
栏-位置 |
选择以指示应该比较表列的位置。 |
列-不为空 |
选择以指示应该比较“表列”的not null属性。 |
列-自动编号 |
选择以指示应该比较表列的自动编号属性(例如AutoNum,StartNum和Increment)。 |
列-不匹配的列 |
选择以指示应该比较模型和实时数据库之间不匹配的表列。通常,这些是存在于一个系统中但不存在于另一个系统中的列。 |
列-扩展属性 |
选择以指示应该比较表列的扩展属性(例如,无符号和零填充)。 |
列-备注 |
选择以指示应该比较应用于表列的备注。 |
约束条件 |
选择此父选项以启用所有“表约束比较”选项。取消选择以禁用所有“表约束”选项。然后,您将取消选择或选择列表中的特定选项。 |
约束-主键 |
选择以指示与主键相关的属性应进行比较。 |
约束-外键 |
选择以指示应比较与外键有关的属性。 |
约束-索引 |
选择以指示应该比较与索引相关的属性。 |
约束-唯一约束 |
选择以指示应该比较与唯一约束有关的属性。 |
约束-检查约束 |
选择以指示应比较与“检查约束”有关的属性。 |
约束-表触发器 |
选择以指示应比较与表触发器相关的属性。 |
约束-无与伦比的约束 |
选择以指示应该比较模型与实时数据库之间不匹配的表约束。通常,这些约束存在于一个系统中,而在另一个系统中不存在。 |
约束-扩展属性 |
选择以指示应该比较表约束的扩展属性(例如填充因子和聚类)。 |
约束-备注 |
选择以指示应该比较应用于表约束的备注。 |
笔记
- 当前,数据库比较功能可以对表,视图,过程,函数和序列对象类型执行比较