資料庫 碼和鍵

2022-06-21 20:18:08 字數 2382 閱讀 8210

/*

**來自維基百科

資料庫理論中, 超鍵、候選鍵與主鍵之間的關係:

• 候選鍵是超鍵的一種:不含有多餘屬性的超鍵

• 某個候選鍵被選為主鍵

主鍵,又稱主碼(英語:primary key或unique key)。資料庫表中對儲存資料物件予以唯一和完整標識的資料列或屬性的組合。乙個資料列只能有乙個主鍵,且主鍵的取值不能缺失,即不能為空值(null)。

從技術的角度來看,primary key和unique key有很多相似之處。但還是有以下區別:

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

在乙個表中只能有乙個primary key,而多個unique key可以同時存在。

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

超鍵(英語:superkey),有的文獻稱「超碼」,是在資料庫關係模式設計中能夠唯一標示多元組(即「行」)的屬性集。

包含所有屬性的集叫做明顯(平凡)超鍵

在關係模型中,候選鍵候選碼(英語:candidate key)是某個關係變數的一組屬性所組成的集合,它需要同時滿足下列兩個條件:

這個屬性集合始終能夠確保在關係中能唯一標識元組

在這個屬性集合中找不出真子集能夠滿足條件(1)

滿足第乙個條件的屬性集合稱為超鍵,因此我們也可以把候選鍵定義為「最小超鍵」,也就是不含有多餘屬性的超鍵。

候選鍵的重要性是它們能夠在關係中唯一標識出不同的元組,因此超鍵也是在設計資料庫模式時需要指定的最重要的約束之一。由於在關係模型中,每個關係都是乙個集合(沒有重複的元素),所以每個關係都至少有乙個候選鍵(因為所有屬性組合必然是個超鍵)。但是在某些關係型資料庫中表也能代表多重集,所以在每個關係中都顯式地定義至少乙個候選鍵是一條很重要的設計原則。資料庫管理系統通常都需要將每個關係中的某個候選鍵定義為主鍵,亦即這個候選鍵是區分不同元組時首選的識別方式,例如外來鍵通常就是引用主鍵而非其他候選鍵。

外來鍵(英語:foreign key,中國大陸譯作外來鍵,台灣譯作外來鍵),又稱外部鍵。其實在關聯式資料庫中,每個資料表都是由關聯來連繫彼此的關係,父資料表(parent entity)的主鍵(primary key)會放在另乙個資料表,當做屬性以建立彼此的關聯,而這個屬性就是外來鍵。

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

在關係型資料庫設計中,**鍵是在當資料表中的候選鍵都不適合當主鍵時,例如資料太長,或是意義層面太多,就會請乙個無意義的但唯一的字段來代為作主鍵。

**鍵是:

surrogate (1) – hall, owlett and codd (1976)

乙個**鍵值確定了外部世界的乙個實體。**鍵值是資料庫生成的,從來不顯示給使用者或應用程式看。

surrogate (2) – wieringa and de jonge (1991)

乙個**鍵值確定了資料庫中的乙個物件。**鍵值是資料庫生成的,使用者或應用程式看不到它。

在實踐中,**鍵值通常是個自動遞增的數字。在sybase或sql server,用identity column標識**鍵,postgresql裡用serial,oracle裡用sequence,在mysql裡用乙個標記有auto_increment的字段。

以中國大陸的十八位身份證號為例,從左往右為六位數字位址碼,八位數字出生日期碼,三位數字順序碼和一位數字校驗碼。

一家公司想要將它的客戶記入資料庫,以客戶的身份證號作為主鍵當然是可以的;但是這18位身份證號是用於標識大陸13多億人口的,一家公司的客戶顯然沒有這麼多,所以用18位的數字作為主鍵有點浪費空間。

另外,身份證號中包含了地區、生日資訊,若以身份證號為主鍵,要不要另開欄位記錄客戶的地區、生日也是個問題。如果不另開欄位,從主鍵(身份證號)中提取地區、生日有點麻煩;如果開欄位,主鍵和地區、生日欄位的資料存在冗餘。

所以,一般的做法是,根本不記錄客戶的身份證號(除非有其他需求),用乙個**鍵作為主鍵,另開欄位記錄客戶的地區、生日等資訊。

自然鍵與**鍵相反,它是在自然生活中唯一確定乙個事物的標識。身份證號(理論上,假設沒有因技術原因造成的重複)就是乙個自然鍵,用於確定乙個人。

資料庫 外來鍵

外來鍵是什麼?外來鍵 fk 是用於建立和加強兩個表資料之間的鏈結的一列或多列。通過將儲存表中主鍵值的一列或多列新增到另乙個表中,可建立兩個表之間的鏈結。這個列就成為第二個表的外來鍵。外來鍵資料庫一級的完整性約束,由資料庫自行維護.你也可以手動建立.1如果存在外來鍵關係的話,任何修改主表主鍵欄位和刪除...

資料庫原理 鍵

鍵的定義 所有的鍵都是乙個集合,這個集合可以包括乙個集,也可以是多個集。超鍵 super key 在關係中能惟一標識元素屬性的集稱為關係模式的超鍵。候選鍵 candidate key 不含有多餘屬性的超鍵稱為候選鍵。也就是說在候選鍵中在刪除屬性,就不是鍵了。主鍵 primary key 使用者選作元...

資料庫外來鍵

主鍵 能夠唯一標識表中某一行的屬性或屬性組。乙個表只能有乙個主鍵,但是可以有多個索引。主鍵常常與外來鍵構成完整性約束,防止出現資料的不一致,資料庫管理系統對於主鍵自動生成唯一索引,所以主鍵是乙個特殊的索引。外來鍵 用於建立和加強兩個表資料之間的連線的一列或者多列。外來鍵主要是用來維護兩個表之間的資料...