2010-06-21 270 views
13

超級密鑰與候選密鑰在ERDB之間有什麼區別?超級密鑰與候選密鑰

謝謝。

+4

超級鍵和候選鍵是關係數據庫模型術語。 「ERDB」是什麼意思?也許你指的是實體關係(ER)模型,它是一組繪製關於數據圖片的約定。 ER模型與關係模型不同。 – sqlvogel 2010-06-21 19:38:19

回答

12

候選鍵是最小超密鑰

+5

+1,此外,在這裏定義「最小」會很好,因爲它非直觀。例如,在表(a,b,c)中,(a)是唯一的,(b,c)是唯一的,(a)和(b,c)都應該是候選鍵。 – orip 2010-06-21 20:14:00

+1

最小的意義在於,如果從候選關鍵字中刪除了一個屬性,則該行不能唯一標識。 – libjup 2016-08-13 08:02:12

4
  • 候選鍵=最小鍵標識行
  • Super鍵=至少一樣寬候選鍵

對於我來說,超級密鑰通常會在候選密鑰上引入歧義

+0

候選鍵是一個最小的超級鍵。所以一個超級密鑰不是嚴格的「更寬」,因爲候選密鑰也是超級密鑰。 – sqlvogel 2010-06-21 19:41:48

+0

@david:不是「最小的超級鍵」嗎? – gbn 2010-06-22 04:40:49

+0

「通常引入歧義」 - 你是什麼意思?例如,在這個答案中(http://stackoverflow.com/questions/3938736/enforce-constraints-between-tables/3940708#3940708),EmployeeDepartments表有一個候選鍵'(employee_ID)'和一個超級鍵'(employee_department_name, EMPLOYEE_ID)'。兩者都是數據完整性所必需的,哪裏存在歧義? – onedaywhen 2010-10-26 14:18:03

22

超級密鑰是一組列,唯一標識ifies連續。候選鍵將是唯一標識一行的MINIMAL列集合。所以基本上Superkey是一個候選關鍵字,其中包含多餘的不必要的列。

+0

「一個超級鍵是一個候選鍵與額外的不必要的列」 - - 額外的列可能實際上有必要引用表並確保數據的完整性,例如'(employee_ID)'是唯一的,但是對於根據部門限制僱員的某些表可能需要'(employee_ID,department_name)'上的鍵。 – onedaywhen 2010-10-26 14:11:51

2

讓我們保持它的簡單

超密鑰 - 一組鍵的唯一定義一個row。所以出所有屬性的,如果連任何單獨一個是unique那麼所有具有獨特的屬性屬於子集根據superkey

候選鍵 - 一個superkey哪些沒有進一步的子集可以導出可識別rows uniquely,或者我們可以簡單地說,它是minimal superkey的。