ERWin經(jīng)驗(yàn)小結(jié)課件_第1頁(yè)
ERWin經(jīng)驗(yàn)小結(jié)課件_第2頁(yè)
ERWin經(jīng)驗(yàn)小結(jié)課件_第3頁(yè)
ERWin經(jīng)驗(yàn)小結(jié)課件_第4頁(yè)
ERWin經(jīng)驗(yàn)小結(jié)課件_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、ERWin經(jīng)驗(yàn)小結(jié)1 版本本文所述內(nèi)容均在ERWin Data Modeler 7.2.5中實(shí)驗(yàn)通過。2 基本使用2.1 常用快捷鍵快捷鍵用途Ctrl + +放大視圖Ctrl + -縮小視圖Ctrl + 切換到邏輯模型視圖Ctrl + 切換到物理模型視圖2.2 顯示級(jí)別在ERWin中可以顯示實(shí)體(表)不同級(jí)別的視圖,邏輯模型相關(guān)選項(xiàng):物理模型相關(guān)選項(xiàng):實(shí)體(表)級(jí)顯示,邏輯模型相關(guān)選項(xiàng):實(shí)體(表)級(jí)顯示,物理模型相關(guān)選項(xiàng):2.3 重新排列對(duì)象3 使用Name mapping設(shè)計(jì)好邏輯模型后,利用Name mapping的設(shè)置,可以通過2個(gè)映射文件,在物理模型里自動(dòng)命名表名和列名。一般情況下邏輯

2、模型中的實(shí)體(表)和屬性(列)名都使用中文,以便于理解,而在物理模型里一般使用英文,以實(shí)現(xiàn)比較優(yōu)化的設(shè)計(jì)。3.1 映射文件范例表名映射文件范例:納稅人信息,FACT_nsrxxb列名映射文件范例:納稅人電子檔案號(hào),nnsrdzdah設(shè)立日期,dslrq行業(yè),_HY行業(yè)名稱,_CAPTION行業(yè)代碼,_HYDM3.2 Name mapping設(shè)置依次打開菜單項(xiàng):Tools-Names-ModelNaming Options選擇Name Mapping選項(xiàng)卡設(shè)置以下項(xiàng)目:項(xiàng)目值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個(gè)文件需要與erwin文件保存在同一目錄中。3.3 常見問題為什么在物理模型中不能通過映射文件自動(dòng)修改表名?1. 可能映射文件修改后,并沒有被ERWin重新載入,把ERWin關(guān)閉后,重新打開再試2. 物理模型的表名已經(jīng)有值,所以沒有通過映射文件自動(dòng)修改表名,把表名清空后再試3. 打開.erwin文件后,提示映射文件找不到這種情況可能發(fā)生在直接

4、雙擊.erwin文件時(shí),在開始菜單中打開ERWin,然后通過菜單打開.erwin文件即可解決。4 外鍵的使用在設(shè)計(jì)多維模型時(shí),為維表和事實(shí)表建立外鍵關(guān)系,可以直觀展示維表和事實(shí)表的關(guān)聯(lián)關(guān)系。觀察一個(gè)事實(shí)表和與它直接相關(guān)聯(lián)的維表,則可以看到一個(gè)清晰的星形模型。一般情況下維表與事實(shí)表的關(guān)系是:維表是主表,事實(shí)表是子表,維表中的一行數(shù)據(jù)對(duì)應(yīng)事實(shí)表中的多行數(shù)據(jù),維表與事實(shí)表使用維表的唯一關(guān)鍵字(即主鍵)關(guān)聯(lián)。在ERWin中建立外鍵關(guān)聯(lián)時(shí),前提條件是在主表上創(chuàng)建了主鍵。以下例子中均以事實(shí)表作為子表,維表作為主表建立外鍵關(guān)系。4.1 相同列名建立外鍵關(guān)聯(lián)建立外鍵關(guān)聯(lián)最簡(jiǎn)單的情況是維表的主鍵列與事實(shí)表的維度

5、列具有相同的名稱。具體操作如下:1. 點(diǎn)擊工具條中的,然后再點(diǎn)擊維表(主表),最后點(diǎn)擊事實(shí)表(子表)2. 此時(shí)將彈出如下提示框:直接點(diǎn)擊“OK”按鈕3. 這時(shí)外鍵關(guān)系已經(jīng)建好了,在事實(shí)表中與維表主鍵列同名的列上會(huì)加上“FK”外鍵標(biāo)識(shí)。4.2 不同列名建立外鍵關(guān)聯(lián)在很多情況下,事實(shí)表的維度列列名往往與維表主鍵列列名不一樣,這時(shí)的處理方法有所不同,在下例中,我們希望將事實(shí)表的“行業(yè)”列與維表相關(guān)聯(lián)。1. 點(diǎn)擊工具條中的,然后再點(diǎn)擊維表(主表),最后點(diǎn)擊事實(shí)表(子表)2. 此時(shí)外鍵關(guān)系已創(chuàng)建,但是事實(shí)表上新建了一個(gè)與維表主鍵列相同的列“行業(yè)代碼”作為外鍵,并沒有提示選擇事實(shí)表使用的關(guān)聯(lián)字段3. 雙擊

6、兩表之間的連接線,在“Relationships”提示框中,選擇“Rolename”選項(xiàng)卡,在Rolename輸入框中,輸入期望的關(guān)聯(lián)字段:行業(yè),點(diǎn)擊“OK”按鈕。4. 此時(shí)彈出提示框,直接點(diǎn)擊“OK”按鈕。5. 自動(dòng)增加的“行業(yè)代碼”列刪除,外鍵移到“行業(yè)”列上。注意:要在邏輯模型視圖下做此操作,如果在物理模型做此操作,在邏輯模型中,事實(shí)表的維度列名將會(huì)被修改為維表的主鍵列名。4.3 同一維表關(guān)聯(lián)事實(shí)表的多個(gè)字段有時(shí)候,事實(shí)表的多個(gè)維度列都需要與同一個(gè)維表關(guān)聯(lián),在下例中,事實(shí)表已經(jīng)通過“行業(yè)代碼”列與維表關(guān)聯(lián),我們還希望再將事實(shí)表的“行業(yè)”列與維表相關(guān)聯(lián)。1. 點(diǎn)擊工具條中的,然后再點(diǎn)擊維表

7、(主表),最后點(diǎn)擊事實(shí)表(子表)2. 此時(shí)新增加了一個(gè)外鍵關(guān)系,但實(shí)際上關(guān)聯(lián)字段仍是“行業(yè)代碼” 3. 在新增加的外鍵關(guān)系上,把Rolename改為“行業(yè)”,即可讓新增的外鍵使用“行業(yè)”列關(guān)聯(lián)。在此步會(huì)有提示框,直接點(diǎn)擊“OK”即可。4.4 維表關(guān)聯(lián)到事實(shí)表上非默認(rèn)列當(dāng)事實(shí)表中有與維表主鍵列名相同的列時(shí),新建的外鍵關(guān)系默認(rèn)會(huì)放在此列上。如果希望外鍵關(guān)系在其他列上,則在建立外鍵的對(duì)話框中,需要選擇另一個(gè)選項(xiàng)。如:希望事實(shí)表使用“行業(yè)”列與維表關(guān)聯(lián)。新建外鍵關(guān)系時(shí),在彈出提示框中,選擇第3項(xiàng)“Rolename migrating attribute”,輸入“行業(yè)”,點(diǎn)擊“OK”按鈕在緊接著的提示框

8、中,直接點(diǎn)擊“OK”即可達(dá)到目標(biāo)4.5 刪除外鍵關(guān)系刪除外鍵關(guān)系時(shí),會(huì)自動(dòng)刪除事實(shí)表上的外鍵列,而往往此列并不希望被刪除掉。可以使用以下辦法解決:1. 復(fù)制實(shí)體(表)2. 刪除外鍵關(guān)聯(lián)3. 將復(fù)制表中的列拖到原表中4. 刪除復(fù)制表5 使用Subject Area當(dāng)模型里的表比較多,特別是事實(shí)表很多,又有很多維表,關(guān)聯(lián)有關(guān)系很多時(shí),在ERWin(或其他建模工具)里顯示比較混亂,不容易清晰地看到各主題和維表之間的關(guān)系。下圖是農(nóng)發(fā)行賬戶模型中的E-R圖的局部:下圖是農(nóng)發(fā)行賬戶模型中的E-R圖的整體:在我們常用的星型模型結(jié)構(gòu)中,整個(gè)模型實(shí)際是由一個(gè)個(gè)相對(duì)獨(dú)立的星形模型組成的,只是各個(gè)星形模型之間會(huì)共用

9、許多維表,這樣就形成了上圖那樣的蜘蛛網(wǎng)結(jié)構(gòu)。實(shí)際上我們觀察模型時(shí),希望得到的效果是:關(guān)注哪個(gè)星形模型時(shí),只需要顯示出與此星形相關(guān)的事實(shí)表和維表,其他無關(guān)的表不希望看到。實(shí)際上這種功能,在ERWin中是可以提供的。ERWin提供了Subject Area(主題域)功能,主題域相當(dāng)于一個(gè)視圖區(qū)域,在此視圖區(qū)域里可以為各實(shí)體建立快捷方式,讓指定的實(shí)體在此視圖中顯示,而實(shí)體上原先定義的各種屬性在此視圖中可以正常顯示。所有的Subject Area單個(gè)Subject Area視圖:利用此功能,我們可以把一個(gè)星形模型中涉及的一個(gè)事實(shí)表和多個(gè)維表放到Subject Area中,此時(shí)即可以清晰地看到各表之間的

10、關(guān)系,又不至于太亂,同時(shí)在此Subject Area中對(duì)實(shí)體做的任何修改都會(huì)反映到實(shí)體本身。在ERWin里,所有對(duì)象會(huì)全部顯示在Main Subject Area中。在界面左側(cè)樹形菜單上,通過右鍵即可創(chuàng)建一個(gè)新的Subject Area,如“測(cè)試”修改此Subject Area的屬性: 在Members選項(xiàng)卡中,加入實(shí)體到Subject Area中,添加時(shí)只需要選擇事實(shí)表,再通過“級(jí)聯(lián)添加”的方式,即可把一個(gè)事實(shí)表和所有與其直接關(guān)聯(lián)的維表加入到Subject Area中。在級(jí)聯(lián)的選項(xiàng)中注意選擇:Ancestors:1,Descendants:0。注意:不要使用復(fù)制、粘貼的方式從Main Sub

11、ject Area中向新建的Subject Area中復(fù)制對(duì)象,這種方式會(huì)復(fù)制出重復(fù)的對(duì)象,而不是創(chuàng)建快捷方式,這種方式也得不到我們預(yù)期的原始對(duì)象與Subject Area中對(duì)象同步的效果。6 反向工程6.1 使用反向工程創(chuàng)建ERWin模型文件使用反向工程,可以從已有的數(shù)據(jù)庫(kù)生成ERWin模型文件。6.2 將邏輯模型的名稱顯示為物理模型的Comment如果在數(shù)據(jù)庫(kù)中,表和列上都已經(jīng)寫了COMMENT,使用反向工程生成ERWin文件后,查看模型的時(shí)候,無論是物理模型還是邏輯模型都顯示的是英文表名和列名,但實(shí)際上相應(yīng)的COMMENT信息實(shí)際已經(jīng)讀入并寫入到了模型中。在物理模型中,列的COMMENT

12、值保存在列的Comment屬性上。在邏輯模型中,列的COMMENT值保存在列的Definition屬性上。但是一般情況下為了便于理解,我們希望在邏輯模型中,表名和列名都能顯示為中文,即COMMENT。現(xiàn)在知道了Comment在哪里,需要做的事,就是在邏輯模型里把Definition的值寫到Name上。為達(dá)到此目的,可以利用ERWin API編寫一段小程序來實(shí)現(xiàn)。以下是一段Python腳本(此腳本在python2.6, pywin32-214調(diào)試通過):#!/usr/bin/python# -*- coding: cp936 -*- import win32com.client #創(chuàng)建COM對(duì)象

13、 scapi = win32com.client.Dispatch('AllFusionERwin.SCAPI') # conn=win32com.client.Dispatch('ADODB.Connection')#建立與持久裝置中模型的連接 #源文件filename = "c:adbcdw-lx.erwin"#目標(biāo)文件newfilename = "c:adbcdw-lx2.erwin"scPUnit = scapi.PersistenceUnits.Add(filename,"RDO=yes")

14、#建立存取內(nèi)存中模型數(shù)據(jù)的連接 scSession = scapi.Sessions.Add() scSession.Open(scPUnit,0,0) #事務(wù)控制 scTranId = scSession.BeginTransaction() #獲取所有Entity模型對(duì)象 scMObjects = scSession.ModelObjects.Collect(scSession.ModelObjects.Root,'Entity',1) for scObj in scMObjects: #取Definition屬性的值 try: scDefineName = scObj.P

15、roperties('Definition').Value except Exception,ex: scDefineName = '' try: scName = scObj.Properties('Name').Value except Exception,ex: scName = '' #對(duì)象名賦值 scObj.Properties('Physical Name').Value = scName scObj.Properties('Name').Value = scDefineName #獲取

16、該Entity的所有Attribute對(duì)象 scAttrObjects = scSession.ModelObjects.Collect(scObj,'Attribute',1) for scAttrObj in scAttrObjects: #取Definition屬性的值 # scAttrDefineName = scAttrObj.Properties('Definition').Value # scAttrName = scAttrObj.Properties('Name').Value try: scAttrDefineName = s

17、cAttrObj.Properties('Definition').Value except Exception,ex: scAttrDefineName = '' try: scAttrName = scAttrObj.Properties('Name').Value except Exception,ex: scAttrName = '' #對(duì)象名賦值 scAttrObj.Properties('Physical Name').Value = scAttrName scAttrObj.Properties(&#

18、39;Name').Value = scAttrDefineName scSession.CommitTransaction(scTranId) #另存為一個(gè)新的文件 scPUnit.Save(newfilename,'OVF=yes') 7 在DW項(xiàng)目中的應(yīng)用方法7.1 使用ERWin來生成模型文檔在目前的項(xiàng)目實(shí)施過程中,建模工具還沒有廣泛使用,但作為項(xiàng)目文檔資料,E-R模型關(guān)系圖還是一個(gè)比較通用、易于理解和交流的方式,因此建議使用ERWin來生成模型的文檔。這種方式主要適用于未使用ERWin的項(xiàng)目,包括進(jìn)行中的項(xiàng)目和已經(jīng)完成的項(xiàng)目。應(yīng)用方式:1. 使用反向工程生成ERWin模型文件2. 將邏輯模型中的表名、列名更新為中文3. 在邏輯模型中為各事實(shí)表和維表建立外鍵關(guān)系4. 以事實(shí)表為單位建立主題域(Subject Area),每個(gè)主題域中只包含一個(gè)星型模型通過以上方式,將數(shù)據(jù)庫(kù)中的表創(chuàng)建為模型文件中的星型模型。這種方式

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論