再談鍵、索引、唯一性、聚集的關系

作者:vkvi 來源:千一網絡(原創) 日期:2009-4-14

鍵的目的是唯一的標識一條記錄,比如很常見的 ID,每條記錄的 ID 都不一樣。包括:

  • 主鍵
  • 唯一鍵

在不引起混淆的情況下,可用“鍵”代指“唯一鍵”。

索引

索引的目的是使記錄查詢更快。包括:

  • 聚集索引(聚簇索引)
  • 非聚集索引(非聚簇索引)

在不引起混淆的情況下,可用“索引”代指“非聚集索引”。

唯一性

  • 不管是“主鍵”還是“唯一鍵”都必須具有唯一性。既然鍵都必須具有唯一性,那么為啥起個名字叫“唯一鍵”呢,不是畫蛇添足么?我覺得這樣起名的原因可能是為了與“主鍵”對應,我們大可將“唯一鍵”理解為“普通鍵”。
  • 不管是“聚集索引”還是“非聚集索引”,都可以具有唯一性,也可以不具有唯一性。

聚集

  • 不管是“主鍵”還是“唯一鍵”,都可以是聚集的,也可以是非聚集的。
  • “聚集索引”必須是聚集的,“非聚集索引”必須是非聚集的,顧名思義。

如果某個鍵或索引用了聚集,其他鍵或索引就只能是非聚集的,因為聚集代表記錄的物理存儲順序,而記錄只能選擇一種物理存儲順序。

按理說,鍵的作用是標識一條記錄,與聚集無關,可是我們看到鍵還是可以設置為聚集,并且主鍵默認就是聚集的,由于是聚集的,這種情況下我們可以把它看作既是鍵,又是索引。這點可能不適合所有的數據庫管理系統,不過在 SQL Server 中是適合的。

SQL Server 2000 中,在設計表中,打開索引/鍵選項卡,容易把人搞暈,說實話,該界面設計得確實不好,讓人搞混淆了鍵、索引、唯一性、聚集的關系。在 Visual Web Developer 中管理數據庫的界面設計得就不錯:鍵是鍵、索引是索引,沒有攪在一起,見下:

Visual Web Developer 中管理索引/鍵

最后

有人說,除了“主鍵”、“唯一鍵”外,我還知道有“外鍵”,怎么不列在“鍵”的“名下”呢,其實“外鍵”這個命名是從另外一個層面來說的,與本文關系不大,就不談了,有興趣的讀者還可以繼續了解 SQL Server 的五種約束:NOT NULL、UNIQUE、PRIMARY KEY、FOREIGN KEY、CHECK。

相關閱讀

你前面那位網友看了:服務器上文件無法刪除、刪除又生成

▲▲▲嘿,歡迎轉載傳播本站原創文章,盡量保留來源噢。▲▲▲

文章評論
標題:必填
內容:
本站永遠終止與捏造“罪名”不支付廣告費的某度聯盟合作。
vkvi
vkvi

作者簡介: vkvi,致力于 .NET Web 開發、移動開發的技術推廣,在 .NET、SQL Server、Windows Server 等方面有深入研究和豐富經驗,10 年間共計撰寫文章 4000 余篇。 主持金融、國土、農業、電商等多個行業項目執行, 推行“技術提升生產力、人心決定成功率”的管理理論。 聯系他

最新22选5开奖公告