天天看點

MySQL外鍵限制1 主鍵(primary key或unique key)2 外鍵(foreign key)

1 主鍵(primary key或unique key)

又稱主碼,資料庫表中對儲存資料對象予以唯一和完整辨別的資料列或屬性的組合。一個資料列隻能有一個主鍵,且主鍵的取值不能缺失,即不能為null。

技術角度看,primary key和unique key有相似之處。但還是有差異:

作為primary key的域/域組不能為null;而unique key可以

在一個表中隻能有一個primary key,而多個unique key可以同時存在

更大的差別在邏輯設計上。primary key一般在邏輯設計中用作記錄辨別,這也是設定primary key的本來用意。而unique key隻是為了保證域/域組的唯一性

2 外鍵(foreign key)

又稱外部鍵。在關系資料庫中,每個資料表都是由關系來連系彼此的關系,父資料表(Parent Entity)的主鍵(primary key)會放在另一個資料表,當做屬性以建立彼此的關系,而這個屬性就是外鍵。

比如,學生跟老師之間是教學關系,學生資料表會有個屬性叫指導老師(FK),而這個值就是對應到老師資料表的老師代号(PK),學生的指導老師就是外鍵。

注意 : 外鍵不一定要與相應主鍵同名,隻是在應用中為便于識别,當主鍵與相應外鍵屬于不同關系時,往往取同名

作用

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

案例

如果不使用外鍵,表2的學号字段插了一個值(比如20140999999),但該值在表1中并沒有。這時,資料庫允許插入,并不會對插入的資料做關系檢查。

然而在設定外鍵時,你插入表2學号字段的值必須要求在表1的學号字段能找到。 同時,如果你要删除表1的某個學号字段,必須保證表2中沒有引用該字段值的列,否則就沒法删除。這就是所謂的保持資料的一緻性和完整性。

如果表2還引用表1的某個學号,你卻把表1中的這個學号删了,表2就不知道這個學号對應的學生是哪個學生。

MySQL外鍵限制1 主鍵(primary key或unique key)2 外鍵(foreign key)