Oracle 技术网

使用继承和对象类型修改逻辑模型

<不要删除此文本,因为它是在浏览器中运行时生成的“主要”标题列表的占位符>

目的

本教程将介绍如何在 Oracle SQL Developer Data Modeler 中使用继承和对象类型修改逻辑模型。

所需时间

大约 30 分钟

概述

Oracle SQL Developer Data Modeler 提供了一整套数据和数据库建模工具和实用程序,包括实体关系建模、关系(模式)、数据类型或对象类型建模以及多维建模和 DDL 生成。它包括从各种源导入数据库以及导出到各种目标数据库,提供了多个格式化选项,并且通过一组预定义的设计规则来验证模型。

Oracle SQL Developer Data Modeler 将作为 SQL Developer 的扩展发布,并作为一个独立的产品面向那些只想使用可视化数据建模的开发人员。

在本教程中,您将从数据库目录导入模式、反向工程关系模型以创建一个逻辑模型、创建一个子图和显示、为一个实体创建两个子类型、正向工程为一个新的关系模型、创建一个类型并将该新类型与表关联,然后反向工程修改的表以同步关系模型和逻辑模型。

前提条件

开始本教程之前,您应该:

:本教程是在 Linux 环境中创建的。如果您使用的是 Windows 环境,其中的屏幕截图可能会略有不同。

从数据字典导入模式

在本节中,您将从数据字典中导入 HR 模式以创建关系模型。执行以下步骤:

.

打开 Oracle SQL Developer Data Modeler。如果您已完成了前面的教程并且没有退出 Oracle SQL Developer Data Modeling,选择 File > Close 关闭前面使用的模型。

 

.

选择 File > Import >Data Dictionary

 

.

需要创建一个数据库连接。单击 Add

 

.

输入以下信息并单击 Test Connection

Connection Name:orcl_system
Username:system
Password:<您的口令>
选中 Save Password 复选框
Hostname:localhost
SID:orcl

 

.

连接成功。单击 OK

 

.

再次单击 OK

 

.

从列表中选择您的连接,然后单击 Next

 

.

选中 HR 模式前面的复选框并单击 Next

 

.

在 Tables 选项卡下,单击 Select All

 

.

单击 Next

单击 Finish

 

.

查看日志文件。完成后,单击 Close

 

.

关系模型已成功创建。在下一节中,您将进行反向工程以创建逻辑模型。

 

将关系模型反向工程为逻辑模型

在本节中,您将对关系模型进行反向工程以创建逻辑模型。执行以下步骤:

.

选择 Engineer to Logical Model 图标。将打开一个工程窗口。

 

.

警告图标指出关系模型和逻辑模型的对象不同。展开 Tables 对象。


.

加号图标表明这些表将添加到逻辑模型中。单击 Engineer

 

.

逻辑模型已成功创建。在下一节中,您将创建一个子视图,其中仅包含与 employees 表相关的实体。

 

创建子视图

在本节中,您将基于和 employees 表相关的实体创建一个逻辑模型子视图。执行以下步骤:

.

右键单击图表的背景。可以使用 2 种不同的符号。在本教程中,选择 Bachman Notation。注意,默认情况下使用 Barker Notation。

 

.

现在使用 Bachman Notation。

 

.

右键单击 employees 实体并选择 Select Neighbors

 

.

接受默认的 1 个时区并单击 OK

 

.

您会看到已选中与 employees 表相关的实体。再次右键单击 EMPLOYEES 实体并选择 Create SubView from selected

 

.

创建了仅所选实体的子视图。

 

使用不同的显示

在本节中,您将为刚创建的子视图创建 2 种不同显示。一种显示使您能够根据一组相同的逻辑或关系模型对象更改图表的外观。执行以下步骤:

.

右键单击 Logical SubView_1 选项卡并选择 Create Display

 

.

可以最小化图表中详细信息的数量。右键单击图表中的空白处(确保您的光标未指向对象)并选择 View Details > Names Only

 

.

此时仅显示实体名称。

 

.

选择一个实体并拖动边角可以缩小该实体的大小。

 

.

按住 Shift 键选择图表上的每个实体。选择 Edit > Equal Width

 

.

您会看到现在图表上所有实体的宽度相同。您选择的第一个对象的宽度将决定所有实体的宽度。选择 Edit > Equal Height

 

.

现在,所有实体具有相同的宽度和高度。同样,您选择的第一个对象的高度决定所有实体的高度。您还可以重新手动绘制线条。右键单击图表的空白处并选择 Auto Route 以取消选择。

 

.

移动各个实体使空白处尽可能最大,然后重新划线。

 

.

您会看到有些线条仍然划得不对。要重划某条线,右键单击该线条并选择 Straighten Line

 

.

所有线条拉直后,您还可以拖动想移动的线条的末端将该线条移动到实体的另一边缘

 

.

如果要将某条线移至实体(形状)的另一边缘,选择拐点并将其移至新边缘。要添加或删除拐点,右键单击该线条并选择 Add Elbow 或 Remove Elbow。

 

.

创建拐点后,您可以将它拖放到希望的位置。您可能需要为一条线创建多个拐点。

 

.

下图的屏幕截图是移动实体和线条使空白处最大化的结果。

 

.

您还可以创建另一种外观不同的显示。右键单击 Logical - SubView 1 并选择 Create Display

 

.

右键单击图表的空白处并选择 Barker Notation

 

.

右键单击空白处并选择 View Details > All Details

 

.

使用 Barker Notation 显示每个实体的详细信息。放大实体可以看到所有属性,重新划线可将其拉直并且交叉最少。

 

.

在 Browser 树中,展开 Logical > SubViews > Logical - SubView_1 > Displays。双击 Display_1

 

.

将显示名称改为 Bachman - Names only,单击 OK

 

.

双击 Display_2。将显示名称改为 Barker - All Details,单击 OK

 

.

显示名称已更改。在下一节中,您将为 EMPLOYEES 实体创建 2 个子类型。

 

向一个实体中添加两个子类型

在本节中,您将向 EMPLOYEES(父类型实体)中添加 2 个子类型。执行以下步骤:

.

从 Barker - All Details Display 中选择 Create Entity 图标。

 

.

选择图表的任意空白处。输入 Sales 作为 Name 并选择 EMPLOYEES 作为 Super Type。然后,从左侧导航器中选择 Attributes

 

.

选择 Add Attribute 图标。

 

.

输入 Commission Percent 作为 Name,单击 Logical 作为 Datatype。从 Type 下拉列表中选择 NUMERIC,输入 2 作为 Precision,输入 2 作为 Scale。单击 OK 创建子类型。

 

.

您会看到在父类型 EMPLOYEES 和您刚刚为 Sales 创建的子类型之间有一条红色的线。可以将该关系表示为框中框 (Box in Box)。右键单击空白处并选择 Box-in-Box Presentation

 

.

您会看到子类型 Sales 出现在父类型 EMPLOYEES 内部。您可能需要放大 EMPLOYEES 父类型实体的大小,缩小 SALES 子类型实体的大小。

 

.

您希望在父类型 EMPLOYEES 和子类型 Sales 之间创建一个关系来存储 Account Manager。选择 1:N 关系图标。

 

.

首先,选择 EMPLOYEES 实体。

 

.

然后,选择 Sales 子类型。

 

.

您可以移动子类型和关系以便提供最佳显示。由于您已创建了 EMPLOYEES 和 Sales 之间的关系,因此希望将该关系重命名为 Account Manager。双击 Sales 子类型。

 

.

选择左侧导航器中的 Attributes

 

.

从列表中选择 EMPLOYEE_ID 属性。您会看到 EMPLOYEE_ID 作为外键属性列出。必须首先更改 General Option 设置,然后才能更改名称。单击 Cancel

 

.

选择 Tools > General Options

 

.

展开 Model 并选择 Logical。取消选中 Keep as the name of the Originating attribute 选项并单击 OK

 

.

再次双击 Sales 子类型。

 

.

选择左侧导航器中的 Attributes

 

.

从列表中选择 EMPLOYEE_ID 属性。将 EMPLOYEE_ID 更改为 Account Manager,单击 OK

 

.

您希望再创建一个名为 Non-Sales 的子类型。选择 New Entity 图标,并单击图表的空白处。

 

.

输入 Non-Sales 作为 Name,选择 EMPLOYEES 作为 Supertype,单击左侧导航器中的 Attributes

 

.

选择 Add Attribute 图标。

 

.

输入 Bonus Amount 作为 Name,选择 Logical 作为 Datatype。从 Logical Type 下拉列表中选择 NUMERIC,输入 10 作为 Precision,输入 2 作为 Scale,然后单击 OK

 

.

Non-Sales 子类型已成功创建。可以将两个子类型对齐以便它们以最佳方式显示。按住 Ctrl 键,选择这两个子类型:SalesNon-Sales。然后,选择 Edit > Align Left

 

.

子类型已对齐。在下一节中,您将正向工程为一个新的关系类型。

 

正向工程为一个新的关系模型

在本节中,您将逻辑子视图正向工程为一个新的关系模型。执行以下步骤:

.

首先,需要创建一个新的关系模型以将子视图正向工程为该模型。在左侧导航器中,右键单击 Relational Models 并选择 New Relational Model

 

.

关系模型 Relational_2 已成功创建。

 

.

要查看正向工程 EMPLOYEE 父类型及其子类型的策略,选择 Logical-SubView_1 选项卡,然后双击 EMPLOYEES 父类型实体。

 

.

查看 FWD Engineer Strategy 下的列表。您会看到该域当前设置为 Single Table,表示父类型和两个子类型中的所有属性将变为关系模型中的一个表。保留该设置不变。

 

.

单击左侧导航器中的 Attributes

 

.

选择 COMMISSION_PCT 属性并单击 Remove 图标。

 

.

单击 OK

 

.

现在,您可以创建关系模型了。选择 Engineer to Relational Model 图标。

 

.

在左侧下拉列表中,选择 Logical - SubView_1。在右侧下拉列表中,选择 Relational_2。您可以展开两侧的树,查看模型的变化以及受影响的对象。完成后,单击 Engineer

 

.

逻辑模型的子视图已工程化,结果已显示。您会看到子类型实体的属性出现在关系模型的 EMPLOYEES 表中。您希望更改所添加列的名称。双击 EMPLOYEES 表。

 

.

单击左侧导航器中的 Columns

 

.

按照如下所示更改名称并单击 OK

属性
Commission Percent COMMISSION_PCT
Account Manager ACCOUNT_MGR
Bonus Amount BONUS_AMT

 

.

更改成功完成。在下一节中,您将为员工地址创建一个类型。

 

添加新类型

在本节中,您将为 emp_address_typ 创建一个新类型。执行以下步骤:

.

您希望显示数据类型模型。在左侧导航器中,右键单击 DataTypes 并选择 Show

 

.

选择 New Structured Type 图标,并单击图表的空白处。

 

.

输入 emp_address_typ 作为 Name,单击左侧导航器中的 Attributes

 

.

单击 Add 图标。

 

.

输入 street 作为 Name,选择 Logical 作为 Datatype。选择 VARCHAR 作为 Type,输入 40 作为 Size。您希望再创建一个属性。单击 Add 图标。

 

.

输入 city 作为 Name,选择 Logical 作为 Datatype。选择 VARCHAR 作为 Type,输入 30 作为 Size。您希望再创建 2 个属性。单击 Add 图标。

 

.

使用前面的步骤再创建 2 个属性,然后单击 OK

属性 数据类型
state CHAR(2)
postal_code VARCHAR(10)

 

.

将显示您的数据类型。您希望将该数据类型指定给 EMPLOYEES 表中的一个新列。单击 Relational_2 选项卡。

 

.

双击 EMPLOYEES 表。

 

.

选择左侧导航器中的 Columns

 

.

单击 Add 列图标。

 

.

输入 Address 作为 Name。在 Datatype 中单击 Structured,从下拉列表中选择 emp_addtress_typ

 

.

单击 OK

 

.

表已更新,包含一个使用 emp_address_typ 的新列。在下一节中,您将 Address 列反向工程为逻辑模型中的父类型实体 EMPLOYEES。

 

同步关系模型和逻辑模型

在本节中,您将在 EMPLOYEES 表中添加的列工程化为逻辑模型中的父类型实体。执行以下步骤:

.

选择 Relational_2 选项卡,单击 Engineer to Logical Model 图标。

 

.

Relational_2 下,展开 Tables mapped to Hierarchies。在列表中展开第二个 EMPLOYEES 节点及其列。该节点与逻辑模型中的 Sales 子类型相对应。您不希望 Address 列添加到 Sales 子类型中。取消选择 Address 前面的复选框。

 

.

在逻辑模型中展开与 Non-Sales 实体相对应的 EMPLOYEES 节点及其列。您不希望 Address 添加到 Non-Sales 子类型中。取消选择 Address 前面的复选框。

 

.

向上滚动列表并展开第一个 EMPLOYEES 节点,可以看到 Address 列将添加到父类型中。确保 Address 前面的复选框已选中。然后单击 Engineer

 

.

将显示逻辑模型。单击 Logical - SubView_1 选项卡。

 

.

您会看到 Address 列已添加到 EMPLOYEES 父类型中。而没有添加到 Sales 或 Non-Sales 子类型中。

 

总结

在本教程中,您学习了如何:

Oracle Is The Information Company 关于 Oracle | Oracle RSS 信源 | 招聘 | 联系我们 | 网站地图 | 法律声明 | 使用条款 | 您的隐私权利