国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
用實(shí)體關(guān)系圖進(jìn)行數(shù)據(jù)庫(kù)建模(PD11+Visio)
 

用實(shí)體關(guān)系圖進(jìn)行數(shù)據(jù)庫(kù)建模


ccidnet 阿良@仙人掌工作室 2001年08月14日)

一、概述

  很可能你現(xiàn)在正在規(guī)劃一個(gè)數(shù)據(jù)庫(kù)驅(qū)動(dòng)的網(wǎng)站;而且?guī)缀蹩梢钥隙ǖ氖牵阋欢ㄒ呀?jīng)瀏覽過(guò)數(shù)據(jù)庫(kù)驅(qū)動(dòng)的網(wǎng)站。過(guò)去,一些網(wǎng)站依賴CGI腳本和文本文件存儲(chǔ)實(shí)現(xiàn)數(shù)據(jù)持久化,但現(xiàn)在我們能夠訪問(wèn)大量不同的關(guān)系型、對(duì)象-關(guān)系型、面向?qū)ο笮蛿?shù)據(jù)庫(kù)。

  對(duì)于Web應(yīng)用來(lái)說(shuō),關(guān)系數(shù)據(jù)庫(kù)是一種強(qiáng)大的支持工具,這得感謝它們的高可用性、性能,而且相對(duì)來(lái)說(shuō),關(guān)系數(shù)據(jù)庫(kù)比較容易使用。要找出一個(gè)功能完善、源代碼開(kāi)放、能夠在多種平臺(tái)上運(yùn)行的數(shù)據(jù)庫(kù)系統(tǒng)并不困難。你可以用Perl、Java、PHP以及其他服務(wù)器端腳本語(yǔ)言把關(guān)系數(shù)據(jù)庫(kù)和Web網(wǎng)站連結(jié)到一起。

  隨著網(wǎng)站規(guī)模的發(fā)展,它對(duì)數(shù)據(jù)庫(kù)——通常是關(guān)系數(shù)據(jù)庫(kù)——的依賴程度也日益增加。大量頁(yè)面和服務(wù)需要向數(shù)據(jù)庫(kù)表寫(xiě)入信息,或者從數(shù)據(jù)庫(kù)提取信息。對(duì)于大多數(shù)網(wǎng)站,數(shù)據(jù)庫(kù)表很快成為網(wǎng)站體系結(jié)構(gòu)中的關(guān)鍵部分,成為網(wǎng)站運(yùn)作的生命中樞。為了方便和輕松地管理大容量數(shù)據(jù),用戶帳戶、新聞動(dòng)態(tài)、內(nèi)容、統(tǒng)計(jì)數(shù)據(jù)都可以保存到關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(Relational Database Management System,RDBMS)。

  用圖(Diagram)管理數(shù)據(jù)模型具有高效、方便的優(yōu)點(diǎn)。對(duì)于RDBMS,描述數(shù)據(jù)模型的圖通常稱為實(shí)體關(guān)系圖(Entity Relationship Diagram,ERD)。用ERD描述數(shù)據(jù)模型能夠幫助你預(yù)先精確定義數(shù)據(jù)需求,使你能夠?qū)σ院蟮母膭?dòng)作出有效的規(guī)劃,能夠隨著網(wǎng)站的發(fā)展方便地改進(jìn)規(guī)劃。

  本文將介紹ERD建模工具和概念。文章提供了一些圖的實(shí)例,但它們的目的不是提供精確的或者是全面的數(shù)據(jù)設(shè)計(jì)范例。它們的目的是以兩個(gè)建模工具為例,介紹數(shù)據(jù)建模符號(hào)。在不同的工具之間,圖的符號(hào)有著重大的差別,但它們的基本概念一樣。本文的圖例從PowerDesigner和Visio 2000 Professional的試用版得到,你可以從本文末尾找到這些工具和其他類似產(chǎn)品的鏈接。

二、是否使用建模工具?

  許多規(guī)模較小的網(wǎng)站用ASCII形式的SQL(Structured Query Language)腳本文件進(jìn)行數(shù)據(jù)建模。當(dāng)開(kāi)發(fā)小組人員較少,或者最理想的情況下僅由一個(gè)人構(gòu)成時(shí),這種方法最有效。然而,數(shù)據(jù)模型將很快發(fā)展成為一個(gè)復(fù)雜的結(jié)構(gòu)——在這種情況下,CASE(Computer Aided Software Engineering,計(jì)算機(jī)輔助軟件設(shè)計(jì))工具、有關(guān)所有數(shù)據(jù)信息的圖、集中式知識(shí)庫(kù)能夠極大地幫助你管理Web網(wǎng)站的數(shù)據(jù)層。

2.1 何時(shí)使用SQL?

  即使當(dāng)你準(zhǔn)備用SQL直接管理數(shù)據(jù)模式(物理數(shù)據(jù)庫(kù))時(shí),圖也能有效地幫助你理解和改進(jìn)系統(tǒng)。然而,如果你的預(yù)算或者時(shí)間非常有限,采用復(fù)雜的新式建模工具可能得不償失。相反,在這種情況下,你應(yīng)該使用一個(gè)簡(jiǎn)單的圖形工具把數(shù)據(jù)模式的基本情況記錄下來(lái),然后逐步轉(zhuǎn)換到復(fù)雜的數(shù)據(jù)建模工具。

  如果你正在設(shè)計(jì)的數(shù)據(jù)庫(kù)類型不常見(jiàn)(或者是非標(biāo)準(zhǔn)的),避免使用某些復(fù)雜CASE工具可能是明智的,因?yàn)檫@些工具的“反向工程”能力和某些自動(dòng)功能可能無(wú)法在你的環(huán)境下發(fā)揮作用。這里所謂的自動(dòng)功能,是指建模工具根據(jù)輸入模型的圖形和屬性信息,自動(dòng)為目標(biāo)數(shù)據(jù)庫(kù)生成合適SQL命令的能力。反向工程是這樣一種能力,建模工具根據(jù)已經(jīng)部署的物理數(shù)據(jù)模式,從現(xiàn)有的表提取出實(shí)體和關(guān)系信息。

2.2 轉(zhuǎn)入建模工具

  從簡(jiǎn)單繪圖工具轉(zhuǎn)換到數(shù)據(jù)建模工具并不是一個(gè)很復(fù)雜的過(guò)程。大多數(shù)數(shù)據(jù)建模工具的工作方式就象是一個(gè)標(biāo)準(zhǔn)的繪圖工具,參見(jiàn)圖1a和圖1b,這是兩個(gè)數(shù)據(jù)建模工具的界面實(shí)例。你可以在這里創(chuàng)建和排列表,定義關(guān)系,以及指定其它信息(列的類型、長(zhǎng)度,鍵等)。

 

 

圖1a:PowerDesigner的界面

 

 

 

圖1b:Visio的界面

  轉(zhuǎn)向數(shù)據(jù)建模工具的主要挑戰(zhàn)在于:

  • 學(xué)習(xí)使用建模符號(hào)。
  • 在不丟失任何關(guān)鍵信息的前提下,用數(shù)據(jù)建模工具描述現(xiàn)有數(shù)據(jù)模型。
  • 尋找一個(gè)對(duì)你的數(shù)據(jù)庫(kù)提供全面支持的工具,例如在生成SQL、從現(xiàn)有數(shù)據(jù)模式通過(guò)反向工程建立數(shù)據(jù)模型時(shí)。

  一些入門級(jí)數(shù)據(jù)建模工具(參見(jiàn)本文后面的參考資源)只有少量的高級(jí)特性。這有好處,但也有弊端——它們很容易學(xué)習(xí)使用,但當(dāng)你積累了更多的經(jīng)驗(yàn)時(shí),它們可能不再滿足你日益增長(zhǎng)的需要。然而,升級(jí)工具或更換工具一般不存在大的問(wèn)題,特別是當(dāng)新的工具能夠?qū)ΜF(xiàn)有數(shù)據(jù)模式進(jìn)行精確、完整的反向工程時(shí),升級(jí)或更換工具的過(guò)程尤其簡(jiǎn)單。

三、ERD建模符號(hào)

  本文使用Martin的Information Engineering符號(hào)。PowerDesigner采用的就是這種符號(hào),Oracle的Designer產(chǎn)品所使用的符號(hào)也和它很相似。你可以在AIS Modeling Summary查看各種ERD符號(hào)的說(shuō)明?;镜腅RD繪圖規(guī)范很直觀易懂。你可以定義實(shí)體(表),描述各個(gè)實(shí)體之間的關(guān)系。在填寫(xiě)表和關(guān)系的細(xì)節(jié)信息時(shí),每一種工具的做法都有所不同;但就我所遇到的工具來(lái)看,基本概念在大多數(shù)軟件包之間是相通的。接下來(lái)的內(nèi)容將介紹你必須了解的主要圖形元素和設(shè)置方法。

3.1 表

  所有構(gòu)造合理的數(shù)據(jù)建模工具都允許為表指定豐富的關(guān)聯(lián)信息。這些信息包括(但不局限于):

  • 表的描述、注解,以及實(shí)體(表)的標(biāo)題。
  • 列,列的類型、長(zhǎng)度、默認(rèn)值和強(qiáng)制條件。
  • 主鍵,索引,唯一性約束。

  要指定這些信息,一般你需要進(jìn)入表的屬性窗口,如圖2a和圖2b所示。

 

2a:PowerDesigner中表的屬性窗口

 

圖2b:Visio中表的屬性窗口

 

  一旦輸入了新表的屬性信息,圖將被更新,顯示出你所提供的新的或更改后的表信息。下面的圖形顯示了一個(gè)表的實(shí)例,這個(gè)表的屬性信息見(jiàn)圖2a和圖2b。在圖2a和圖2b中,許多列被定義成了(m)andatory(強(qiáng)制的)、(p)rimary(主鍵)和(d)isplayed(被顯示的)列。下面的圖顯示了為該表輸入的部分屬性信息。

 

圖3a:PowerDesigner的表

 

圖3b:Visio的表

 

  在圖3a中可以看到一些非標(biāo)準(zhǔn)的數(shù)據(jù)類型,如PHONENUMBER和PK。許多數(shù)據(jù)建模工具允許定義域或定制數(shù)據(jù)類型,它們可供一個(gè)以上的列使用。域不僅代表著數(shù)據(jù)類型——通常,它們還包含檢查約束、默認(rèn)值、值列表等信息。如果你想要更新一個(gè)域(例如定義一種新的電話號(hào)碼格式),所有該模型中引用該域的列都將自動(dòng)更新。

3.2 關(guān)系

  如果我們只定義數(shù)據(jù)模式中的表,數(shù)據(jù)建模工具就不那么重要了。各個(gè)表之間的關(guān)系、依賴情況往往很復(fù)雜,有一個(gè)管理和顯示這些關(guān)系的工具將帶來(lái)很大的幫助。對(duì)于一個(gè)給定的關(guān)系,必須收集的重要信息包括:

  • 父表和子表。
  • 兩個(gè)表之間的強(qiáng)制關(guān)系。例如,父表可能有一個(gè)子表,但子表必須有一個(gè)父表。
  • 關(guān)系基數(shù)(Cardinality)。即,一個(gè)父表可以有零個(gè)或者多個(gè)子表,但一個(gè)子表有且只能有一個(gè)父表。
  • 關(guān)于關(guān)系的注釋、意見(jiàn)和角色說(shuō)明。

  大多數(shù)建模工具通過(guò)在兩個(gè)或者更多表之間畫(huà)出連線的方式定義關(guān)系。默認(rèn)情況下,關(guān)系往往被定義成為一對(duì)多關(guān)系,而且它對(duì)于關(guān)系中的任何一方都是可選的。要修改關(guān)系,你必須打開(kāi)關(guān)系的屬性窗口,更新實(shí)體關(guān)系的特征信息。圖4a和圖4b顯示了兩個(gè)不同的工具允許為關(guān)系定義的部分屬性:

 

圖4a:PowerDesigner的關(guān)系屬性設(shè)置界面

 

圖4b:Visio的關(guān)系屬性設(shè)置界面

 

  該圖顯示了一個(gè)一對(duì)多關(guān)系——一個(gè)典型的父-子關(guān)聯(lián)關(guān)系。部門(Branch)和雇員(Emplyee)的關(guān)系是強(qiáng)制的。它意味著一個(gè)部門必須至少有一個(gè)雇員(1-N強(qiáng)制關(guān)系);另一方面,它意味著一個(gè)雇員必須屬于且只能屬于一個(gè)部門(1-1強(qiáng)制關(guān)系)。圖5a和圖5b反映了修改后的關(guān)系。

 

圖5a:PowerDesigner中兩個(gè)表之間的關(guān)系

圖5b:Visio中兩個(gè)表之間的關(guān)系

 

  這個(gè)圖顯示了如何把信息轉(zhuǎn)換成符號(hào)。強(qiáng)制的關(guān)系由一條實(shí)心垂直線(而不是橢圓)表示。某些工具用虛線表示可選的關(guān)系。關(guān)系中屬于“多”的這一邊用一個(gè)類似鳥(niǎo)爪的圖形表示,關(guān)系的基數(shù)在靠近它所描述的那一端顯示。

  你可能已經(jīng)注意到,Employee表沒(méi)有定義外鍵列。這個(gè)圖仍舊處于“概念設(shè)計(jì)”階段——此后,從概念圖到物理數(shù)據(jù)模型之間的轉(zhuǎn)換是必不可少的。大多數(shù)工具區(qū)分概念和物理數(shù)據(jù)模型——概念數(shù)據(jù)模型描述信息的需求,但不關(guān)注細(xì)節(jié)問(wèn)題,例如索引和強(qiáng)制性的引用完整性。

  有些時(shí)候,你可能要定義自我引用的表。自我引用的表一般用來(lái)描述層次型關(guān)系。如下面的圖形所示,大多數(shù)數(shù)據(jù)建模工具能夠處理這類關(guān)系。注意在這個(gè)例子中,雇員可以有零個(gè)或者一個(gè)上級(jí)——它使你能夠處理一些特殊的情況,比如總統(tǒng)沒(méi)有直接的上級(jí)。

圖6a:PowerDesigner中自我引用的表

圖6b:Visio中自我引用的表

四、圖的規(guī)劃

  定義表和關(guān)系只是挑戰(zhàn)的一部分,圖的清楚明白同樣很重要。雖然一些工具提供自動(dòng)布局能力,我還沒(méi)有看到過(guò)一個(gè)完善的實(shí)現(xiàn)。相反,你的目標(biāo)應(yīng)該是遵從“孔雀東南飛”這一規(guī)則(這里的“孔雀”是關(guān)系中代表“多”這一方的符號(hào),它是連接到表的三條分叉線,象個(gè)鳥(niǎo)爪)。換句話說(shuō),子表應(yīng)該位于父表的右方和下方。這種安排使得從邏輯上組織和理解數(shù)據(jù)模型更加方便。最重要、最高級(jí)別的表應(yīng)該出現(xiàn)在左上角,讓級(jí)別較低的表出現(xiàn)在頁(yè)面的右下角。為了清楚起見(jiàn),減少圖中交叉線的數(shù)量也是很重要的。正如Eberhardt Rechtin在The Art of Systems Architecting中強(qiáng)調(diào)的,“一個(gè)好的設(shè)計(jì)往往看起來(lái)很舒服”。如果無(wú)論怎樣安排,你的數(shù)據(jù)模型看起來(lái)都很混亂,那么,它可能正在告訴你數(shù)據(jù)模型本身有一些值得注意的問(wèn)題。

 

圖7a:完整的ER圖(PowerDesigner)


 


圖7b:完整的ER圖(Visio)
 

五、從圖到數(shù)據(jù)庫(kù)

  依賴于你所選擇的用來(lái)建立數(shù)據(jù)模型的軟件包,建模工具可能會(huì)根據(jù)模型生成SQL命令或直接修改數(shù)據(jù)庫(kù)模式。這種功能帶來(lái)了極大的便利;和使用ASCII格式的SQL腳本相比,這種方式有著許多優(yōu)點(diǎn)。一些建模工具的功能適合于大量的數(shù)據(jù)庫(kù)類型,例如PostgreSQL、MySQL、Oracle、DB2,等等。對(duì)于簡(jiǎn)單的數(shù)據(jù)庫(kù)修改,改動(dòng)操作可以從建模工具通過(guò)ODBC直接完成。數(shù)據(jù)庫(kù)改動(dòng)還允許以增量方式進(jìn)行(例如,ALTER命令或創(chuàng)建命令,以及對(duì)特定表的更新命令)。當(dāng)你第一次使用建模工具時(shí),你可以查看建模工具生成的SQL,看看自己是否可以信任和認(rèn)可建模工具對(duì)數(shù)據(jù)模型的解釋。一段時(shí)間之后,你就會(huì)熟悉建模工具對(duì)各種關(guān)系和表細(xì)節(jié)的解釋。

  【結(jié)束語(yǔ)】數(shù)據(jù)建模是一種很好的軟件工程實(shí)踐。它能夠幫助你在正式編寫(xiě)程序代碼之前規(guī)劃數(shù)據(jù)需求。在維護(hù)和改進(jìn)系統(tǒng)的數(shù)據(jù)布局的過(guò)程中,數(shù)據(jù)建模同樣很有用。一些工具能夠讓這個(gè)過(guò)程變得非常簡(jiǎn)單,能夠在你管理和設(shè)計(jì)數(shù)據(jù)庫(kù)系統(tǒng)的時(shí)候帶來(lái)極大的幫助。然而,根據(jù)你所需功能的不同,建模工具的價(jià)格也有著極大的差異。在不出現(xiàn)預(yù)算赤字的情況下,輕松掌握和運(yùn)用數(shù)據(jù)建模技術(shù)的最好方法是,從小型的工具開(kāi)始,然后逐漸深入和提高。

 

六、參考和資源

  ■ 工具

  • Sybase PowerDesigner - 一個(gè)高端數(shù)據(jù)建模工具。你可以下載一個(gè)45天試用版。
  • ERWin - 一個(gè)高端數(shù)據(jù)建模工具??上螺d試用版。
  • Rational Rose Enterprise - 一個(gè)高端UML工具,恰如其分的數(shù)據(jù)庫(kù)建模支持??上螺d試用版。
  • Visio Professional - 一個(gè)價(jià)格低廉的繪圖工具,可用來(lái)生成數(shù)據(jù)模型、UML圖等。企業(yè)版還支持針對(duì)各種數(shù)據(jù)庫(kù)的雙向工程能力。你可以訂購(gòu)60天試用版的CD。
  • Dezign - 一個(gè)價(jià)格極其低廉的ERD建模工具。你可以下載一個(gè)有限制的試用版本。
  • ERD Tool List - 一個(gè)關(guān)于各種數(shù)據(jù)庫(kù)和UML建模工具的鏈接和資源的清單。

  ■ 參考

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
集成化企業(yè)級(jí)建模工具—PowerDesigner12.0
Visio2010建立ER圖并直接導(dǎo)出為SQL語(yǔ)句
ASP.NET網(wǎng)站權(quán)限設(shè)計(jì)實(shí)現(xiàn)(一)——使用PowerDesigner進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì)
powerDesigner使用(一)
PowerDesigner(數(shù)據(jù)建模)使用大全
PowerDesigner
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服