資料庫 主鍵 外來鍵 唯一鍵區別
下面我通過一個小栗子來說明我們應該如何選擇主鍵,外來鍵和唯一鍵。 現在我們想建立學生表,用來儲存,一個系統的登陸資訊。建表如下:
create table student4 ( stu_id int primary key identity,--identity表示自增 stu_name nvarchar(10) unique not null, stu_sex nchar(1) not null, stu_address nvarchar(100) unique not null, stu_email nvarchar(50) ) 我們要求,以後再使用的過程,我們要讓大家使用郵箱註冊,並通過郵箱來登陸。
主鍵: 根據上面的需求,我們先說主鍵的選擇。 相信大家一看,我們可以使用郵箱登陸,那麼郵箱一定是唯一的,那麼用郵箱來做主鍵吧。其實不然,用郵箱做主鍵還是有問題滴。問題有如下四點。 1、比如,我後期換郵箱呢,那不就慘了嗎。 2、如果其他的表已經關聯的本學生表的主鍵——郵箱,那麼在我們更換郵箱後,如果不修改其他表中的外來鍵,那麼就會報錯。如果要是修改的話,可能工作量將會非常的大。 3、另外,在查詢郵箱的的時候,搜尋速度非常的慢。 4、如果多個表外來鍵利用學生表的主鍵,那麼就會導致空間的浪費 為此,最好增加一個沒有意義的編號為主鍵,不要 以業務邏輯的欄位為主鍵,,比如,設定一個stu_id ,而不能以郵箱欄位為主鍵
外來鍵: 其他表,如果需要關聯學生表,那需要在表中新增外來鍵來關聯學生表,那我們首先的是使用學生表中的主鍵,萬不得已在選擇唯一鍵。
唯一鍵 剛才我們在需求中說了,我們要用郵箱來註冊和登陸,那麼肯定需要讓郵箱不能重複,並且,我們的郵箱又不是主鍵,那我們只能將郵箱設定為唯一鍵了。這樣就能滿足我們的需求了 總的來說,主鍵唯一標示表中的每一條記錄,外來鍵是主鍵的副本,從父表中複製出來的,用於建立父表和子表之間的關係,唯一鍵 確保表中某一個值得唯一性。