Session 2: ER/Studio的逻辑和物理模型
ER/Studio同时支持逻辑模型和物理模型.ER/Studio被设计为允许机构可以弹性的分析和设计业务问题或应用逻辑并由逻辑模型按用户的意愿生成不同的物理说明. 很多物理模型可以依据同样的DBMS(如Oracle)或不同的DBMS逻辑(如Oracle, SQL Server和DB2)来生成.细节将在下面的课程中讨论.
从头开始一个逻辑模型
如课程1所讲,我们已将选择了 ‘Draw a new Data Model’ 从头创建了一个逻辑模型.首先我们添加一个实体(entities), 我们通过一个可重用的Domains(可重用属性)来熟悉ER/Studio.
1. 选择 File > Import Data Dictionary.
2. 在ER/Studio范例目录中选择 “Orders.dm1”.这边模型包括预先定义的范例数据字典. 注意: 你可以从一组选项中选择如何导入对象字典.这对向图表中导入其中的字典对象非常重要.
3. 点击 OK.
4. 打开以后,主要ER/Studio的浏览器面板自动切换到其’Data Dictionary’标签,可以拖放其中的Domains:
5. 现在, 点击图表工具栏的Entity图表向模型工作空间中增加实体(entity):
6. 工作空间中拖放实体Entity. (提示! 点击了实体图表后光标变为相应的实体形状,你可以随意向图表工作空间拖放一些实体.右键返回到原来的箭头光标)
7. 在屏幕光标处输入新实体的名称 (‘Customer’).
(提示! 你可以插入,编辑,重命名,按下Shift键后鼠标点击属性可修改对应的属性.修改ID Domain的名字为 “CustomerID”. 按下 ‘tab’键在实体名称,PK和非PK字段,返回按钮插入新字段间来回切换.)
4. 在数据字典中,选中ID Domain,点击并按下鼠标将其拖放到Customer实体并在实体的Primary Key域(在实体名称下方)处释放鼠标,如下图所示:
10 过程将数据字典树中的Name, Address, City, State Zip Code 和 Phone Domain加入到Customer实体中.
11 工作空间中放置另一个实体.称之为‘Order’ .同上面的步骤将数据字典ID Domain拖放到实体并命名为OrderID.
12 接下来,在图表工具栏中选择 “Non-Identifying”关系:
(注意: 在你的模型标记设置中,每种关系都是微小的不同)
13 ustomer和Order之间建立关系,点击父实体(Customer)然后点击子实体(Order).
(注意 ER/Studio支持在设置关系的时候自动在子表中生成主表的主键字段.如果主表还存在候选的主键字段,将会在关系编辑框中的下拉框中选择一个主键字段.删除关系时将删除掉子表非原生的字段(设置关系时自动生成的字段).如果你希望保留设置关系或外键约束时子表中自动生成的列,可以选中其 “Make Native” 选项.这时CustomerID将保留在Order实体中):
什么是 Domains?
Domains是用于建立标准,重用属性/列时很有用的工具.使数据建模人员创建一个数据元素(例如你在所有的实体中都需要一个ID字段作为主键) ,无论在哪里发布和绑定都有统一的数量类型,定义,规则,约束等等.关于Domain的更多信息请见ER/Studio的帮助系统.
在ER/Studio中创建和使用子模型
现在我们已经对如何从头创建一个逻辑模型有了大体的认识,这对我们了解如何使用产品的重要导航特性—子模型很重要.我们关闭当前的范例模型,打开一个更复杂的模型.按如下步骤了解子模型:
1 文件 > 打开 (或CTRL + O)
2 选择Orders文件点击Open按钮.
3 为不破坏这个范例文件,可以另存Orders.dm1文件为一个新名字.
4 在导航栏中按下Data Model标签如下图所示:
5 注意在Orders.DM1范例模型中没有物理模型,但是存在一系列子模型目录帮助描述逻辑模型:
“主模型”是Orders.DM1中所有逻辑对象集合.注意目录图标上没有放大镜的项为煮模型.
“物料清单Bill of Materials” -- “视图设置View Settings”是一些子模型,从主模型中分离出一部分实体集合,用于描述主模型中特定区域.
“Alternate Key” -- “Nullability” 包含在子模型中,可达到n层深度,是子模型的子模型
点击并展开目录浏览.
1 要创建子模型,选中主模型,我们创建一个与Orders.DM1中与Address组件相关所有对象的子模型.
2 按下CTRL键在导航栏中按下图选中一些对象.在导航栏中选中的对象在图表中也是选中状态.这个操作也 可以在图表工作区中进行.
3 实体选中后,选择ER/Studio的Model > Create Submodel 菜单.
4 输入子模型的名字 “Address Components”:
5 点击 OK, ER/Studio将自定建立一个叫做 “Address Components”的子模型
执行结果什么样?如何去导航子模型? :
创建后,你将在导航栏中看到一个新的子模型并在目录中就像Bill of Materials和其他子模型一样用放大镜图标标示.
什么是子模型?
子模型和巢状子模型(例如”子模型的子模型”)用来分解大的完整的主模型以便于集中在特定区域.比起布局,颜色,显示设置,标记等,对其主要要掌握的是在子模型中做相应的修改,保留中相应的子模型中,自动映射到主模型视图. 换句话说,在修改或增加子模型对象的属性,主模型相应的内容将自动改变.
从逻辑模型生成物理模型
ER/Studio可以按用户的意愿对一个逻辑模型创建多个物理模型.为帮助用户设计,有很多种方式在ER/Studio中创建多个物理模型.例如这些能力可用于:
u 管理已存在应用程序的变更: 维护独立开发,测试和代表特定数据库的产品物理模型图表.
u 迁移数据库应用: 使用ER/Studio作为分析和设计迁移数据库应用的中心.管理源数据库应用的物理模型与目标数据库(可能与源数据库不是同种DBMS)物理模型之间的关联.
为了创建数据库我们从一个逻辑模型创建一个新的物理模型.我们使用Orders.DM1范例模型做演示.
1 打开 “Orders”范例模型. (如上例所示的方法).
2 在主菜单栏中选择Model > Generate Physical Model.
注意: ER/Studio提供了一个向导引导你生成相对于特定DBMS的物理模型.
3 模型名称并选择目标DBMS.如图所示,物理模型命名为“DB2 Physical Model” 在目标物理模型下拉框中选中DB2 UDB for OS/390 7.
4 模型向导接下来询问你希望如何创建物理模型.
注意: 向导将进行一些定制问题例如个别对象选择,索引分配,默认存储参数,逻辑模型中多对多关系的解决,命名约定和特定DBMS 验证等.
(提示! 快速启动可以使用存储通用设置以便于操作可以在模型间重用.如果你希望设置可以在其他模型中重用,你只需要在保存快速启动信息时选择 “External File”选项替代 “In DM1” 选项)
4. 在最后向导页中点击Finish 生成一个新的物理模型.
现在一个物理模型已经根据一个逻辑模型创建了,点击导航栏浏览特定对象(例如这里选中CUSTOMER表,双击查看对象物理细节信息,如DDL,索引,分区,存储等:
特殊化物理模型
ER/Studio提供了一个特殊化向导在物理模型创建后帮助优化物理设计.这个向导将自动完成这个过程并将物理表和逻辑实体紧密绑定.
注意: 使用时特殊化向导依赖于物理模型选中了什么对象.例如,如果两个表已经标示了关系那么可以做Roll up和RollDown操作(Roll Up主从表合并到主表,Roll Down主从表合并到从表). 注意CUSTMR 和 CUSTMR_ADDR被选中并在两者间存在一个关系,所以Rollup和Rolldown操作可用.
我们在前一章节创建的物理模型上做一个特殊化操作.我们为减少CUSTOMER表系统开支将其分离为两个物理表CUSTMR_EAST和CUSTMR_WEST.
在这个操作前CUSTOMER表如下所示:
4. 右键点击CUSTMR表.
5. 选择Denormalization Mapping > Horizontal Splits… 【特殊化映射>水平分割】 注意此时只有CUSTOMER表被选中,可能的映射只有水平和垂直分割两种.
6. 启动水平分割向导
7. 在第一步骤,输入分割数为2
8. 在第二步骤重命名每个分割表为CUSTMR_EAST 和 CUSTMR_WEST
9. 在第三步骤,提供一个名字和定义特殊化操作
10. 点击OK按钮
完成! 分割CUSTOMER表后将会如下图所示看到两个物理表:
注意: 这两个表除了名称外完全相同.要选择哪些属性保留在最终表中可以使用垂直分割.
这个特殊化映射操作保存在数据模型树的子模型下方.可以依此恢复所做操作或查看操作历史. ER/Studio跟踪操作之前和之后的状态. 在下一节我们讨论”Where Used”分析在物理或逻辑模型中所做的执行时将会常用这个功能.
“Where Used” 分析
现在我们已经执行了特殊化操作,逻辑实体Customer表已经变为了两个物理表CUSTMR_EAST 和 CUSTMR_WEST. 逻辑和物理模型的联系没有丢失.ER/Studio允许你查看逻辑实体Customer与DB2物理模型中实体的映射关系.
我们在逻辑模型中查看Customer实体.
1 在数据模型导航栏中找到逻辑模型中的Customer实体
2 打开Customer实体编辑器
3 切换到 “Where Used” 标签
展开树形结构后,可以看到对这个对象的线性引用关系.注意CUSTMR_EAST 和 CUSTMR_WEST是作为Customer实体的物理实现列出的.在数据模型导航树中的特殊化映射可以看到最终结果是如何实现的.
“Where Used”标签也显示子模型对逻辑或物理模型中特定实体的使用关系.允许你查看实体属于哪个业务区域.