20、SQL Developer Data Modeler使用指南

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 操作步骤

  1. 正常创建第一个客户实体。
  2. 创建第二个实体时,将超类型属性设置为CUSTOMER,从而创建子类型。
  3. 可以设置正向工程选项,包括:
    • 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 创建域

  1. 选择“Tools | Domains Administration”,点击“Add”创建新域,这会将新域添加到默认域文件中。
  2. 添加域时,提供名称和逻辑类型详细信息,并添加大小和精度等详细信息。
  3. 也可以使用此对话框删除或修改域,这里所做的更改与设计分开维护,因此可以在不同设计中强制执行标准。
  4. 点击“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进行数据库建模和管理。同时,关注未来拓展方向,不断提升自己的技能和项目的质量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值