表間關係和外鍵約束 SQL Server系列教程(七)

外鍵,也稱爲Foreign Key,它是用於建立和加強兩個表數據之間的鏈接的一列或多列。我們在前面的課程中講到了“主鍵”這個概念,“外鍵”與主鍵雖然不是同一個概念,但是它們之間有着緊密的聯繫。通過將保存表中主鍵值的列或多列添加到另一個表中,可以創建兩個表之間的鏈接。這樣,這個列就成爲了第二個表的外鍵。

  我們來舉個例,說明外鍵的作用。數據庫“School Information” 中的班級表 “Class” 和學生表 “Student” 表之間存在着連接,因爲在班級和學生之間存在邏輯聯繫。

  我們先建立好學生表“Student”,表的結構如圖1 中所示。

圖1

  其中StudentID爲主鍵,將標識種了標識自增量都設爲1。“Class ID”列與班級表“Class”中的主鍵“Class ID”相對應。這樣,班級表中的“Class ID”主鍵列就是學生表的外鍵列。這個列是不允許空值存在的,所以我們將“允許空”這個選框中的勾去掉。

  點擊工具欄上面的“管理關係”按鈕,打開“Student”表的“屬性”對話框,並且切換到“關係”選項卡。在“關係”選項卡中,點擊“新建”按鈕。系統會增加一個表示表間關係的外鍵,這個關係的名稱爲“FK Student Class”。在“Class”表與“Student”表之間,“Class”表是主鍵所在的表,而“Student”是外鍵所在的表。在“Class”表下面的下拉框中選擇“Class ID”列,在“Student”表下面的下拉框中也選擇“ClassID”,因爲我們要讓這兩個表之間通過“ClassID”來建立鏈接。如圖2所示。

圖2

  在下方的幾個複選框中有向個選項。“創建中檢查現存數據”這個選項設置我們在創建這個外鍵的時候,是否要檢查表中已經存在的數據。另外,當一個班級被刪除了之後,這個班級的學生也是沒有意義的。那麼,我們設想一下,如果在這個班級被刪除之後,系統能夠自動刪除這個班級的所有學生的資料,在一些情況下,這個功能無疑是很有吸引力的。“級聯刪除相關的記錄”這個選項就是指的這項功能。我們勾選上這個選項之後,我們只要在“Class”表中刪除一個班級,“Student”表中的所有屬於這個班級的學生就會自動被刪除。

  點擊“關閉”按鈕,回到設計視圖中,再在“設計視圖”中,點擊工具欄上面的“保存”按鈕。在彈出的“保存提示”對話框中,顯示“下列表將保存到您的數據庫中。您想繼續嗎?”。大家可以看到,上面顯示有兩個表將被保存到數據庫中。如圖3 。

圖3

  在前面的幾步操作中,我們只打開了“Student”表的設計視圖,並修改了這個表的結構,我們並沒有對“Class”表作任何修改。而在這裏的提示則說明“Class”表和“Student”表都已經被修改,這就說明,我們已經爲“Class”表和“Student”表之間建立了一個“表間聯繫”了。點擊“是”按鈕即可。

  點擊“關閉”按鈕,關閉“Student”表的設計視圖,我們已經完成了“Student”表的外鍵設計了。

 
發佈了15 篇原創文章 · 獲贊 6 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章