本文將介紹如何在 Visio 2010 利用 利用 Visio Forward Engineer Addin 來進行正向工程作業。
【情境描述】
您跟筆者有一樣的困擾嗎?設計資料庫時利用 Visio 畫資料庫模型圖,畫好之後得重新以土法煉鋼的方式,透過 SSMS 或 SSDT 等工具,把資料庫模型中的資料表以及欄位的定義,一個一個的重新輸入一次,若資料庫中的資料表數量不多時,這也許花不了多少時間,但如果是遇上龐大的系統,資料表數量多得嚇人時,傳統方式恐怕是曠日廢時。透過安裝 Visio Forward Engineer Addin 讓您可以將在 Visio 2010 畫好的資料庫模型圖直接產生相關的 T-SQL 指令碼,詳細作法請見下一節。
【實作步驟】
步驟一、下載 Visio Forward Engineer Addin
首先您必須到 CodePlex 下載 Visio 2010 的 Addin 程式,安裝完畢之後開啟 Visio 2010 就會看到多一個 Forward Engineer 的功能選單。
步驟二、新增資料庫模型圖
於 Visio 2010 中點選【檔案 > 新增 > 資料庫模型圖】然後按建立來新增一個空白的資料庫模型。
於資料庫模型圖中建立使用者資料表(Users)及角色資料表(Roles)兩個實體,並建立由使用者資料表的 RoleId 資料行參考到角色資料表的 RoleId 資料行。
步驟三、Forward Engineer
點選【Forward Engineer】功能區塊,您會看到兩個按鈕,其中【Validate Data Model】是用來驗證您的資料庫模型是否正確無誤。
驗證如果沒問題您將看到如下圖的畫面:
【Forward Engineer】 則是用來產生模型的相對應的資料庫物件指令碼。
在進行正向工程時必須在 Forward Engineer to SQL Server 視窗設定下列資訊:
1. Database Name:搭配 Generate CREATE DATABAE 選項,用來讓 Visio Forward Engineer Addin 幫您建立資料庫,預設是以您的 VISIO 檔案名稱當作資料庫名稱。
2. Output file name:指定您的指令碼的路徑及檔案名稱。
3. Append Code:是否將 Forward Engineer Addin 產生的指令碼附加到指定的檔案中。
4. Generate DROP DATABASE:選擇是否產生移除資料庫的指令碼。
5. Generate CREATE DATABASE:選擇是否產生建立資料庫的指令碼。
6. Open generated script when finished:選擇是否在指令碼建立後開啟檔案。
下圖的設定為為筆者示範之用,您可以依照您的實際需求設定選項內容。
輸入相關資訊後按 Ok,若您的 *.sql 指令碼檔案預設是以 SSMS 開啟,您應該在產生指令碼成功後,會直接開啟 SSMS 要求輸入連接到資料庫的伺服器名稱及驗證資訊(如下圖)。
此時只要按下【F5】即可將 Visio 畫好的資料庫模型部署到您指定的 SQL Server 之中,執行完畢之後透過資料庫圖表來查看資料表的關聯是否和資料庫模型相同,結果如下:
【結論】
經過測試似乎這個外掛元件有點小問題,若您進行正向工程時有勾選【Append Code】,產生出來的指令碼會不完整,不曉得是筆者哪邊沒設定好,待確認後再上來更新文章。
【致謝】
感謝小章哥提供的資料,讓筆者不用再土法煉鋼了,真的是節省很多時間。
【2013-4-21 補充】
今天發現 Visio Forward Engineer Addin 似乎有個問題,當您在 Visio 2010 中設定資料欄的預設值後,利用上述介紹的功能產生 T-SQL 指令碼時,Visio Forward Engineer Addin 並不會幫您產生預設值應該有的指令碼。
【參考資料】
- Forward Engineering from Visio 2007 without Enterprise Architect edition