Can you summarize the following document?
        
  主鍵,又稱主碼(英語:primary key或unique key)。資料庫表中對儲存資料物件予以唯一和完整標識的資料列或屬性的組合。一個資料表只能有一個主鍵,且主鍵的取值不能缺失,即不能為空值(Null)。  從技術的角度來看,primary key和unique key有很多相似之處。但還是有以下區別:

  超鍵(英語:superkey),有的文獻稱“超碼”,是在資料庫關係模式設計中能夠唯一標示多元組(即“行”)的屬性集。  包含所有屬性的集叫做明顯(平凡)超鍵。

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

  。其實在關聯式資料庫中,每個資料表都是由關聯來連繫彼此的關係,父資料表(英語:Parent Entity)的主鍵(英語:primary key)會放在另一個資料表,當做屬性以建立彼此的關聯,而這個屬性就是外來鍵。  比如,學生跟老師之間是教學的關聯,學生資料表會有個屬性叫指導老師(FK),而這個值就是對應到老師資料表的老師代號(PK),學生的指導老師就是外來鍵。

  在關係型資料庫設計中,代理鍵(英語:surrogate key)是在當資料表中的候選鍵都不適合當主鍵時,例如資料太長,或是意義層面太多,就會請一個無意義的但唯一的欄位來代為作主鍵。  代理鍵是:  在實踐中,代理鍵值通常是個自動遞增的數字。在Sybase或SQL Server,用identity column標識代理鍵,PostgreSQL用serial,Oracle用SEQUENCE,在MySQL用標記有AUTO_INCREMENT的欄位。

  以中華人民共和國的十八位身份證號為例,從左往右為六位數字地址碼,八位數字出生日期碼,三位數字順序碼和一位數字校驗碼。  一家公司想要將它的客戶記入資料庫,以客戶的身份證號作為主鍵當然是可以的;但是這18位身份證號是用於標識大陸13多億人口的,一家公司的客戶顯然沒有這麼多,所以用18位的數字作為主鍵有點浪費空間。  另外,身份證號中包含了地區、生日資訊,若以身份證號為主鍵,要不要另開欄位記錄客戶的地區、生日也是個問題。如果不另開欄位,從主鍵(身份證號)中提取地區、生日有點麻煩;如果開欄位,主鍵和地區、生日欄位的資料存在冗餘。  所以,一般的做法是,根本不記錄客戶的身份證號(除非有其他需求),用一個代理鍵作為主鍵,另開欄位記錄客戶的地區、生日等資訊。

  自然鍵(英語:natural key)與代理鍵相反,是在自然(真實)生活中唯一確定一個事物的標識。身份證號(理論上,假設沒有因技術原因造成的重複)就是一個自然鍵,用於確定一個人。
關係鍵是關聯式資料庫的重要組成部分。關係鍵是一個表中的一個或幾個屬性,用來標識該表的每一行或與另一個表產生聯絡。