關係型資料模型(庫)中的鍵

2021-09-12 09:56:01 字數 1268 閱讀 3236

現在我們要介紹關係型資料庫中的4中鍵:超鍵、候選鍵、主鍵、外來鍵

乙個列或者列集,唯一標識表中的一條記錄。超鍵可能包含用於唯一標識記錄所不必要的額外的列,我們通常只對僅包含能夠唯一標識記錄的最小數量的列感興趣。

其實乍一看很難懂,其實是說法不太容易懂

我們來弄一張表來說明一下

student_id

name

grade

class

age00001a1

21800002c1

11700003f1

31600004g1

41800005h2

21600006q2

11700007s2

21600008z2

219一張student表 假設姓名沒有重複的  學號(student_id) ,姓名都可以確定唯一一條記錄,

學號+姓名的組合也可以確定一條記錄,這三種都叫超鍵

僅包含唯一標識記錄所必需的最小數量列的超鍵。表的候選鍵有三個屬性:

唯一性:在每條記錄中,候選鍵的值唯一標識該記錄。

最小性:具有唯一性屬性的超鍵的最小子集。

非空性:候選鍵的值不允許為空。

在我們的例子中,分公司編號是候選鍵,如果每個分公司的郵編都不同,那麼郵編也可以作為分公司表的候選鍵。乙個表中允許有多個候選鍵。

上面的超鍵中有3個,有2個值包含乙個字段,有乙個含有2個字段,超鍵中最少的組合(至少為1,且去掉任何乙個欄位都不再是超鍵)為候選鍵,上圖的例子中2個只含乙個欄位的超鍵為候選鍵,那個帶2個字段的超鍵由於去掉其中一欄位依然是超鍵,所以其不是候選鍵。

3)主鍵和外來鍵

主鍵和外來鍵就不過多介紹了,直接放定義

主鍵:主鍵的選擇在關係資料模型中非常重要,很多效能問題都是由於主鍵選擇不當引起的。在選擇主鍵時,我們可以參考以下原則:

1.主鍵要盡可能地小。

2.主鍵值不應該被改變。主鍵會被其他表所引用。如果改變了主鍵的值,所有引用該主鍵的值都需要修改,否則引用就是無效的。

3.主鍵通常使用數字型別。數字型別的主鍵要比其他資料型別效率更高。

4.主鍵應該是沒有業務含義的,它不應包含實際的業務資訊。無意義的數字列不需要修改,因此是主鍵的理想選擇。大部分關係型資料庫支援的自增屬性或序列物件

更適合當作主鍵。

雖然主鍵允許由多列組成,但應該使用盡可能少的列,最好是單列。

外來鍵:乙個表中的乙個列或多個列的集合,這些列匹配某些其他(也可以是同乙個)表中的候選鍵。注意外來鍵所引用的不一定是主鍵,但一定是候選鍵。當一列出現在兩張

表中的時候,它通常代表兩張表記錄之間的關係。

關係型資料模型

關係模型是由若干個關係模式組成的集合,關係模式的例項稱為關係,每個關係實際上是一張二維 關係模型用鍵導航資料,其 簡單,使用者只需用簡單的查詢語句就可以對資料庫進行操作,並不涉及儲存結構 訪問技術等細節。sql語言是關聯式資料庫的代表性語言,已經得到了廣泛的應用。典型的關聯式資料庫產品有db2 or...

關係型資料模型 相關術語

student 姓名,學號,性別,出生年份,籍貫,系別,入學年份 描述乙個事物,常常取其若干特徵來表示,這些特徵稱為屬性 attribute 例如 student表中的姓名,學號等等 每個屬性對應乙個值的集合,作為其可以取值的範圍,稱為該屬性的域 domain 例如 姓名的域 所有合法姓名的集合 表...

flask 資料模型的外來鍵關係

sql資料庫中,兩個表之間的關係表現為外來鍵.在sqlalchemy的模型中,也可以表現這種模型之間的關聯關係.class role db.model tablename roles id db.column db.integer,primary key true name db.column db...