回答
你需要看看你的數據結構。
主鍵必須:
- 從未爲NULL(沒有例外)
- 可靠和唯一標識每個單列
,它幫助,如果它的
- 小,使用方便
- 穩定(並沒有改變,或至少不經常)
- 一列(或最多兩個)
檢查您的數據 - 這列或一組列可以滿足這些要求?
一旦你有這些潛在的主鍵(「候選鍵」) - 考慮你將如何訪問數據,以及可能需要與這個實體相關的其他數據 - 作爲一個有意義的外鍵?你想通過名字引用你的部門嗎?可能不是一個好主意,因爲這個名字可能拼錯了,它可能隨着時間的推移而改變等。通過該部門的辦公地點?也是不好的選擇。但像一個獨特的「部門ID」可能是一個好主意。
如果您在實際數據中沒有找到適合作爲主鍵並且有意義的適當列,那麼引入「代理鍵」是一種常見做法 - 一個額外的列,通常是INT
(並且通常像「自動增量」INT),它將用作每行的仿真標識符。如果你這樣做,一個最常見的做法是不要在任何數據屏幕上顯示人工密鑰 - 它對你係統的用戶沒有任何意義 - 所以甚至不要向他們展示它。
檢查這些要求和許多經驗將幫助您找到正確的主鍵。
謝謝marc_s這總結它以及一些其他建議在這裏。 – Maximus
最小化也是一項要求(候選關鍵字必須*不可否認*唯一,而不僅僅是唯一的)。 – sqlvogel
「單列(或最多兩列)」似乎完全是任意的。 – onedaywhen
在SQL服務器中,它旁邊會有一個關鍵字。它通常是ID或其中帶有ID的東西。它也是獨特的,通常會增加。當你在SQL中查看它時。在桌面設計下的服務器管理工作室,你會看到它與Lil鍵圖標列的頂部。
這是一個獨特的標識符,可以將每條記錄相互解密。有點像每個人有一個ssn。
- 1. 關於SQL的一般問題 - 連接
- 2. 有關C編程的一般問題
- 3. 有關iPhone編程的一般問題
- 4. 有關列表的一般問題
- 5. 有關XML的一般風格問題
- 6. 有關Java Swing的一般問題
- 7. 有關Python語言的一般問題
- 8. 有關圖的一般問題
- 9. Drupal 7,關於主題的一般問題
- 10. 主鍵SQL複製問題
- 11. SQL主鍵的外鍵問題
- 12. 關於R中主成分分析(PCA)的一般問題
- 13. 關於MVC的Javascript和一般問題
- 14. 關於遞歸的一般問題
- 15. C#關於AppSetting的一般問題
- 16. 關於jQuery的一般問題.click()
- 17. 關於Swing組件的一般問題
- 18. 關於JHipster的一般問題
- 19. 關於C++的簡單一般問題
- 20. 關於數據庫的一般問題
- 21. 一般問題
- 22. 關於鏈接一般問題
- 23. MySQL:我有一些主鍵問題
- 24. 一般C#問題
- 25. rsync一般問題
- 26. php一般問題
- 27. p:datatable一般問題
- 28. C++一般問題
- 29. CoreData一般問題
- 30. 有關iOS的一般問題的應用程序更新
這個問題就像問我應該買什麼類型的汽車。這麼多「取決於」變量,這並不好笑。基本上你看數據,你問自己,我怎樣才能唯一識別一行? –