2009-11-07 48 views

回答

20

主鍵和唯一鍵是實體完整性約束

主鍵允許表中的每一行進行唯一標識,並確保沒有重複的行存在,並且沒有輸入空值。

唯一鍵約束用於防止表中行的鍵值重複並允許空值。 (在oracle中,一個null不等於另一個null)。

  • KEY或INDEX是指一個正常的非唯一索引。索引的非重疊值是允許的,因此索引可能包含索引所有列中具有相同值的行。這些索引不會對您的數據執行任何結構,因此它們僅用於加快查詢速度。
  • UNIQUE指索引中所有行必須唯一的索引。也就是說,對於此索引中的所有列,同一行可能不具有與另一行相同的非NULL值。除了用於加快查詢速度外,UNIQUE索引還可用於強制執行數據結構,因爲數據庫系統不允許在插入或更新數據時破壞此不同值規則。您的數據庫系統可能允許在允許NULL值的列上使用UNIQUE索引,在這種情況下,如果兩行都包含NULL值(NULL被認爲不等於自身),則允許兩行相同,儘管這可能是不受歡迎的,具體取決於您的應用。
  • PRIMARY的行爲與UNIQUE索引完全相同,除了它總是被命名爲「PRIMARY」,並且在表上可能只有一個(並且總是應該有一個;儘管一些數據庫系統不強制執行此操作)。 PRIMARY索引旨在用作唯一標識表中任何行的方法,因此不應將其用於允許NULL值的任何列。您的PRIMARY索引應始終位於足以唯一標識一行的最小列數上。通常,這只是一列包含一個唯一的自動遞增數字,但如果還有其他任何可以唯一標識一行的列(如國家/地區列表中的「countrycode」),則可以使用該列。
  • FULLTEXT索引與上述不同,它們在數據庫系統中的行爲差異更大。與上面三種典型的b-tree(允許從最左列開始選擇,排序或範圍開始)或散列(允許從最左列開始選擇)不同,FULLTEXT索引僅用於全文搜索MATCH()/ AGAINST()子句。

看到Differences between INDEX, PRIMARY, UNIQUE, FULLTEXT in MySQL?

+0

注:SQL Server的唯一約束和索引處理空值,如果他們是平等的,這樣「在這種情況下,如果兩行都包含NULL值,則允許兩行相同。「對於SQL Server不是這樣。 – 2009-11-07 23:29:54

4

這裏有你一些參考:

Primary & foreign key Constraint.

主鍵:主鍵是字段的字段 或組合唯一 標識一個表中的記錄,以便 單個記錄可以位於 沒有混淆。

外鍵:外鍵(有時稱爲引用鍵 )是用於將兩個錶鏈接在一起的鍵 。 通常情況下,您從一個表中獲取主鍵 字段,並將其 插入另一個表,其中它變爲 外鍵(它仍然是原始表中的主鍵 鍵)。

Index另一方面,是一種屬性,您可以將其應用於某些列,以便可以加快在這些列上完成的數據檢索。

2

鍵/索引:一個鍵是一個邏輯數據庫設計的一個方面中,一個索引是物理數據庫設計的一個方面。關鍵字與完整性約束相對應,索引是一種物理記錄值的技術,可以在執行這些約束時有用地應用這些值。

主鍵/外鍵:「主鍵」是一組屬性,其值必須形成整個表中唯一的組合。可以有多個這樣的組合(> 1個鍵),而「主要」這個詞是早期設計師被迫選擇多個鍵中的一個作爲「最重要/最重要」的剩餘部分。 。原因主要是與外鍵結合使用:

與「主鍵」一樣,「外鍵」也是一組屬性。這些屬性的值必須組成一個組合,它是被引用表中現有的主鍵值。我不知道這條規則今天在SQL中究竟有多嚴格。無論如何,術語仍然存在。

唯一:用於指示索引不能接受重複條目的關鍵字。唯一索引顯然是強制執行主鍵的極好方法。如果在LOGICAL設計的上下文中使用「unique」這個詞,這是多餘的,草率的,不必要的和混亂的。按鍵(即主鍵)根據定義是唯一的。

17

主鍵:唯一標識每行 它不能爲空。 它不能重複。

外鍵: 創建兩個表之間的關係。 可以爲空。 可以是重複的  

+0

是否所有的外鍵都是其他關係的主鍵?如果不是,那麼null屬性將如何唯一標識。 – sidgupta234 2016-06-24 12:51:06

3

1)一種primary key是一組一個或多個屬性的唯一識別關係中的元組。

2)foreign key是一組從關係方案,其可被唯一地識別的元組氟利昂另一關係方案屬性。

+2

元組是標識對象特徵的數據值的集合。 – 2012-02-04 14:17:10

3
  1. 主鍵是一列或一組列,用於唯一標識表中的一行。主鍵應該簡短,穩定和簡單。外鍵是表中的字段(或字段集合),其值必須與第二個表的主鍵的值相匹配。通常,外鍵位於與要求匹配其主鍵的表不同的表中。一個表可以有多個外鍵。
  2. 主鍵不能接受空值。外鍵可以接受多個。
  3. 我們在表中只能有一個主鍵。我們可以在一個表中有多個外鍵。
  4. 默認情況下,主鍵是聚簇索引,數據庫表中的數據按聚簇索引的順序進行物理組織。外鍵不會自動創建索引,聚簇或非聚簇。您可以手動創建外鍵索引。
0

主鍵主要是防止重複和顯示的列的唯一性 外鍵主要表現在兩個表的關係