1. 程式人生 > >用實體關係圖進行建模

用實體關係圖進行建模

<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
一、概述

  很可能你現在正在規劃一個數據庫驅動的;而且幾乎可以肯定的是,你一定已經瀏覽過資料庫驅動的網站。過去,一些網站依賴指令碼和文字檔案儲存實現資料持久化,但現在我們能夠訪問大量不同的關係型、物件-關係型、面向物件型資料庫。

  對於Web應用來說,關係資料庫是一種強大的支援工具,這得感謝它們的高可用性、效能,而且相對來說,關係資料庫比較容易使用。要找出一個功能完善、原始碼開放、能夠在多種平臺上執行的資料庫系統並不困難。你可以用Perl、、以及其他伺服器端指令碼語言把關係資料庫和Web網站連結到一起。

  隨著網站規模的發展,它對資料庫——通常是關係資料庫——的依賴程度也日益增加。大量頁面和服務需要向資料庫表寫入資訊,或者從資料庫提取資訊。對於大多數網站,資料庫表很快成為網站體系結構中的關鍵部分,成為網站運作的生命中樞。為了方便和輕鬆地管理大容量資料,使用者帳戶、新聞動態、內容、統計資料都可以儲存到關係資料庫管理系統(RelationalDatabaseManagementSystem,RDBMS)。

  用圖(Diagram)管理資料模型具有高效、方便的優點。對於RDBMS,描述資料模型的圖通常稱為實體關係圖(EntityRelationshipDiagram,ERD)。用ERD描述資料模型能夠幫助你預先精確定義資料需求,使你能夠對以後的改動作出有效的規劃,能夠隨著網站的發展方便地改進規劃。

  本文將介紹ERD建模工具和概念。文章提供了一些圖的例項,但它們的目的不是提供精確的或者是全面的資料範例。它們的目的是以兩個建模工具為例,介紹資料建模符號。在不同的工具之間,圖的符號有著重大的差別,但它們的基本概念一樣。本文的圖例從PowerDesigner和Visio2000Professional的試用版得到,你可以從本文末尾找到這些工具和其他類似產品的連結。

二、是否使用建模工具?

  許多規模較小的網站用ASCII形式的SQL(StructuredQueryLanguage)指令碼檔案進行資料建模。當開發小組人員較少,或者最理想的情況下僅由一個人構成時,這種方法最有效。然而,資料模型將很快發展成為一個複雜的結構——在這種情況下,CASE(ComputerAidedSoftwareEngineering,計算機輔助設計)工具、有關所有資料資訊的圖、集中式知識庫能夠極大地幫助你管理Web網站的資料層。

2.1何時使用SQL?

  即使當你準備用SQL直接管理資料模式(物理資料庫)時,圖也能有效地幫助你理解和改進系統。然而,如果你的預算或者時間非常有限,採用複雜的新式建模工具可能得不償失。相反,在這種情況下,你應該使用一個簡單的圖形工具把資料模式的基本情況記錄下來,然後逐步轉換到複雜的資料建模工具。

  如果你正在設計的資料庫型別不常見(或者是非標準的),避免使用某些複雜CASE工具可能是明智的,因為這些工具的“反向工程”能力和某些自動功能可能無法在你的環境下發揮作用。這裡所謂的自動功能,是指建模工具根據輸入模型的圖形和屬性資訊,自動為目標資料庫生成合適SQL命令的能力。反向工程是這樣一種能力,建模工具根據已經部署的物理資料模式,從現有的表提取出實體和關係資訊。

2.2轉入建模工具

  從簡單繪圖工具轉換到資料建模工具並不是一個很複雜的過程。大多數資料建模工具的工作方式就象是一個標準的繪圖工具,參見圖1a和圖1b,這是兩個資料建模工具的介面例項。你可以在這裡建立和排列表,定義關係,以及指定其它資訊(列的型別、長度,鍵等)。

 



 

圖1a:PowerDesigner的介面

 



 

 

圖1b:Visio的介面



  轉向資料建模工具的主要挑戰在於:
學習使用建模符號。在不丟失任何關鍵資訊的前提下,用資料建模工具描述現有資料模型。尋找一個對你的資料庫提供全面支援的工具,例如在生成SQL、從現有資料模式通過反向工程建立資料模型時。1
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>