外來鍵如何使用

General 更新 2024年05月06日

  外來鍵表示了兩個關係之間的相關聯絡。以另一個關係的外來鍵作主關鍵字的表被稱為主表,具有此外來鍵的表被稱為主表的從表。以下是由小編整理關於什麼是外來鍵的內容,希望大家喜歡!

  外來鍵的定義

  設F是基本關係R的一個或一組屬性,但不是關係的鍵,Ks是基本關係S的主鍵。如果F與Ks相對應,則稱F是R的外來鍵,並稱基本關係R為參照關係,基本關係S為被參照關係或目標關係。

  換而言之,如果關係模式R中的某屬性集不是R的主鍵,而是另一個關係R1的主鍵則該屬性集是關係模式R的外來鍵,通常在資料庫設計中縮寫為FK。

  在實際操作中,將一個表的值放入第二個表來表示關聯,所使用的值是第一個表的主鍵值***在必要時可包括複合主鍵值***。此時,第二個表中儲存這些值的屬性稱為外來鍵***foreign key***。

  注意

  顯然目標關係的主碼和參照關係的外碼必須定義在一個或同一組的域上。

  關係R和S不一定是不同的關係,即外來鍵不一定要與相應的主鍵同名。如在學生***學號,姓名,性別,專業號,年齡,班長***關係中,“學號”是主鍵,“班長”屬性表示該學生所在編輯的班長的學號,它引用了本關係中“學號”屬性,因此“班長”是外來鍵,這裡學生關係既是參照關係也是被參照關係。不過在實際應用中為了便於識別,當主鍵與相應的外來鍵屬於不同關係時,往往取相同的名字。

  作用

  保持資料一致性,完整性,主要目的是控制儲存在外來鍵表中的資料。 使兩張表形成關聯,外來鍵只能引用外表中的列的值或使用空值。

  如果不使用外來鍵,表2的學號欄位插了一個值***比如20140999999***,但是這個值在表1中並沒有,這個時候,資料庫允許插入,並不會對插入的資料做關係檢查。然而在設定外來鍵的情況下,你插入表2學號欄位的值必須要求在表1的學號欄位能找到。 同時,如果你要刪除表1的某個學號欄位,必須保證表2中沒有引用該欄位值的列,否則就沒法刪除。這就是所謂的保持資料的一致性和完整性。如右圖,如果表2還引用表1的某個學號,你卻把表1中的這個學號刪了,表2就不知道這個學號對應的學生是哪個學生。

  外來鍵的使用方法

  主鍵表和外建表:

  使用設計介面建立外來鍵時,出現主鍵表和外建表問題,上述使個人理解有誤:

  CREATE TABLE TABLE1

  ***

  [ID] INT IDENTITY***1,1*** PRIMARY KEY

  ***

  GO

  CREATE TABLE TABLE2

  ***

  [ID] INT NOT NULL,

  FOREIGN KEY ***[ID]*** REFERENCES [TABLE1]***[ID]***

  ***

  GO

  TABLE2 中引用了TABLE1,在此TABLE1為主鍵表,而TABLE2 為外來鍵表。

  總結:主鍵表是被引用的表,外來鍵表是引用其他表的表。

  外來鍵的有效性

  有很多時候,程式設計師會發現欄位缺少、多餘問題或者是建立外來鍵以後就不能新增沒有受約束的行[特殊情況下是有必要的],這個時候不想對錶結構進行操作,就可以使用約束失效。

  以 Northwind 為例:想給產品表【Products表】新增一條不受種類表【Categories表】限制的資料。可以使產品表中的 Categories 約束失效。

  寫法:ALTER TABLE dbo.Products NOCHECKCONSTRAINT FK_Products_Categories

  新增完成後再使其有效:

  ALTER TABLE dbo.Products CHECK CONSTRAINT FK_Products_Categories

  這樣就完成不受某表約束的資料添加了。

  還有一個好處是:如上述例子。修改 Categories 表時 新增欄位時 要把所有引用 Categories 表的外來鍵給失效。等給 Categories 表新增欄位完成後再使所有應用 Categories 表的外來鍵恢復有效性即可。

主語補足語如何辨別
主關鍵字如何定義
相關知識
外來鍵如何使用
滴滴打車一鍵回家功能如何使用
電腦如何使用鍵盤進行關機
電腦如何使用截圖功能將網路圖片儲存下來
如何使用外部連結的方法制作廣告
電飯鍋如何使用來進行煮飯做飯
室外健身器材應該如何使用
鍵盤的原理是怎樣的如何使用
桌上型電腦如何使用無線鍵盤呢
桌上型電腦如何使用無線鍵盤