注意
資料庫模型圖僅適用於某些版本的 Visio。 如需詳細資訊,請參閱找不到資料庫模型功能?。
了解參照完整性規則
參考完整性規則可防止資料庫使用者意外破壞相關欄位間的映射。
假設你有一個叫做 Books 的資料庫,裡面有兩個資料表,分別是 Titles 和 Authors。 在這個例子中,每個書名只有一位作者,但每位作者可以擁有多個書名,形成所謂的一對多關係。 關係中「一側」的表格稱為 父表。 「多」側的表格稱為 子表格。
為了彙整每本書及其作者的資訊,查詢會使用鍵碼將書名表中的每本書與作者表中的作者進行匹配。 作者) (父表必須有一個主 鍵 ,能唯一識別每一列。 標題表必須有一欄,存放每個標題的 AuthorID。 此欄稱為 外鍵。 主鍵識別每位作者,外鍵則標示哪些書籍由哪位作者撰寫。
如果使用者在父資料表中更改作者的 AuthorID,且未更新書名資料表中的 AuthorID,書名資料表中的書籍將不再有有效的作者。
你不必在兩個資料表中更改 AuthorID,而是可以設定參照完整性規則來執行你想要的動作。 你可以選擇讓資料庫模型在父資料表中的金鑰被更改或刪除時執行特定動作。
注意
在類別中,父與子一詞的意義相當不同,類別是透過 Parent to category、 Category 和 Category to child 形狀來建立的。 欲了解更多類別資訊,請參閱 「定義資料庫模型圖中的類別」。
集合動作以保障參照完整性
雙擊你想設定參照動作的關係。
在資料庫屬性視窗的分類中,點選參照動作。
點擊你希望資料庫對子資料表中對應值採取的動作。 您可以從以下行動中選擇:
- 沒有行動 當父表主鍵中的某個值被更改或刪除時,子表外鍵對應的值則保持不變。
- 瀑布 當父表的主鍵值被更改或刪除時,子表外鍵中的對應值也會被更改或刪除,以匹配主鍵。
- 設定 NULL 當父表主鍵中的值被更改或刪除時,子表外鍵對應的值會被設定為 NULL。
- 設定預設值 當父表主鍵的值被更改或刪除時,子表外鍵對應的值會設定為你選擇的預設值。
- 不要強制執行 此動作會關閉該關係的參照完整性規則。
注意
若 Set NULL 與 Set Default 選項被禁用,則該關係很可能在資料庫屬性視窗的雜項標籤中被設定為可選。
設定欄位的預設值
要使用 設定預設 動作,必須為該欄位提供預設值。
- 雙擊圖中的表格即可開啟資料庫屬性視窗。
- 在 分類中,點選 欄位,點選你想建立預設欄位, 然後點擊編輯。
- 在欄位屬性對話框的定義標籤中,輸入預設值。
使用符號顯示指稱完整性
你可以設定文件選項,在模型中的關係線旁隱藏或顯示參考完整性符號。
參考完整性符號中的字母代表什麼意思?
參照完整性符號顯示兩個字母之間以冒號分隔的關係,形式為[父表中採取的行動]:[子表結果]。 例如,d:C 表示當父資料表中某項刪除時,變更會串接到子資料表。
父表中的動作以小寫字母表示:
- 父資料表中的 u 資料會被更新。
- d 父資料表中的資料被刪除。
子表格中的結果以大寫字母表示:
- R 無動作 不要更換子表格。
- C 級瀑布 在子資料表中複製這個變更。
- D 設定預設 將你先前設定的該欄位預設值插入子資料表。
- N 集合 null 將子資料表設為 NULL。
- (空白) 不要強制此關係的指涉完整性。
注意
這些設定會影響實際資料庫中發生的事情,而非模型中。 在你從現有資料庫逆向工程的模型中,可以看到資料庫在參考完整性方面的設計。 在你從零開始建立的模型中,你可以用這些設定來記錄你希望資料庫如何運作。
在 Visio 2010 中展現引用完整性
- 在 [資料庫] 索引標籤的 [管理] 群組中,按一下 [顯示選項]。
- 在 關係 分頁中,在 顯示中選擇參 照動作 的勾選框。
找不到資料庫模型功能?
有些版本的 Visio 沒有資料庫模型圖範本。
Visio 標準版不包含資料庫模型圖範本。
Visio 專業版和進階版支援資料庫模型圖範本的反向工程功能 (也就是使用現有資料庫以在 Visio 中建立模型),但不支援正向工程 (也就是使用 Visio 資料庫模型來產生 SQL 程式碼)。
注意
您可以在適用於企業架構的 Visio 中找到資料庫模型功能的完整套件,包括反向工程和正向工程。 適用於企業架構的 Visio 隨附於 MSDN 進階版訂閱,可在 Visual Studio 專業版和 Visual Studio Team System 角色型版本中使用。
如果你正在使用 Visio 方案 2,並想了解如何將現有資料庫工程成資料庫模型,請參閱主題「逆向工程現有資料庫」。