SQL Developer Data Modeler与扩展功能全解析
1. 物理模型构建
物理模型是DDL脚本的来源,比图表包含更多细节。构建物理模型有两种情况:
- 若从逻辑模型正向工程到关系模型,需从头开始构建物理模型,初始仅填充关系模型中的细节。
- 若基于现有数据库模型工作,导入模式时也会导入物理模型。
SQL Developer Data Modeler支持为每个关系模型创建多个物理模型,这对为不同数据库(如Oracle和非Oracle数据库,或Oracle的测试、开发和生产数据库)构建不同DDL脚本很有用。接下来将介绍以下操作:
- 从数据字典导入模式
- 创建新的物理模型
从数据字典导入模式
:
从数据库连接导入时,会导入表、列和视图等对象,并将它们放置在关系模型图上,还可导入表空间、角色和目录等物理属性,这些细节列在对象浏览器的物理节点下。使用数据字典导入向导可选择要导入的对象和对象类型。
创建新的物理模型
:
若没有物理模型并想创建一个,可展开关系模型,选择“物理模型”节点,右键单击并选择“打开”,打开“数据库站点”对话框,选择要添加物理细节的数据库,然后点击“确定”。此时,“物理模型”节点将包含所选数据库及支持定义额外物理细节的所有节点。
2. 新增数据库站点
Data Modeler允许为同一关系模型创建多个物理模型。例如,可为测试、开发和生产数据库定义物理属性,虽然表的定义相同,但物理表空间属性可能差异很大。在此之前,需要更新“数据库站点”列表,默认列表显示了SQL Developer Data Modeler支持的各种数据库和版本选项。添加新站点的步骤如下:
1. 选择“RDBMS站点管理”。
2. 添加新站点名称和数据库类型。
添加新站点后,可返回“物理模型”节点,打开更多物理站点。指定物理模型后,可添加物理属性的所有细节,如触发器和序列,还可定义表空间并将其与表和索引关联。
3. 查看物理属性
要调用物理模型中任何对象的属性对话框,可双击该项目,或右键单击并选择“属性”。此对话框与关系模型中的表属性对话框不同,可添加分区细节、模式名称和表空间等属性。通过添加模式名称,可为多个模式生成DDL;省略特定于数据库的细节(如模式名称和表空间细节),可生成更通用的脚本。
各物理模型对话框都有“传播属性”按钮,可设置一个对象的属性(如序列中的最大值或表的表空间),然后将该属性传播到同类型的其他选定对象。例如,将“CUSTOMERS”表的表空间设置为“USERS”,点击“传播属性”按钮,可选择要传播的属性以及要传播到的表(或对象),还可取消不想传播的属性。
4. 生成DDL
上述所有工作的最终目标是生成用于创建或更新模式设计的DDL脚本。生成DDL的操作步骤如下:
1. 调用DDL生成对话框,可通过“文件”|“导出”,然后选择所需的模型;也可点击工具栏中的“生成DDL”按钮,调用DDL文件编辑器对话框。
2. 选择正确的数据库后,点击“生成”,调用DDL生成选项对话框。默认情况下,所有对象都标记为要生成,可通过下方的选项卡移除DDL中不需要的项目。
3. 使用“树视图”选项卡为特定模式或未分配给用户的任何对象生成DDL。例如,若在物理模型中将各种对象与“HR”模式关联,可选择树中的“分配给用户”节点,展开所需用户(如“HR”),生成该模式的所有DDL。
4. 顶部的选项卡可驱动脚本中的额外文本,可切换某些对象名称或替换前缀。
5. 查看和应用设计规则
在考虑要生成的对象之前,确保模型合理很重要。SQL Developer Data Modeler提供了大量设计规则,可随时运行这些规则,帮助查找缺失项和命名错误的对象。可从DDL生成对话框调用设计规则对话框,在生成DDL脚本之前验证模型是否正常;也可通过“工具”|“设计规则”菜单访问。
当规则被违反时,会标记为警告(蓝色)或错误(红色),双击错误记录可导航到模型中问题的位置。大多数设计规则不可更新,也不能添加自己的规则,但可影响一些规则,如设置表名的最大长度。调用模型的属性对话框,“命名选项”节点提供了一些设计规则的默认设置。
6. 生成DDL脚本
验证设计规则并对模型进行任何额外更新后,可生成DDL。有标准DDL脚本、交互式脚本(运行时需要用户输入)和命令行脚本三种选择。生成的DDL将发送到单个文件,需保存并在SQL Developer或SQL*Plus中运行。
7. 更新现有模式
Data Modeler支持创建用于创建新数据库对象的DDL脚本,但用户通常希望更新模式,生成“ALTER…”而非“CREATE…”的DDL脚本。有两种情况需要处理:
- 从数据字典中的模式导入并创建关系模型,更新模型后,使用DDL“ALTER”脚本更新数据库模式。
- 有一个关系模型设计,数据库模式独立于设计被修改,需要查看两者之间的差异并创建DDL来更新数据库。
处理这两种情况的步骤如下:
1. 打开要比较的设计,连接到数据库,导入要与设计进行比较的对象,通过“文件”|“导入”|“数据字典”进行导入,按照正常导入对话框操作,直到到达摘要页面。
2. 选择是将对象导入现有模型还是创建新模型,若进行比较,应导入到现有模型,并确定“事实来源”是设计还是数据字典,根据决策可能需要交换目标模型。
3. 导入到现有模型会调用“比较模型”对话框,数据库导入细节显示在左侧,关系模型细节显示在右侧。若要使用数据库细节更新模型,需勾选左侧所需的值,然后点击“合并”按钮。
4. 若要使用模型作为“事实来源”更新数据库,需在导入对话框中选择“交换目标模型”选项,确保关系设计在左侧,成为更改的驱动力,此时可点击“DDL预览”按钮查看DDL“ALTER”命令。
8. 与Oracle SQL Developer集成
SQL Developer 2.1包含Data Modeler Viewer扩展,为用户提供了打开现有SQL Developer Data Modeler图表或基于数据库连接创建模型的选项。在SQL Developer中打开Data Modeler的操作步骤如下:
1. 选择“工具”|“Data Modeler”,打开逻辑和关系模型选项卡。
2. 打开后,可打开在Data Modeler中创建的任何数据模型。
3. 要在导航器中查看模型的详细信息,选择“视图”|“Data Modeler”|“浏览器”。
通过“文件”|“打开Data Modeler设计”可在SQL Developer 2.1中打开任何Data Modeler模型,打开模型和Data Modeler浏览器后,可浏览和查看所有模型属性,但模型和属性均为只读。
9. 创建新模型
Data Modeler Viewer扩展还允许根据可访问的数据库连接创建表、视图和约束的模型。创建新模型的步骤如下:
1. 展开“连接”导航器中的数据库连接。
2. 选择要包含在图表中的表。
3. 将选择的表拖到关系模型上。虽然不能保存模型,但可移动图表上的对象来更改默认布局。
10. 创建和运行报告
构建数据模型的一个重要方面是针对设计运行报告,以确定是否存在以下情况:
- 没有列的表
- 没有属性的实体
- 未设置数据类型的列或属性
SQL Developer和SQL Developer Data Modeler协同工作以支持此功能。可使用Data Modeler创建设计并保存到报告存储库,然后使用SQL Developer对保存的设计运行预定义报告。
设置报告模式
:
在将任何设计导出到报告模式之前,需要创建一个拥有报告存储库中表的用户,该存储库由42个表及其列和关联索引组成。可使用SQL工作表或“其他用户”上的“创建用户”上下文菜单创建存储库所有者,并授予该用户“CONNECT”和“RESOURCE”权限。
导出设计并运行报告
:
1. 在SQL Developer Data Modeler中创建并完善数据模型设计。
2. 选择“文件”|“导出”|“到报告模式”,首次导出设计时,需要创建与新存储库模式的连接,点击“添加”按钮,打开“新数据库连接”对话框,由于存储库建立在Oracle数据库中,所以这里的连接细节是针对Oracle连接的。创建连接后,后续导出可重复使用。
3. 首次导出时,将在存储库模式中创建存储库的表,后续导出会向表中写入新记录。
4. 导出设计后,打开SQL Developer,选择“视图”|“报告”选项卡,展开“Data Modeler报告”节点,有“设计内容”和“设计规则”两类报告。默认情况下,报告中显示每个设计的最新报告,若要查看设计的所有导出,在运行报告时在“输入绑定值”对话框中输入“FALSE”,然后点击“应用”。
可使用这些报告验证设计的完整性,或创建额外的报告以提取模型的更多细节。例如,运行“设计规则”|“关系模型”|“列”报告,可确定哪些列未设置数据类型,并显示这些列所属的表。
11. SQL Developer的可扩展性
Oracle SQL Developer基于Java框架编写,该框架由Oracle JDeveloper提供,通常称为JDeveloper IDE或Fusion Client Platform (FCP)。此框架为Oracle JDeveloper和Oracle SQL Developer开发者添加功能提供了基础结构,且具有可扩展性,开发工程师和最终用户可添加功能,扩展的类型从单个XML报告到作为JAR文件捆绑的复杂Java扩展不等。主要介绍了添加XML扩展的支持范围,对于具备SQL和PL/SQL技能的数据库开发者来说,添加XML扩展是可行的,同时也会讨论如何使用现有的Java扩展。
可扩展性概述
:
在软件开发中,可扩展性意味着软件可以添加组件而不影响或更改底层代码,底层代码在基础设施中提供了专门用于添加新组件的“钩子”,使开发者能够添加产品未提供的新功能或替代功能。
SQL Developer中的可扩展性
:
FCP允许用户构建可添加到JDeveloper或SQL Developer中的Java扩展,可使用Java构建大型复杂功能,如SQL Developer中的迁移和版本控制支持就是例子,也有外部客户在构建Java扩展。
SQL Developer还提供了额外的基础设施,带有代码“钩子”,可仅使用嵌入SQL和PL/SQL的XML添加项目,可添加的额外项目类型包括:
- 显示编辑器
- 上下文菜单
- 报告
- 导航器节点
扩展的构建者
:
由于支持XML和Java扩展,不同类型的扩展有不同的构建者。XML扩展通常由精通SQL和PL/SQL的开发者使用,这些开发者是使用工具和命令行界面访问数据库的数据库开发者和DBA,他们构建的扩展通常在团队或公司内共享。Java扩展更多由Oracle的开发团队、Oracle合作伙伴以及其他精通Java的开发者和工程师开发,如Oracle TimesTen和版本控制导航器就是Oracle开发的Java扩展,由不同团队构建并作为SQL Developer的一部分发布。Java捆绑扩展(可能是XML和Java的组合)适合作为商业实体,有一些公开的基于Java的用户定义扩展,有些是商业的,有些是免费的。
扩展的原因
:
软件产品并不总是能提供开发环境所需的全部功能,能够向现有功能中添加一些额外组件,可根据特定需求增强开发环境。使用SQL Developer扩展时,团队中只需一人创建扩展,然后可共享,从而创建一个增强的、符合公司标准的工具。例如,虽然SQL Developer主要面向数据库开发者,但很多人有自己的沙箱数据库,希望使用SQL Developer维护和查看表空间,而SQL Developer在这方面提供的DBA相关实用工具较少,因此这是一个具有丰富扩展机会的领域。
SQL Developer XML扩展类型
:
接下来重点介绍XML扩展,任何掌握SQL和PL/SQL的人都可以添加这些扩展。虽然创建的文档是用XML编写的,但它们符合一组XML Schema Definition (XSD)标准,可将其视为模板。无论添加的是作为JAR文件捆绑的Java扩展,还是单独或作为JAR文件捆绑的XML扩展,都需要重启SQL Developer以使添加生效。下面将从最简单的扩展类型开始,逐步介绍更复杂的类型。
添加XML扩展
:
无论添加哪种XML扩展,将文件添加到SQL Developer的方式相同,可作为单个文件或作为JAR文件捆绑。添加单个文件或少量文件时,可单独添加,操作步骤如下:
1. 选择“工具”|“首选项”。
2. 展开“数据库”|“用户定义扩展”。
3. 点击“添加”。
4. 添加扩展细节,然后重启SQL Developer。
若有大量文件,将它们捆绑在JAR文件中添加更高效,但创建JAR文件需要一定的Java知识,因此这里主要介绍单独添加的方式,后续会介绍如何添加Java扩展。
综上所述,SQL Developer Data Modeler提供了丰富的功能,涵盖逻辑、关系和多维模型的图形和文本建模工具,可从数据字典导入模型或从头创建模型,进行正向和逆向工程,构建物理模型并生成DDL。同时,SQL Developer的可扩展性为用户提供了根据自身需求定制和增强功能的机会,无论是数据库开发者还是数据架构师,都能利用这些功能满足不同的工作需求。
SQL Developer Data Modeler与扩展功能全解析
12. XML扩展类型及示例
下面详细介绍SQL Developer中可添加的XML扩展类型,并给出相应示例。
12.1 显示编辑器
显示编辑器扩展可用于自定义对象在SQL Developer中的显示方式。例如,对于特定类型的表,可通过显示编辑器扩展来改变其列的显示顺序、格式等。创建显示编辑器扩展的XML文件时,需遵循特定的XSD标准。以下是一个简单示例:
<display-editor>
<name>Custom Table Display</name>
<description>Customize the display of tables</description>
<target-type>Table</target-type>
<columns>
<column name="column1" display-name="Custom Column 1" format="YYYY-MM-DD"/>
<column name="column2" display-name="Custom Column 2"/>
</columns>
</display-editor>
在这个示例中,定义了一个名为“Custom Table Display”的显示编辑器,目标类型为“Table”,并对表中的两列进行了自定义显示设置。
12.2 上下文菜单
上下文菜单扩展可在对象的右键菜单中添加自定义选项。例如,为表对象添加一个“快速统计”的上下文菜单项,点击该菜单项可执行特定的统计查询。以下是一个上下文菜单扩展的XML示例:
<context-menu>
<name>Table Quick Stats</name>
<description>Perform quick statistics on a table</description>
<target-type>Table</target-type>
<items>
<item name="Quick Stats">
<action>
<sql>SELECT COUNT(*) FROM {object.name}</sql>
</action>
</item>
</items>
</context-menu>
此示例中,为表对象添加了一个“Quick Stats”的上下文菜单项,点击该菜单项会执行一个简单的统计查询。
12.3 报告
报告扩展可用于创建自定义的报告,以满足特定的数据分析需求。例如,创建一个报告来显示所有表的行数和占用空间。以下是一个报告扩展的XML示例:
<report>
<name>Table Space Report</name>
<description>Report on table space usage</description>
<query>
<sql>
SELECT table_name, num_rows, blocks * 8 AS space_kb
FROM user_tables
</sql>
</query>
<columns>
<column name="table_name" display-name="Table Name"/>
<column name="num_rows" display-name="Number of Rows"/>
<column name="space_kb" display-name="Space (KB)"/>
</columns>
</report>
该示例定义了一个名为“Table Space Report”的报告,查询用户表的行数和占用空间,并指定了报告的列显示名称。
12.4 导航器节点
导航器节点扩展可在SQL Developer的导航器中添加自定义节点。例如,添加一个“自定义表组”节点,用于组织特定的表。以下是一个导航器节点扩展的XML示例:
<navigator-node>
<name>Custom Table Group</name>
<description>Group of custom tables</description>
<parent-node>Tables</parent-node>
<filter>
<sql>table_name LIKE 'CUSTOM_%'</sql>
</filter>
</navigator-node>
此示例中,在“Tables”节点下添加了一个“Custom Table Group”节点,通过SQL过滤条件筛选出以“CUSTOM_”开头的表。
13. Java扩展的使用
虽然本书未详细介绍如何构建Java扩展,但会讨论如何使用现有的Java扩展。Java扩展通常以JAR文件的形式提供。添加Java扩展的步骤如下:
1. 确保已获取Java扩展的JAR文件。
2. 选择“工具”|“首选项”。
3. 展开“数据库”|“用户定义扩展”。
4. 点击“添加”,选择Java扩展的JAR文件。
5. 重启SQL Developer,使扩展生效。
使用Java扩展时,需注意其兼容性和依赖项,确保扩展能在当前的SQL Developer环境中正常工作。
14. 总结与展望
SQL Developer Data Modeler为数据建模和数据库开发提供了强大的功能。通过它,用户可以创建逻辑、关系和多维模型,从数据字典导入模型或从头开始创建,进行正向和逆向工程,构建物理模型并生成DDL脚本。同时,SQL Developer的可扩展性允许用户根据自身需求添加自定义功能,无论是通过XML扩展还是Java扩展。
在实际应用中,数据建模和数据库开发人员可以充分利用这些功能来提高工作效率,满足特定的业务需求。例如,数据库管理员可以通过扩展功能更好地管理数据库,开发人员可以根据项目需求定制开发环境。
未来,随着数据库技术的不断发展,SQL Developer Data Modeler可能会进一步增强其功能,提供更多的建模工具和扩展选项。同时,用户也可以根据自身的创新需求,开发出更多实用的扩展,为数据库开发和管理带来更多便利。
以下是一个总结的mermaid流程图,展示了SQL Developer Data Modeler的主要功能和操作流程:
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;
A([开始]):::startend --> B(创建逻辑和关系模型):::process
B --> C{是否有现有数据库模型}:::decision
C -->|是| D(从数据字典导入模型):::process
C -->|否| E(从头创建模型):::process
D --> F(构建物理模型):::process
E --> F
F --> G(生成DDL脚本):::process
G --> H(更新现有模式):::process
F --> I(查看和应用设计规则):::process
I --> G
F --> J(创建和运行报告):::process
B --> K(与Oracle SQL Developer集成):::process
K --> L(创建新模型):::process
K --> M(查看模型属性):::process
F --> N(添加数据库站点):::process
N --> F
F --> O(添加XML或Java扩展):::process
O --> P(增强功能):::process
P --> Q([结束]):::startend
通过以上的介绍和操作指南,希望读者能够更好地掌握SQL Developer Data Modeler的使用和扩展方法,在数据库开发和管理中发挥更大的作用。
以下是一个总结的表格,列出了SQL Developer Data Modeler的主要功能和对应的操作:
| 功能 | 操作步骤 |
| — | — |
| 构建物理模型 | 从逻辑模型正向构建或从现有数据库模型导入,支持多物理模型 |
| 新增数据库站点 | 更新数据库站点列表,添加新站点并指定物理属性 |
| 查看物理属性 | 双击或右键选择属性,可传播属性 |
| 生成DDL | 通过文件导出或工具栏按钮,设置生成选项 |
| 查看和应用设计规则 | 从DDL生成对话框或工具菜单调用,处理违规规则 |
| 生成DDL脚本 | 验证规则后选择脚本类型生成 |
| 更新现有模式 | 导入对象,比较模型,根据事实来源更新 |
| 与Oracle SQL Developer集成 | 在SQL Developer中打开Data Modeler,查看和创建模型 |
| 创建新模型 | 从数据库连接选择表拖到关系模型 |
| 创建和运行报告 | 设置报告模式,导出设计,运行报告验证完整性 |
| 添加XML扩展 | 选择首选项,添加扩展文件,重启SQL Developer |
| 使用Java扩展 | 获取JAR文件,添加到用户定义扩展,重启SQL Developer |
超级会员免费看
2882

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



