PowerDesigner(簡稱PD)是一種強大的資料庫建模工具,使用PD可以建立業務模型,UML類圖等,當然最主要的功能是資料庫建模。我打算分以下幾個部分來講如何使用PD。
1,兩種重要模型,概念性模型和物理模型
2,建立表和主外鍵
3,建立視圖和預存程序
4,產生資料庫
兩種重要模型
首先說概念性模型,概念性模型是一個抽象的宏觀層次的業務模型,比如E-R(實體關聯)圖,在概念性模型中最重要的對象是實體和關係。
根據概念性模型可以產生邏輯模型,邏輯模型是概念性模型的延伸,表示概念之間的邏輯次序,是一個屬於方法層次的模型。具體來說,邏輯模型中一方面顯示了實體、實體的屬性和實體之間的關係,另一方面又將繼承、實體關聯中的引用等在實體的屬性中進行展示。邏輯模型介於概念性模型和物理模型之間,具有物理模型方面的特性,在概念性模型中的多對多關係,在邏輯模型中將會以增加中間實體的一對多關聯性的方式來實現。邏輯模型主要是使得整個概念性模型更易於理解,同時又不依賴於具體的資料庫實現,使用邏輯模型可以產生針對具體資料庫管理系統的物理模型。邏輯模型並不是在整個步驟中必須的,可以直接通過概念性模型來產生物理模型。
其次物理模型依賴於具體的物理實現,使用的是資料庫物件,原來的“實體-關係”轉換成“表-外鍵”,實體的屬性轉換為表的列,同時每個列的資料類型轉換為對應的DBMS中支援的資料類型。
對於SQL Server 2008的物理模型,如果主鍵需要使用自增長,那麼需要修改具體的列,設定該列為Identity。如果產生的資料類型不合理,也可以調整資料類型,使得資料類型使用得更恰當。在物理模型中除了產生的表外,還可以手動增加視圖、預存程序、商務規則等在概念性模型和邏輯模型中無法表達的資料庫物件。
對物理模型調整好後,就可以將模型應用到SQL Server資料庫中。在資料庫中實現物理模型的方法有兩種,一種是使用PD串連到SQL Server資料庫,然後將模型同步到資料庫中,另一種方法就是產生資料庫指令碼。
建立表和主外鍵
1,建立表:
建立物理模型時需要指定物理模型對應的DBMS,這裡我們使用Sql server 2008,建立一個物理模型後,系統會顯示一個專門用於物理模型設計的工具列,如:
若要在物理模型中添加一個表,單擊“表”按鈕,然後再到模型設計面板中單擊一次便可添加一個表,系統預設為表命名為Table_n,這裡的n會隨著添加的表增多而順序增加。添加的表是沒有任何列的,:
單擊工具列的滑鼠指標按鈕,將滑鼠切換回指標模式,然後雙擊一個表,系統將開啟表屬性視窗,在General選項卡中可以設定表的Name、Code等屬性。例如我們要建立一個教室表(ClassRoom),則可修改Name和Code。Name是在模型中顯示的名稱,Code是產生資料庫表的時候的實際表名。另外Name中的內容還會作為SQL Server中的表備忘。
單擊Columns切換到列選項卡,在下面的列表中可以添加表中的列。Name是模型上顯示的名稱,Code是產生的實際的表名,後面的3個複選框P代辦主鍵、F代表外鍵,M代表不可為空。為教室表設計了兩個列,:
2,設定主鍵
在設計一個表時,一般情況下每個表都會有一個主鍵,主鍵分為單列主鍵和複合主鍵。在為表設定主鍵時有以下幾種辦法:
1>在Columns選項卡中,直接選中主鍵列的P列複選框,這是最簡單的方式。
2>選中一個列,然後單擊工具列中的“屬性”按鈕,系統將彈出列屬性視窗,在該視窗中可以設定該列的各種屬性,當然也包括該列是否是否是主鍵。另外還有一個很重要的複選框是“Identity”。選中Identity複選框則表示該列為自增列。
3> 切換到Keys選項卡中,在其中添加一行命名為PK_ClassRoom,然後單擊工具列的“屬性”按鈕,開啟鍵屬性視窗,在該視窗中切換到Columns選項卡,單擊添加列按鈕,彈出列選擇視窗,選中主鍵中應該包含的列,單擊確定按鈕即可完成主鍵的建立。
另外需要注意的是,在建立主鍵時,系統會在主鍵上建立索引,索引分為叢集索引和非叢集索引,在“鍵屬性”視窗的General選項卡中可以設定該主鍵上建立的索引是叢集索引還是非叢集索引,:
3,設定外鍵
如果是由概念性模型或者邏輯模型產生物理模型,那麼外鍵是通過Relationship產生的,也可以通過工具列中的Reference來實現兩表之間的外鍵關係。假如一個課程只會在一個固定的教室上課,而一個教室會安排多個課程在不同的時間上課,所以教室和課程是一對多的關係,那麼課程表中就需要添加RoomID列以形成外鍵列,具體操作方法就是在工具列中單擊“Reference”按鈕,然後在設計面板中,課程表上按下滑鼠左鍵,並拖拽到教師表中放開滑鼠,這時如果課程表中沒有RoomID列,系統會自動建立RoomID列並建立該列上的外鍵引用,如果已經存在RoomID列,則只添加外鍵引用,不會再添加新列。
切換到滑鼠指標模式,雙擊箭頭,系統將彈出引用的屬性視窗,在屬性視窗中可以設定該引用的Name、Code、關聯的列、約束名、更新策略和刪除策略等。其它約束還包括check約束,預設值約束,非空約束等等
建立視圖和預存程序
1,建立視圖
在SQL Server中視圖定義了一個SQL查詢,一個查詢中可以查詢一個表也可以查詢多個表,在PD中定義視圖與在SQL Server中定義查詢相似。例如要創幾個所有學生的所有選課結果的視圖,那麼在工具列中選擇視圖按鈕,然後在設計面板中單擊滑鼠一次便可添加一個空白的視圖,切換到滑鼠指標模式,雙擊該視圖便可開啟視圖的屬性視窗。在General選項卡中,可以設定視圖的名字和其他屬性。
Usage是表示視圖是唯讀視圖還是可更新的視圖,還有一個是check option選項,指定了 CHECK OPTION,也不能依據視圖來驗證任何直接對視圖的基礎資料表執行的更新。如果我們只建立一般的視圖,那麼就選擇只查詢選項。
Dimensional Type指定該視圖表示的是維度還是事實,這個主要是在進行資料倉儲多維資料建模時使用,一般情況下不需要指定。後面的兩個複選框也不需要進行修改。Type使用預設的view選項。
切換到SQL Query選項卡,在文字框中可以設定視圖定義的查詢內容,建議直接先在SSMS中驗證視圖定義SQL語句的正確性,然後再將SQL語句複製粘貼到該文字框中。在定義視圖時最好不要使用*,而應該使用各個需要的列名,這樣在視圖屬性的Columns中才能看到每個列。設計SQL Query。
當然,也可以在PD中使用內建的SQL編輯器編寫SQL語句,單擊右下角的“Edit with SQL Editor”按鈕,即可彈出SQL Editor編輯器,編寫SQL語句。
2,建立預存程序
在工具列中單擊Procedure按鈕,然後在設計面板中單擊一次便可添加一個Procedure。例如要建立一個預存程序根據學生的學號獲得學生所選的課程,那麼對於的操作如下:在指標模式下雙擊添加的Procedure,開啟Procedure屬性視窗,在General選項卡中可以設定該預存程序的名字。
然後切換到Definition選項卡,該選項卡中定義了預存程序的定義,在下拉式清單方塊中,選擇<Default Procedure>選項,如果是要定義函數,那麼就需要選擇<Default Function>選項,系統會根據選擇的類型建立SQL語句的模板。
在下面的SQL語句中,可以將create procedure [%QUALIFIER%]%PROC%保留,其他的刪除,根據自己要建立的預存程序編寫SQL語句。
create procedure [%QUALIFIER%]%PROC%
@StudentID int
as
begin
select CourseName
from vwStudentCourse
where StudentID=@StudentID
end
單擊確定按鈕,系統會根據編寫的SQL語句,將所使用的表、視圖與預存程序關聯起來,:
這樣,預存程序在PD的物理模型中的建立就算完成了。
產生資料庫
第一步:配置資料來源
1,選擇菜單"Database-->Configure connections"
2,開啟”Configure Data Connections“視窗
3,選擇系統資料來源
4,選擇資料來源驅動程式
5,資料來源名稱和sql server伺服器選擇,伺服器即SSMS登陸的伺服器名稱
6,選擇驗證模式及填寫登陸ID和密碼
7,更改預設資料庫,這一步很重要,否則會覆蓋預設的資料庫,資料庫即為要產生的資料名
8,確認完成即建立好了資料來源
第二步:產生資料庫
1,選擇菜單"Database--->generate database",開啟database generation視窗,選擇Direct generation直接產生資料庫
注意:這一步可以點擊資料庫表徵圖重新設定資料來源
2,點擊確定後開啟"Execute SQL Query"視窗,點擊Run按鈕後即可執行SQL建立資料表。
註:本文引用了深藍居博文:http://www.cnblogs.com/studyzy/archive/2009/12/15/1624899.html