你应该能够看到在 Order Id 属性的左侧有一个银色的钥匙的图标,指明这个一个候选键。
重复上面的步骤指定下面的候选键:
Order Detail: Order Detail Id Product: Product Id
你能够在任何非空标记的实体上产生一些或者所有的属性。
实体关系:强关联你现在有了具有完整属性的实体了,并通过代理键和候选键分配了主键的值。然而,超市数据库的设计还不是非常完整。你还没有引入任何在实体之间的关联 - 在实体关系图中你有责任产生的实体之间的"关系"。为了完成这个,在 Toolbox 视图中从 UML Class 面板中使用各种关联。
首先,看一下在 Order 和 Order Detail 之间的关联。这是一个典型的父-子关系:如果没有父 Order,将不会有 Order Detail 的存在。在 Data Modeler 中,这是一个强关联。使用工具栏中的 Composition Association 关联来表示它。
1. 选择逻辑数据模型图。
2. 在 UML Class 面板上点击一下 Composition Association 。
3. 在图中的 Order 实体上点击一下。
4. 在图中的 Order Detail 实体上点击一下。
一个关联被画在了两个实体之间。这是在 Properties 视图中使用它的可见的特性被自动选择的。如下调整特性:
1. 改变 End1Name 为 _Child Order Lines 。
2. 改变 End2Name 为 _Parent Order 。
3. 改变 End2Multiplicity 为 1 。
逻辑数据图中的结果看起来应该如下图:
关系的命名在实体关系建模中是被鼓励的,虽然有时你也许会争论关系是如此的明显,命名是没有必要的。
多样性确认:
一个 Order 的实例能够为一个 Order Detail 而存在(甚至虽然你还没有到物理这一级)。
为一个 Order 视图能够有零个和任何数量的 Order Detail 实体存在。这是由星号对面的被命名为 _Child Order Lines 的关系决定的。
当在 Data Modeler 的结构化的模型中处理多样性时, Data Modeler 再一次的提供了图形化显示关系的优点。
实体关系:弱关联一个 Order Detail 的实例需要一个 Order 实例的存在,因为在他们之间存在着强关联。然而, Order 和 Supplier 实体能够很好的独立存在 - 每一方都不一定需要对方的存在(因为是弱关联)。这种关联并不是至关重要的:一个 Order 实体的创建包含了选择适合他们的供应商。这就是一个弱关联。
你可以使用正规的 UML 关联建模它。
1. 选择逻辑数据模型图。
2. 从 Toolbox 视图中的 UML Class 面板点击一下 Association 。
3. 在图中的 Order 实体上点击一下。
4. 在图中的 Supplier 实体上点击一下。
一个关联被画在了两个实体之间。适当的调整这个关联。
1. 将 End1Multiplicity 改为 1 (一个 Order 实例必须有一个并只能有一个相关联的 Supplier 实例)。
2. 将 End2Multiplicity 改成 * (一个 Supplier 实例可以与零个、一个或者很多个 Order 实例相关联)。
3. 可选的,为关系的两端指定名字(End1Name 和 End2Name 特性)。
结果应该象下图所示:
在 Order Detail 和 Product 之间添加一个关联,使用与上面相同的步骤。End1Multiplicity 还是 1 并且 End2Multiplicity 是星号(*)(一个 Order Detail 实例能够引用一个并只能引用一个 Product 的实例;然而,相同的 Product 实例能够在多个 Order Detail 实例中存在)。
实体关系:一般化的角色两个实体被剩下还没有任何关联:Garment 和 Food Item 。他们是典型的实体子类型。现在你能够看到 Data Modeler 如何能够简单并自然的建模这个概念。对任何产品(不论是衣服还是食品)的可应用的属性都在 Product 实体中被保存。属性被指定的类型分别保存在 Garment 或者 Food Item 中。
如果父 Product 实例不存在的话,Garment 或者 Food Item 的实例也就不会存在,因此乍一看一个强关联应该是合适的(使用面板中的 composition 关联)。然而,Data Modeler 为这类关心开发了一般化(generalization )关联。将它引入到你的图中:
1. 选择逻辑数据模型图。
2. 在 UML Class 面板中点击一下 Generalization 。
3. 在图中的 Garment 实体上点击一下。
4. 在图中的 Product 实体上点击一下。
5. 在 UML Class 面板中再点击一下 Generalization
6. 在图中的 Food Item 实体上点击一下。
7. 在图中的 Product 实体上点击一下。
结果应该如下图所示:
物理数据建模和 DB2 UDB 的集成
建立数据模型的数据库对于你的超市需求的下一个任务是创建一个(物理)数据模型。好消息是大部分困难工作已经被完成了。Data Modeler 将会自动化从逻辑数据模型到物理域的转换过程。有两个原因需要一个物理模型:
1. 允许将物理实现与逻辑和设计分开
2. 封装创建和维护实际的 DB2 数据库所需的定义。
在现实生活中,在物理建模阶段你可能要进行多次的手工调整。对于本文的目的,你要很大程度的接受你创建逻辑设计向一个物理设计的直接转换。在这个阶段你的产品化需求也许要引入多个新的表和关系。
因为目标数据库是 DB2 数据库,所以以一个 DB2 数据模型开始是最好的。当你创建你的数据建模项目时,你被提供两个数据模型。你已经在逻辑数据模型上进行了许多的工作了,在(物理)数据模型上没有任何事情要做了。因此你将删除被给的(物理)数据模型并自己创建一个 DB2 的数据模型。通过下面的步骤可以完成:
1. 在 Model Explorer 视图中,右键点击 Data Model ,并选择 Close 。
2. 切换到 Navigator 视图。
3. 右键点击 DMTutorial 项目中的 Data Model ,并选择 Delete 。
4. 右键点击 DMTutorial 项目,并选择 New > Model 。
5. 在 Create XDE Model 窗口,从 File Types 中选择 DB2 UDB ,并从 Templates 中选择 DB2 Data Model (如下图所示)。
6. 点击 Finish 。
确认(物理)数据模型图在编辑窗口中被打开,并选择它。如果没有打开,在 DB2 Data Model (例如,物理数据模型分支)的 Model Explorer 视图中双击 Main 。注意 Toolbox 视图的 Data Modeler 面板是如何变得可见的,现在它已经装入了一些工具:
现在让我们创建一个数据库:仍然不是一个 DB2 中的实际数据库,但是它是一个数据模型图中的一个代表。
1. 在 Toolbox 视图中的 Data Modeler 面板中点击一下 Database 。
2. 在数据模型图中的任意地方点击一下鼠标。
3. 一个数据库说明窗口被打开。为数据库命名为 OrderDB 。如果还没有设置,将目标数据库设为 IBM DB2 8.x 并点击 OK 。
4. 现在再看一下 Data Modeler 的缺省设置(之前再三个 Data Modeling Preferences 面版中看到的)。点击 Window > Preferences ,展开 Rational XDE ,并选择 Database Defaults 。选中:
Settings For: 被设置为 (DM Tutorial) DB2 Data Model 。
改变缺省的数据库为 OrderDB (从下来菜单选择),它是你之前几步创建的数据库。
确保缺省的数据库目标被设置为 DB2 UDB 8.0 。
改变最到标识符长度为 18 (这可以确保 DB2 的约束标识符有合法的长度)。
点击 OK 退出 。
转换逻辑数据模型
现在你已经将逻辑数据模型转换成了一个(物理)数据模型。"转换"这个词可能会使你认为逻辑数据模型以一些方式被改变了。实际上,它没有被改变,虽然在逻辑和物理数据模型中有一些关联元素的元数据被创建了。物理数据模型实际上是从逻辑数据模型中的信息中生成的。
1. 确定 DB2 Data Model 在 Model Explorer 中被打开。
2. 确认在 DB2 Data Model 中仅仅是(物理)数据模型被打开。这是 XDE 如何确定要转换的目标模型的方法。
3. 在 Model Explorer 中鼠标右键点击 Logical Data Model 。
4. 选择 Transform > Transform to Table....
5. 在 Available Packages 面板中,(DMTutorial)DB2 Data Model 应该已经被选中了。
6. 目标数据库应该被设置为 DB2 UDB 8.0 ,变灰并且不可得到。
7. 检查 Generalization 被设置在 Separate Table 的缺省值上。
8. 检查前缀是空白的。
9. 确认 Create Indexes for Foreign Keys 被选中。窗口看起来如下图:
10. 点击 OK 保存数据模型。
文章来源于领测软件测试网 https://www.ltesting.net/