2017-06-14 42 views
0

我知道我們使用主鍵來唯一標識每一行,但是如果我們用代碼管理所有的代碼呢?主鍵有什麼用途?爲什麼我們使用主鍵如果我們管理唯一性和從代碼自動增量?

+1

看看這個帖子 https://stackoverflow.com/questions/831850/should-a-database-table-always-have-primary-keys –

+0

那麼你不需要在DB PK。我看到相當大的應用程序在DB服務器端管理所有內容,沒有PK,沒有FK。只需創建一些索引來加速查詢 – Serg

+0

三個可怕的迴應;他們都沒有解決你的(重複)問題。主要原因是什麼?因爲代碼是由犯錯的人編寫的,而且錯誤始終存在。從歷史中學習 - 您的課程應該涵蓋數據管理的歷史以及如何開發關係理論來解決數據不一致的問題。 – SMor

回答

0
  • 使用主鍵沒有索引ID列的身份,從數據庫 父行的用戶刪除會迫使SQL Server查詢引擎掃描外鍵引用的子表 ,以確保數據完整性不是 受損。考慮一個包含數十萬行 行的子表;一個索引可以大大加快查找速度。
  • 的外鍵CASCADE選項(DELETE CASCADE,ON UPDATE CASCADE)性能可以顯着地與索引的使用 因爲引擎進行查詢,以搜索將自動刪除或行 得到改善更新。
  • 外鍵列上的父子表之間的JOIN性能大大提高。這是一個自然的假設 有關的表可以被一起查詢以產生 結果集。考慮先前的ORDERHEADER/LINEITEM例子。要執行的查詢,將要求不 僅行項目的元素,但也ORDERHEADER的這 很自然(如 訂單日期,誰進入了CSR的順序)
  • 在開發和維護的數據模型,檢驗您的模型 可受益於外鍵關係
  • 確保您的外鍵列已建立索引,以防止在數據刪除,級聯操作和查詢JOIN期間進行表掃描 。
0

通過定義主鍵,您通過鍵獲取數據會更快。

0

,如果您使用的是你不需要在同一列

+0

嗯,我認爲在id列上使用標識不一定會使該列成爲主鍵列,對於表中的組合鍵,我可以將多個列作爲主鍵,但在柱 – Dickson

相關問題