兩者在可空、唯一性、排序等表面特徵上並沒有什麼區別,而且主鍵都有唯一索引,所以常被人問起它們之間有什麼區別。簡要地說,主鍵和唯一索引,或者鍵和索引之間的最主要區別在於:
鍵是乙個邏輯層面的概念,涉及到資料模式的設計。從語法角度看,鍵被定義為一種約束。比方說,如果想定義外來鍵(或稱參考約束),那麼相關列就必須先定義為「鍵」。鍵在實現上一般都會有自己的索引(主鍵則是有唯一索引),這個索引可能是使用者顯式定義的索引,或是dbms隱式定義的索引。在具體的dbms實現中,主鍵
還可能會有其它特殊處理。比如在mysql innodb中,表資料在檔案(表空間中)中是按主鍵順序儲存的,所以主鍵的選擇有特殊的講究,不能僅將其作為乙個普通的唯一索引看待。
索引是乙個物理層面的概念,涉及到資料處理的具體實現。比方說,如果想加快某些查詢的速度,就需要在相關列上定義合適的索引。鍵列必有索引,但索引列未必是鍵。不是鍵的索引列是不能用在外鍵定義中的。
關聯式資料庫與非關聯式資料庫
關係型資料庫,是指採用了關係模型來組織資料的資料庫。關係模型是在1970年由ibm的研究員e.f.codd博士首先提出的,在之後的幾十年中,關係模型的概念得到了充分的發展並逐漸成為主流資料庫結構的主流模型。簡單來說,關係模型指的就是二維 模型,而乙個關係型資料庫就是由二維表及其之間的聯絡所組成的乙個...
關聯式資料庫與非關聯式資料庫
關係型資料庫,是指採用了關係模型來組織資料的資料庫。關係模型是在1970年由ibm的研究員e.f.codd博士首先提出的,在之後的幾十年中,關係模型的概念得到了充分的發展並逐漸成為主流資料庫結構的主流模型。簡單來說,關係模型指的就是二維 模型,而乙個關係型資料庫就是由二維表及其之間的聯絡所組成的乙個...
關聯式資料庫與非關聯式資料庫
關聯式資料庫,也就是以關係為核心來組織資料的資料庫,資料被看作關係的集合。它的理念是把資料盡可能拆分成多個二維 不同的表之間通過某種關係來連線起來。這樣的好處有 如果資料的某一部分需要變動,只需要變動該資料所處的表就行,而不需要重新設計整個資料庫。前提是最開始就把關係模型設計得足夠好。可以進行複雜的...