2019-07-16
關鍵字:資料庫設計、表設計、主鍵、聯合主鍵、候選鍵、自然鍵
在資料庫中「鍵」是乙個很重要的概念。基本上只要我們談論某張表,就一定離不開討論它的各種鍵。而鍵的種類也不少,如果對各種鍵的概念分不清,在和他人討論時可能就會不太和諧。因此,這篇文章主要記載一下各種鍵的名稱及概念。
常見的鍵有以下幾種
1、主鍵
2、候選鍵
3、可選鍵
4、復合鍵
5、單鍵
6、**鍵
7、自然鍵
8、外來鍵
下面我們逐一了解一下這些鍵的概念。
在學習各種鍵之前,有必要稍微解釋一下什麼是「鍵」。
我們都知道資料表都是二維矩陣式結構的。每一行資料代表一條記錄,每一條記錄又由多種屬性/字段組成。而我們所說的「鍵」就與這些屬性/字段有關。
1、主鍵
我們都知道,資料表中的每一行就代表一條記錄,那這麼條記錄,我們要如何來分辨每一條記錄是什麼呢?就比如,全中國那麼多人,我們要怎麼來區分哪個是哪個呢?
解決的辦法就是給每一條記錄都設定乙個「唯一編號」。就像每乙個中國公民都擁有乙個全中國獨一無二的身份證號碼一樣。我們通過身份證號碼就能夠唯一確定乙個人,而我們通過表記錄中的「唯一編號」也能唯一確定某一條記錄。
所以,主鍵就是在一張資料表中能夠唯一確定一條記錄的屬性/字段。
資料表的主鍵通常都含有如下特性:
1、唯一性
2、強制性
3、永久性
4、最小集合
2、候選鍵
一張表中通常都會含有多個屬性/字段。能夠用來唯一確定一條記錄的屬性/字段就是候選鍵。所以候選鍵的數量可以為乙個或多個。
舉個例子,假如我們有乙份學生資訊表。它包含這幾個字段:學號、姓名、性別、家庭住址、班級、成績。那明顯,我們可以通過學號來唯一確定某個學生,因此這個學號字段就是乙個候選鍵。同樣,我們也可以通過姓名+性別+家庭住址+班級來唯一確定某個學生,因此這幾個字段組合也被稱為候選鍵。
換句話說,候選鍵就是具備成為主鍵的資格,但是目前還不是主鍵的屬性/字段。
3、可選鍵
候選鍵中沒有被選為主鍵的屬性/欄位就被稱為可選鍵。
4、復合鍵
通過前面我們知道了,主鍵的數量可以為 1~n 個。如果主鍵是由多個屬性/字段確定的,那麼就稱這種主鍵為復合鍵。全稱即是複合型主鍵。
5、單鍵
與上一條相對應。如果主鍵僅由 1 個屬性/字段確定,那麼就稱這種主鍵為單鍵。
6、**鍵
**鍵通常是用來形容主鍵的。
如果某張資料表的主鍵是由系統自動生成的,例如我們常見的 _id 字段,它的元素值通常是乙個自增的整型數值。這種主鍵就稱為是**鍵,全稱為**型主鍵。
**鍵都是單鍵。
7、自然鍵
自然鍵通常是用來形容主鍵的。
如果某張資料表的主鍵即是業務相關的屬性/字段,例如使用學生資訊表中的學號作為主鍵的情況我們就稱這種主鍵為自然鍵,全稱為自然型主鍵。
自然鍵可以為單鍵也可以為復合鍵。
8、外來鍵
外來鍵是指某張資料表中的某個或某部分屬性/欄位是另外一張表中的主鍵。
設定外來鍵的目的通常是為了約束當前表。因為你每次要操作當前表,它都會去查詢一下擁有這個外來鍵作為主鍵的表中的資料,如果資料不對,則無法操作。
資料庫中的各種鍵
在關係中能唯一標識元組的屬性集稱為關係模式的超鍵。乙個屬性可以為作為乙個超鍵,多個屬性組合在一起也可以作為乙個超鍵。超鍵包含候選鍵和主鍵。是最小超鍵,即沒有冗餘元素的超鍵。資料庫表中對儲存資料物件予以唯一和完整標識的資料列或屬性的組合。乙個資料列只能有乙個主鍵,且主鍵的取值不能缺失,即不能為空值 n...
資料庫設計外來鍵
今天心情很煩躁,公司來了新員工,我感覺到自己這個渣渣要晚年不保啊,隨後就隨便網上逛逛,看到這個挺有意思。設計外來鍵竟然還有人不會?哈哈哈,這不是說我呢嘛!外來鍵一般用於一對多的時候,比如說某個型別type下面可能有多個物件。訂單的話,乙個訂單號肯定會有關於這個訂單 號碼 的訂單詳情,這是給客戶看的,...
資料庫 資料庫中主鍵和外來鍵的設計原則
主鍵和外來鍵是把多個表組織為乙個有效的關聯式資料庫的粘合劑。主鍵和外來鍵的設計對物理資料庫的效能和可用性都有著決定性的影響。必須將資料庫模式從理論上的邏輯設計轉換為實際的物理設計。而主鍵和外來鍵的結構是這個設計過程的癥結所在。一旦將所設計的資料庫用於了生產環境,就很難對這些鍵進行修改,所以在開發階段...