Terry Halpin
Microsoft Corporation
2001年11月
摘要:本文是介绍 Microsoft Visual Studio Enterprise Architect 中基于 Visio 的数据库建模组件系列文章中的第二篇。第一部分讨论了如何创建新的对象角色建模 (ORM) 源模型,如何在 fact editor(事实编辑器)中添加句子类型、基本内部约束及示例,如何将事实类型从 business rules editor(业务规则编辑器)拖到绘图窗口中,以及如何保存模型。还说明了如何通过创建数据库模型项目、添加 ORM 源模型、然后构建逻辑模型,将 ORM 模型映射到逻辑数据库模型。最后介绍了如何通过选择目标 DBMS 和生成 DDL 脚本来从逻辑模型生成物理数据库模型。第二部分将讨论如何使用描述器,将对象类型标记为独立类型、对象化关联以及将其他一些 ORM 约束添加到 ORM 源模型中。
目录
- 简介
- 描述器
- 独立对象类型和数据库属性表
- 对象化关联(嵌套)
- 添加外部唯一性约束
- 添加分离性强制角色(或)约束
- 添加值约束
- 总结
- 参考书目
简介
Microsoft® Visio® for Enterprise Architects (VEA) 包含在 Visual Studio® .NET 的 Enterprise Architect 版本中,当前为 Beta 2。发布 Beta 2 后,已经对产品做出了许多增强以及错误修正。VEA 的最终版本将成为 Microsoft Visio Professional 2002 的超集版本。同样,该产品将包含 Visio Professional 中的简单对象角色建模 (ORM) 图形解决方案,以及可以提供到/自物理数据库架构的正向/反向工程的深层 ORM 源模型解决方案。本产品的帮助文件引用简单绘图模具作为 ORM 制图器,引用深层建模解决方案作为 ORM 源模型。ORM 源模型可以用于制图和工程,而且是本系列文章中讨论的唯一 ORM 解决方案。Bate 版中通常不包括帮助文件,不过目前这些文件可以从 Web 上下载。
本系列文章简单介绍了如何在 Visual Studio Enterprise Architect 中使用基于 Visio 的数据库建模解决方案。本文重点介绍 ORM 解决方案中的描述器、对象独立、嵌套以及其他约束。假定本文的读者已经熟悉 ORM 和关系数据库建模。ORM 的概述可从网上下载 [参考书目 ]1 和参考书目 2],有关 ORM 和数据库建模的处理方式,在我最新出版的书 [参考书目 ]3] 中进行了详细的讨论。
上一篇文章讨论了如何创建简单的 ORM 模型,以及如何先将该模型映射到逻辑数据库架构,再将其映射到物理数据库架构 [参考数目 ]4]。我在那篇文章中指出,所有 Visio 模具和模板都具有 U.S. 单位和公制单位两种版本。在最终版本中,默认情况下只安装适用于用户所在地区的版本(U.S. 或公制)。如果要同时安装两个版本,应当选择自定义安装选项并指出还需要其他版本的解决方案。
描述器
ORM 源模型和数据库逻辑模型解决方案都能自动描述所选模型的任何部分,包括用户可能输入的任何示例。在与非技术领域专家交流模型的意义时,此功能非常有用。为了说明此功能,请打开随产品提供的 Employee ORM 源模型示例,方法是:选择
File | New | Browse Sample Drawings(文件 | 新建 | 浏览绘图示例),然后选择
Database(数据库)文件夹和 Employee ORM 源示例文件,并单击
Open(打开)按钮(参阅图 1)。
图 1:打开 ORM 源模型示例(单击图像以查看大图片)此时应显示 Employee 源模型的 Employee 页。完整的模型包括三页:Employee、Project 和 Room。当前显示页的名称显示在绘图窗口下方的选项卡中。默认情况下,在绘图窗口下方仅显示 Database Properties(数据库属性)和 Business Rules(业务规则)窗口。要打开描述器窗口,请从主菜单中选择
Database | View | Verbalizer(数据库 | 视图 | 描述器)。此时,应在绘图窗口下方显示描述器。现在,使用鼠标选择所要描述的模型的一部分。在图 2 中,我选择了主要的外部唯一性约束。在描述器窗口中将显示其描述。
图 2:对主要的外部唯一性约束的描述(单击图像以查看大图片)要选择单个模型元素,直接单击该元素即可。要选择所要描述的模型区域,请按住鼠标左键,并沿这一区域的对角线拖动光标。描述器将描述该区域中模型的各个方面(如果添加了事实示例,还包含这些示例)。描述器窗口保持打开状态,直到您将它关闭,但我通常开着此窗口。通过选择已显示窗口底部的相关选项卡,可以随时选择在制图器下方显示哪个窗口,例如 Database Properties (数据库属性)窗口、Business Rules(业务规则)窗口或 Verbalizer(描述器)窗口。
独立对象类型和数据库属性表
在图 2 中,二元关联
Employee took Course(雇员接受培训)已经对象化为
Coursework(培训工作)。由此讨论范围 (UoD),我们可以知道某个雇员接受了给定的培训课程,但她/他不知道在培训中获得的最终等级。因此,无论这些雇员是否扮演 UoD 中的其他角色,培训工作的实例都可以独立存在。因此,培训工作被标记为“independent”(独立),显示时名称后带有“!”。指定该对象类型为独立时,工具将自动输入此标记。
要将某对象类型指定为独立,请选择该对象类型,并在其数据库属性表中输入一个条目。如果当前正在显示数据库属性表,您只需单击对象类型以查看其属性。或者,双击该对象类型显示其属性表。
上一篇文章中讨论了如何使用 Fact Editor(事实编辑器)指定单个句子类型的基本方面。使用数据库属性表可以执行使用 Fact Editor 能够执行的全部操作,还可以执行更多的高级任务。其附加功能之一是带有指定某对象类型是否独立的复选框(参阅图 3)。此处显示此表的 Definition 窗格。只需在 Categories 列表上选择属性表的其他窗格,即可显示该窗格。
图 3:在数据库属性表中指定培训工作的独立性(单击图像以查看大图片)对象化关联(嵌套)
考虑
Employee took Course(雇员接受培训)关联。为了能够记录某雇员接受给定培训的最终等级(如果有),该关联被对象化为培训工作,并添加事实类型
Coursework resulted in Grade(培训工作结果等级)。由于培训工作对象类型中嵌套了一个关联,所以此对象类型被称为嵌套类型。嵌套是使用 Fact Editor 的 Advanced 窗格指定的。如果您刚刚在 Fact Editor 中输入了新的事实类型(例如,
Employee plays Sport [雇员参与运动]),而且编辑器保持打开状态,则可以在关闭编辑器前添加嵌套。相反,如果您将对象类型放在要进行对象化的图表中,则先选择事实类型,再打开 Fact Editor,可使用
Database | View | Fact Editor(数据库 | 视图 | 事实编辑器)。然后选择 Advanced(高级)选项卡,并在“Objectify / Nest fact as:”字段中输入已对象化的关联名称。例如,将
Employee plays Sport(雇员参与运动)对象化为 Play。图 4 显示了模型示例中的培训工作关联的嵌套声明。