ERWin经验小结课件_第1页
ERWin经验小结课件_第2页
ERWin经验小结课件_第3页
ERWin经验小结课件_第4页
ERWin经验小结课件_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、ERWin经验小结1 版本本文所述内容均在ERWin Data Modeler 7.2.5中实验通过。2 基本使用2.1 常用快捷键快捷键用途Ctrl + +放大视图Ctrl + -缩小视图Ctrl + 切换到逻辑模型视图Ctrl + 切换到物理模型视图2.2 显示级别在ERWin中可以显示实体(表)不同级别的视图,逻辑模型相关选项:物理模型相关选项:实体(表)级显示,逻辑模型相关选项:实体(表)级显示,物理模型相关选项:2.3 重新排列对象3 使用Name mapping设计好逻辑模型后,利用Name mapping的设置,可以通过2个映射文件,在物理模型里自动命名表名和列名。一般情况下逻辑

2、模型中的实体(表)和属性(列)名都使用中文,以便于理解,而在物理模型里一般使用英文,以实现比较优化的设计。3.1 映射文件范例表名映射文件范例:纳税人信息,FACT_nsrxxb列名映射文件范例:纳税人电子档案号,nnsrdzdah设立日期,dslrq行业,_HY行业名称,_CAPTION行业代码,_HYDM3.2 Name mapping设置依次打开菜单项:Tools-Names-ModelNaming Options选择Name Mapping选项卡设置以下项目:项目值Enity to Table%Lookup(B1_tableC2E.txt,%EntityName)Attribute t

3、o Column%Decl(test,_)%=(test,%Lookup(B1_C2E.txt,%AttName)%If(%=(%Substr(%:test,1,1),_)%Substr(%:test,2)%else%:test其中黑体字为映射文件名,这2个文件需要与erwin文件保存在同一目录中。3.3 常见问题为什么在物理模型中不能通过映射文件自动修改表名?1. 可能映射文件修改后,并没有被ERWin重新载入,把ERWin关闭后,重新打开再试2. 物理模型的表名已经有值,所以没有通过映射文件自动修改表名,把表名清空后再试3. 打开.erwin文件后,提示映射文件找不到这种情况可能发生在直接

4、双击.erwin文件时,在开始菜单中打开ERWin,然后通过菜单打开.erwin文件即可解决。4 外键的使用在设计多维模型时,为维表和事实表建立外键关系,可以直观展示维表和事实表的关联关系。观察一个事实表和与它直接相关联的维表,则可以看到一个清晰的星形模型。一般情况下维表与事实表的关系是:维表是主表,事实表是子表,维表中的一行数据对应事实表中的多行数据,维表与事实表使用维表的唯一关键字(即主键)关联。在ERWin中建立外键关联时,前提条件是在主表上创建了主键。以下例子中均以事实表作为子表,维表作为主表建立外键关系。4.1 相同列名建立外键关联建立外键关联最简单的情况是维表的主键列与事实表的维度

5、列具有相同的名称。具体操作如下:1. 点击工具条中的,然后再点击维表(主表),最后点击事实表(子表)2. 此时将弹出如下提示框:直接点击“OK”按钮3. 这时外键关系已经建好了,在事实表中与维表主键列同名的列上会加上“FK”外键标识。4.2 不同列名建立外键关联在很多情况下,事实表的维度列列名往往与维表主键列列名不一样,这时的处理方法有所不同,在下例中,我们希望将事实表的“行业”列与维表相关联。1. 点击工具条中的,然后再点击维表(主表),最后点击事实表(子表)2. 此时外键关系已创建,但是事实表上新建了一个与维表主键列相同的列“行业代码”作为外键,并没有提示选择事实表使用的关联字段3. 双击

6、两表之间的连接线,在“Relationships”提示框中,选择“Rolename”选项卡,在Rolename输入框中,输入期望的关联字段:行业,点击“OK”按钮。4. 此时弹出提示框,直接点击“OK”按钮。5. 自动增加的“行业代码”列删除,外键移到“行业”列上。注意:要在逻辑模型视图下做此操作,如果在物理模型做此操作,在逻辑模型中,事实表的维度列名将会被修改为维表的主键列名。4.3 同一维表关联事实表的多个字段有时候,事实表的多个维度列都需要与同一个维表关联,在下例中,事实表已经通过“行业代码”列与维表关联,我们还希望再将事实表的“行业”列与维表相关联。1. 点击工具条中的,然后再点击维表

7、(主表),最后点击事实表(子表)2. 此时新增加了一个外键关系,但实际上关联字段仍是“行业代码” 3. 在新增加的外键关系上,把Rolename改为“行业”,即可让新增的外键使用“行业”列关联。在此步会有提示框,直接点击“OK”即可。4.4 维表关联到事实表上非默认列当事实表中有与维表主键列名相同的列时,新建的外键关系默认会放在此列上。如果希望外键关系在其他列上,则在建立外键的对话框中,需要选择另一个选项。如:希望事实表使用“行业”列与维表关联。新建外键关系时,在弹出提示框中,选择第3项“Rolename migrating attribute”,输入“行业”,点击“OK”按钮在紧接着的提示框

8、中,直接点击“OK”即可达到目标4.5 删除外键关系删除外键关系时,会自动删除事实表上的外键列,而往往此列并不希望被删除掉。可以使用以下办法解决:1. 复制实体(表)2. 删除外键关联3. 将复制表中的列拖到原表中4. 删除复制表5 使用Subject Area当模型里的表比较多,特别是事实表很多,又有很多维表,关联有关系很多时,在ERWin(或其他建模工具)里显示比较混乱,不容易清晰地看到各主题和维表之间的关系。下图是农发行账户模型中的E-R图的局部:下图是农发行账户模型中的E-R图的整体:在我们常用的星型模型结构中,整个模型实际是由一个个相对独立的星形模型组成的,只是各个星形模型之间会共用

9、许多维表,这样就形成了上图那样的蜘蛛网结构。实际上我们观察模型时,希望得到的效果是:关注哪个星形模型时,只需要显示出与此星形相关的事实表和维表,其他无关的表不希望看到。实际上这种功能,在ERWin中是可以提供的。ERWin提供了Subject Area(主题域)功能,主题域相当于一个视图区域,在此视图区域里可以为各实体建立快捷方式,让指定的实体在此视图中显示,而实体上原先定义的各种属性在此视图中可以正常显示。所有的Subject Area单个Subject Area视图:利用此功能,我们可以把一个星形模型中涉及的一个事实表和多个维表放到Subject Area中,此时即可以清晰地看到各表之间的

10、关系,又不至于太乱,同时在此Subject Area中对实体做的任何修改都会反映到实体本身。在ERWin里,所有对象会全部显示在Main Subject Area中。在界面左侧树形菜单上,通过右键即可创建一个新的Subject Area,如“测试”修改此Subject Area的属性: 在Members选项卡中,加入实体到Subject Area中,添加时只需要选择事实表,再通过“级联添加”的方式,即可把一个事实表和所有与其直接关联的维表加入到Subject Area中。在级联的选项中注意选择:Ancestors:1,Descendants:0。注意:不要使用复制、粘贴的方式从Main Sub

11、ject Area中向新建的Subject Area中复制对象,这种方式会复制出重复的对象,而不是创建快捷方式,这种方式也得不到我们预期的原始对象与Subject Area中对象同步的效果。6 反向工程6.1 使用反向工程创建ERWin模型文件使用反向工程,可以从已有的数据库生成ERWin模型文件。6.2 将逻辑模型的名称显示为物理模型的Comment如果在数据库中,表和列上都已经写了COMMENT,使用反向工程生成ERWin文件后,查看模型的时候,无论是物理模型还是逻辑模型都显示的是英文表名和列名,但实际上相应的COMMENT信息实际已经读入并写入到了模型中。在物理模型中,列的COMMENT

12、值保存在列的Comment属性上。在逻辑模型中,列的COMMENT值保存在列的Definition属性上。但是一般情况下为了便于理解,我们希望在逻辑模型中,表名和列名都能显示为中文,即COMMENT。现在知道了Comment在哪里,需要做的事,就是在逻辑模型里把Definition的值写到Name上。为达到此目的,可以利用ERWin API编写一段小程序来实现。以下是一段Python脚本(此脚本在python2.6, pywin32-214调试通过):#!/usr/bin/python# -*- coding: cp936 -*- import win32com.client #创建COM对象

13、 scapi = win32com.client.Dispatch(AllFusionERwin.SCAPI) # conn=win32com.client.Dispatch(ADODB.Connection)#建立与持久装置中模型的连接 #源文件filename = c:adbcdw-lx.erwin#目标文件newfilename = c:adbcdw-lx2.erwinscPUnit = scapi.PersistenceUnits.Add(filename,RDO=yes) #建立存取内存中模型数据的连接 scSession = scapi.Sessions.Add() scSessi

14、on.Open(scPUnit,0,0) #事务控制 scTranId = scSession.BeginTransaction() #获取所有Entity模型对象 scMObjects = scSession.ModelObjects.Collect(scSession.ModelObjects.Root,Entity,1) for scObj in scMObjects: #取Definition属性的值 try: scDefineName = scObj.Properties(Definition).Value except Exception,ex: scDefineName = tr

15、y: scName = scObj.Properties(Name).Value except Exception,ex: scName = #对象名赋值 scObj.Properties(Physical Name).Value = scName scObj.Properties(Name).Value = scDefineName #获取该Entity的所有Attribute对象 scAttrObjects = scSession.ModelObjects.Collect(scObj,Attribute,1) for scAttrObj in scAttrObjects: #取Defini

16、tion属性的值 # scAttrDefineName = scAttrObj.Properties(Definition).Value # scAttrName = scAttrObj.Properties(Name).Value try: scAttrDefineName = scAttrObj.Properties(Definition).Value except Exception,ex: scAttrDefineName = try: scAttrName = scAttrObj.Properties(Name).Value except Exception,ex: scAttrNa

17、me = #对象名赋值 scAttrObj.Properties(Physical Name).Value = scAttrName scAttrObj.Properties(Name).Value = scAttrDefineName scSession.CommitTransaction(scTranId) #另存为一个新的文件 scPUnit.Save(newfilename,OVF=yes) 7 在DW项目中的应用方法7.1 使用ERWin来生成模型文档在目前的项目实施过程中,建模工具还没有广泛使用,但作为项目文档资料,E-R模型关系图还是一个比较通用、易于理解和交流的方式,因此建议使

18、用ERWin来生成模型的文档。这种方式主要适用于未使用ERWin的项目,包括进行中的项目和已经完成的项目。应用方式:1. 使用反向工程生成ERWin模型文件2. 将逻辑模型中的表名、列名更新为中文3. 在逻辑模型中为各事实表和维表建立外键关系4. 以事实表为单位建立主题域(Subject Area),每个主题域中只包含一个星型模型通过以上方式,将数据库中的表创建为模型文件中的星型模型。这种方式的缺陷是数据库中发生修改后,要同步到ERWin模型中比较麻烦,因为在DW项目里,一般都不建立外键关系,这样数据库与模型的差异是很大的。7.2 使用ERWin进行模型设计在新的项目中,通过使用ERWin来建模,将可以形成规范的工作方式,对模型也能进行有效的管理。应用方式:1. 在ERWin里设计逻辑模型和物理模型2. 可以使用Name mapping来自动生成物理模型中的表名和列名3. 在逻辑模型中为各事实表和维表建立外键关系4. 以事实表为单位建立主题域(Subject Area),每个主题域中只包含一个星型模型5. 使用正向工程生成DDL脚本,在数据库中创建表6. 当模型需要修改时,先修改ERWin中的模型,再使用正向工程生成D

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论