SQL Developer Data Modeler使用指南
1. 基本操作
1.1 设置图表属性
- 可在对话框中设置图表的基数(Cardinality)、可选(Optional)和标识(Identifying)属性。通过在图表中选择关系并调用属性对话框,也能调用相同的对话框。
- 若要在模型上显示关系名称,可使用“Tools | General Options”菜单,选择“Diagram | Logical Model”来设置显示属性“Show Source/Target Name”。
1.2 创建弧线
创建弧线时,需要在弧线中选择两个关系以及关联的实体,这会使绘图工具栏上的弧线按钮处于焦点状态。
1.3 支持替代符号
SQL Developer Data Modeler支持两种实体关系图(ERD)符号:Barker和Bachman符号,并允许在它们之间切换。设置默认使用的符号,可选择“Tools | General Options | Diagram| Logical Model”。建议保持使用一种符号,因为它们在视觉和语义上存在细微差异。例如,在Barker符号中,分析的这个阶段不包含外键列,而Bachman符号则包含。在SQL Developer Data Modeler中,通过在图表模型中不包含外键列,但在定义中包含详细信息来支持这一点。
1.4 Barker符号元素说明
| 元素 | 表示方式 | 示例说明 |
|---|---|---|
| 强制项 | 用 * 表示,通常位于列表顶部 | 建议先列出强制项,以便在正向工程后它们位于表的开头 |
| 主键 | 用 # 表示 | 无 |
| 可选项 | 用 ○ 表示 | 无 |
| 可选关系 | 用虚线表示,代表“MAY HAVE” | 如“Each department MAY HAVE one or more employees” |
| 强制关系 | 用实线表示,代表“MUST HAVE” | 如“Each employee MUST work in a department” |
在Barker和Bachman符号中,ORDER和ORDER_ITEM实体之间的标识关系用竖线表示,表明外键是主键的一部分。
2. 子类型和超类型建模
2.1 场景分析
当需要定义一个CUSTOMER实体,且存在特殊类型的客户,需要在设计中进行不同处理时,可以创建一个客户实体作为超类型,然后为特殊客户创建子类型。
2.2 操作步骤
- 正常创建第一个客户实体。
- 创建第二个实体时,将超类型属性设置为CUSTOMER,从而创建子类型。
-
可以设置正向工程选项,包括:
- Single Table
- Table per child
- Table for each entity
2.3 表示方式
可以选择“Box-in-Box Presentation”符号表示子类型和超类型关系。若取消选择该选项,子类型将用红线与超类型连接显示。
3. 创建约束、域和设置默认值
3.1 域的概念
域是一种定义的数据类型,可能有相关的有效值。通过定义域,可以在整个模型中重用它们,为模型提供一致性。例如,创建一个Yes/No域,设置数据类型并将有效值关联到Yes和No,然后将其关联到所有使用Yes/No值的列或实体。域不一定需要关联有效值,也可以只设置数据类型,然后将域应用到列或实体。可以独立于ERD或关系模型处理域和默认值。如果在属性级别设置这些,然后进行正向工程,详细信息将被传递到表和列中。不过,也可以直接将它们添加到列中。
3.2 数据类型类别选择
设置属性或列的数据类型时,有以下类别可供选择:
- Domains
- Logical
- Distinct
- Structured
- Collection
其中最常见的是Logical类型,可以设置数据类型的类型和比例。处理大量实体和属性时,使用域更高效,因为对域所做的任何更改都会传播到所有使用它们的列或属性。SQL Developer Data Modeler提供了一个默认的域文件,添加到该文件的所有域都可用于所有正在处理的设计。也可以创建一个域文件用于特定设计。
3.3 创建域
- 选择“Tools | Domains Administration”,点击“Add”创建新域,这会将新域添加到默认域文件中。
- 添加域时,提供名称和逻辑类型详细信息,并添加大小和精度等详细信息。
- 也可以使用此对话框删除或修改域,这里所做的更改与设计分开维护,因此可以在不同设计中强制执行标准。
- 点击“Domains Administration”对话框中的“Select”按钮,可以创建与设计关联的单独域文件,创建后,按上述方法添加新域到文件中。要在设计中使用这些域,选择“File | Import | Domains”。保存设计时,这些域将与设计一起保存。
3.4 使用域实现检查约束
域不仅能提供标准数据类型,还可以包含有效值,从而允许使用域来:
- 实现检查约束
- 强制值的范围
- 提供一组有效值
添加检查约束到域时,可以添加特定于数据库版本的约束,也可以选择创建通用约束,该约束将应用于所选的任何数据库。
3.5 为属性或列分配域有效值
设置数据类型属性时,将域值添加到属性或列中。双击表或实体调用属性对话框,然后选择“Columns”或“Attributes”节点设置属性。如果域有关联的有效值或约束,在正向工程或生成DDL脚本时会被获取。
3.6 在属性或列级别设置有效值
使用实体属性对话框为单个属性或列设置有效值或定义检查约束。双击相关属性调用对话框。例如,命名约束并选择“Use Domain Constraints”,会在DDL中强制执行命名检查约束;省略约束名称,生成的DDL将包含内联约束。如果要在此级别覆盖有效值或约束,取消选择“Use Domain Constraints”选项,并选择所需的选项。
3.7 添加默认值
使用上述列属性对话框,可以为数据库列设置默认值。设置默认值时,在树中选择“Default and Constraint”属性。例如,为MARITAL_STATUS列设置了检查约束,同时也设置了该列的默认值。
graph LR
A[开始] --> B[创建域]
B --> C[设置域属性]
C --> D[关联域到属性或列]
D --> E[设置检查约束和默认值]
E --> F[正向工程或生成DDL脚本]
F --> G[结束]
4. 正向和反向工程
4.1 概述
SQL Developer Data Modeler支持正向和反向工程,这些转换工具支持:
- 从ERD正向工程到新的或现有的关系模型
- 从关系模型反向工程到新的或现有的ERD
工程到现有模型时,可以选择是否包含不同模型中所做的更改。
4.2 正向工程
4.2.1 创建新关系模型
SQL Developer Data Modeler为每个逻辑模型支持多个关系模型。无论从逻辑模型开始,还是逻辑模型从现有关系模型派生而来,都可以正向工程到新的关系模型。通过在对象浏览器的“Relational Models”上下文菜单中选择“New Relational Model”创建一个空的关系模型,这会自动打开一个新的空白关系模型。打开逻辑模型并选择“Engineer to Relational Model”按钮,对话框打开后,可使用关系模型的下拉列表确定要更新或创建的模型。
4.2.2 工程对话框特性
-
不同图标表示不同的更新情况:
- 警报图标( )表示两个模型之间的项目存在一些差异。
- ( )和( )图标分别表示已删除或新添加的项目。
- 更新大型模型时,可使用过滤器仅显示新的、修改的或删除的项目,也可以取消选择不想显示的项目,然后点击“Update Tree”按钮刷新树。
- 工程时,可以选择减少工程的属性范围。在属性 - 列选择中有一个属性列表,可以取消选择不想工程的属性,然后选择“Show Selected Properties Only”刷新对话框视图。
4.2.3 维护模型布局
正向或反向工程现有模型时,可以选择使用驱动模型的布局更新现有模型布局,或者在不更新现有模型布局的情况下包含更新的项目。若要在工程时维护现有布局,在工程对话框中选择“General Options”选项卡,并确保选择“Engineer Coordinates”。“Engineer Coordinates”属性的默认值是选中的,即默认情况下,驱动模型的布局用于创建或更新工程模型。
4.3 反向工程
反向工程是正向工程的反向操作,使用关系模型创建或更新逻辑模型。如果已有模型,需要围绕布局以及添加、删除或更新项目做出决策。在进行“自下而上的设计”时,反向工程关系模型到逻辑模型非常有用。即从现有脚本或数据字典导入表定义,创建并完善关系模型后,反向工程该模型以创建逻辑实体关系图。
5. 关系模型创建与操作
5.1 关系模型组成
关系模型由表和视图及其列和关系组成,这些项目的详细信息列在对象浏览器的“Relational Models”节点下,也是图表上显示的唯一详细信息。表空间、触发器或任何物理属性等详细信息列在物理模型中。
5.2 创建关系模型
可以通过从逻辑模型正向工程详细信息创建关系模型,也可以从数据字典中的现有架构导入详细信息。处理关系模型可能涉及添加表和外键约束,或修改现有模型,也可以从头开始创建关系模型。
5.3 创建表和添加列
表属性对话框与实体属性对话框类似。设置通用属性并添加列详细信息后,可以构建约束。添加列时,需要指定数据类型,并尽可能考虑使用域。如果正向工程未设置,可直接添加列默认值并设置检查约束,也可使用域来实现。创建约束和设置域的方法与前面属性的操作相同。
5.4 包含外键约束
5.4.1 创建外键关系
使用图表绘制线条轻松构建外键关系。点击“New FK Relation”按钮,点击父表,再点击子表。例如,选择JOBS表作为父表,JOB_HISTORY表中原本没有JOB_ID外键列,数据建模器会自动添加。
5.4.2 修改引用列
如果想使用自己的列,可以更改引用列。双击外键关系,选择“Associated Columns”,从“Child Column”下拉列表中选择新列。如果从自动生成的列更改列,默认会提示删除添加的列。
5.4.3 删除外键关系
在图表上选择线条,使用键盘选择“Delete”删除外键关系。如果使用图表删除关系且外键列是自动生成的,会出现提示。可以选择“Tools | General Options”菜单,选择“Model | Relational”并选择所需的“Delete FK columns Strategy”来控制删除外键时的行为。
5.5 设置命名标准模板
SQL Developer Data Modeler提供了支持创建、强制执行和验证命名标准的功能。这里主要介绍为关系模型定义的命名标准模板,这在导入现有模型且其标准不符合行业或公司标准时特别有用,可以对整个模型或模型中的对象选择运行一组标准模板。
5.5.1 查看或更新默认模板
打开“Tools | General Options”对话框,选择“Naming Standard | Templates”。
5.5.2 模板应用
模板可应用于关系模型,确保所有键、索引和约束按照预定义的标准命名。例如,主键模板为{table}_PK,创建任何主键约束时将使用此命名约定,应用标准到模型时,该约定将应用于所有现有主键约束。但命名标准模板不是验证规则,如果应用模板后继续添加和修改模型,除非重新应用模板,否则不会进行进一步检查。
5.6 应用模板到模型
每个表对话框都有一个“Naming Rules”按钮,用于应用模板细节。可以选择应用规则的项目,包括:
- 主键和外键
- 检查和唯一约束
- 索引
- 列检查约束
5.7 更新对象名称前缀
在处理模型时,可能会为所有表添加与应用程序相关的名称或代码作为前缀。“Change Object Names Prefix”允许为所有表、列、视图或索引添加新前缀,或用新前缀替换当前前缀。
示例DDL代码
CREATE TABLE CUSTOMERS
(
CUSTOMER_ID NUMBER (6) NOT NULL ,
CUST_FIRST_NAME VARCHAR2 (20 BYTE) NOT NULL ,
CUST_LAST_NAME VARCHAR2 (20 BYTE) NOT NULL ,
CUST_ADDRESS CUST_ADDRESS_TYP ,
PHONE_NUMBERS PHONE_LIST_TYP ,
NLS_LANGUAGE VARCHAR2 (3 BYTE) ,
NLS_TERRITORY VARCHAR2 (30 BYTE) ,
CREDIT_LIMIT NUMBER (9,2) ,
CUST_EMAIL VARCHAR2 (30 BYTE) ,
ACCOUNT_MGR_ID NUMBER (6) ,
CUST_GEO_LOCATION MDSYS.SDO_GEOMETRY ,
DATE_OF_BIRTH DATE ,
MARITAL_STATUS VARCHAR2 (20) DEFAULT 'Married' ,
GENDER VARCHAR2 (10) CHECK(GENDER IN ('Female','Male')) ,
INCOME_LEVEL VARCHAR2 (20 BYTE)
)
;
ALTER TABLE CUSTOMERS
ADD CONSTRAINT Status
CHECK (MARITAL_STATUS IN ('Divorced','Married','Single'))
;
通过以上操作和设置,可以充分利用SQL Developer Data Modeler进行数据库建模和管理。
SQL Developer Data Modeler使用指南
6. 总结与最佳实践
6.1 核心要点回顾
- 基本操作 :掌握了图表属性设置、弧线创建以及不同符号(Barker和Bachman)的使用和区别。
- 子类型与超类型建模 :学会在特定场景下创建子类型和超类型,并设置正向工程选项。
- 约束、域与默认值 :理解了域的概念和作用,学会创建域、使用域实现检查约束、为属性或列分配域有效值以及设置默认值。
- 正向和反向工程 :了解了正向工程从ERD到关系模型、反向工程从关系模型到逻辑模型的操作,以及如何维护模型布局。
- 关系模型操作 :掌握了关系模型的创建、表和列的创建、外键约束的处理、命名标准模板的设置和应用,以及对象名称前缀的更新。
6.2 最佳实践建议
- 符号选择 :建议在整个项目中保持使用一种符号(Barker或Bachman),避免因符号差异带来的混淆。
- 域的使用 :处理大量实体和属性时,优先使用域,提高数据类型管理的效率和一致性。
- 模型布局维护 :如果在模型布局上花费了较多时间,在工程时选择维护现有布局,保留之前的工作成果。
- 命名标准 :使用命名标准模板规范模型中对象的命名,提高模型的可读性和可维护性。
6.3 操作流程总结
| 操作类型 | 操作步骤 |
|---|---|
| 创建域 | 选择“Tools |
| 正向工程 | 在对象浏览器的“Relational Models”上下文菜单中选择“New Relational Model”创建空关系模型;打开逻辑模型,选择“Engineer to Relational Model”按钮,通过下拉列表确定要更新或创建的模型。 |
| 反向工程 | 使用关系模型创建或更新逻辑模型,已有模型时考虑布局及项目的添加、删除或更新。 |
| 创建表和添加列 | 使用表属性对话框设置通用属性和列详细信息,指定数据类型,考虑使用域,添加默认值和设置检查约束。 |
| 包含外键约束 | 点击“New FK Relation”按钮,依次点击父表和子表;可修改引用列;选择线条按“Delete”删除外键关系,可设置删除策略。 |
| 设置命名标准模板 | 打开“Tools |
| 应用模板到模型 | 在表对话框中点击“Naming Rules”按钮,选择应用规则的项目。 |
| 更新对象名称前缀 | 使用“Change Object Names Prefix”为表、列、视图或索引添加或替换前缀。 |
6.4 常见问题与解决方法
| 问题 | 解决方法 |
|---|---|
| 模型更新时显示过多项目 | 使用过滤器仅显示新的、修改的或删除的项目,或取消选择不想显示的项目后刷新树。 |
| 工程时不想包含某些属性 | 在属性 - 列选择中取消选择不想工程的属性,选择“Show Selected Properties Only”刷新视图。 |
| 删除外键关系时提示问题 | 选择“Tools |
6.5 未来拓展方向
- 复杂模型处理 :随着项目规模的增大,可能会遇到更复杂的模型结构,需要进一步探索如何高效处理这些复杂模型。
- 与其他工具集成 :考虑将SQL Developer Data Modeler与其他数据库开发和管理工具集成,提高工作效率。
- 自动化脚本编写 :可以编写自动化脚本来执行一些重复性的操作,如批量创建域、应用命名标准等。
graph LR
A[开始项目] --> B[选择符号]
B --> C[创建域]
C --> D[构建逻辑模型]
D --> E[正向工程到关系模型]
E --> F[维护模型布局]
F --> G[设置命名标准]
G --> H[应用模板和更新前缀]
H --> I[进行数据库操作]
I --> J[结束项目]
通过遵循上述最佳实践和操作流程,结合常见问题的解决方法,用户可以更加高效、准确地使用SQL Developer Data Modeler进行数据库建模和管理。同时,关注未来拓展方向,不断提升自己的技能和项目的质量。
超级会员免费看
1424

被折叠的 条评论
为什么被折叠?



