主鍵和RRN有什麼區別?主鍵與RRN
Q
主鍵與RRN
-1
A
回答
2
主鍵唯一且唯一地標識給定記錄(在數據庫表/視圖中)或給定行(在文本文件中)。儘管主鍵可以基於單個字段(單個「列」),但主鍵也可以基於多個字段/列。
RRN是可以被理解爲 「記錄行數」 或 「相對行號」 的縮寫。記錄行號通常被理解爲一個數字,通常(但不一定)通過簡單增量(基於先前分配的這種RRN的值)來分配,該「增加」到特定記錄類型的其他字段/列。許多DBMS提供支持這種「自動遞增」或更一般自動分配的RRN的功能。
定義如上,RRN可以用作主鍵。
有一個[語義上無效的] RRN與基於記錄的[一個或多個]屬性(字段或列)值的主鍵相反的優點和缺點。這可能在其他SO問題中討論過;這裏有一些最常見的論點:
- 主鍵可能被修改,RRN是「不可變的」。
例如,如果主鍵是社會安全號碼(SSN),則記錄可能會在某個時間更新,因爲SSN最初是由於輸入錯誤而導致的。當/如果發生這種情況,任何使用此SSN引用更新記錄的相關記錄也需要更新。如果這些相關記錄使用了[無意義] RRN,它們將不受SSN值可能發生的變化的影響。 - 當有基於單個列中沒有「天然」的主鍵,它可能是使用RRN
- 的RRN通常較短
- 相關表格,並列出其通過的方式是指原始記錄更方便非RRN主鍵,以某種方式複製底層信息。這既是一個優點,也是一個缺點:人們可以知道底層的字段值,而不必在原始表中查找:如果希望相關表包含這樣的信息,那麼很好,如果不這樣做,就很糟糕(例如:社交安全號碼可以被認爲是敏感的等)
- RRNs被保證是唯一的(短於RRN生成邏輯的錯誤),基於屬性值的鍵有傾向於導致非唯一性(「哎呀!我們認爲我們可以使用電話號碼作爲房屋ID;當電話公司開始重複使用電話號碼......「)
0
主鍵標識表中的一行。
一個RRN(我假定你的意思是相對記錄數)也標識一個子集中的位置(即查詢結果)。
我發現它很有用,如果你需要外推一系列與主鍵無關的記錄的連續順序。
相關問題
- 1. 主鍵與鍵
- 2. 與主鍵
- 3. 與主鍵
- 4. 約束與主鍵
- 5. 與主文本鍵
- 6. 的Android - 與主鍵
- 7. 與主鍵混淆
- 8. 與主鍵不同
- 9. 選擇更大的RRN的記錄
- 10. 選擇SQL與主鍵和外鍵
- 11. Belongs_to與主鍵和外鍵的關聯
- 12. 主鍵與重複數據?
- 13. Yii複合主鍵與isNewRecord
- 14. 如何自動與主鍵
- 15. Mysql:分區與主鍵
- 16. 1 auto_increment與2個主鍵
- 17. OneToOne與共享主鍵
- 18. JPA2 PrimaryKey與Oracle主鍵
- 19. 與多個主鍵合併
- 20. NHibernate的與兩個「主」鍵
- 21. Laravel updateExistingPivot與多個主鍵
- 22. 與VARCHAR作爲主鍵
- 23. CakePHP ACL與UUID主鍵
- 24. 插入PDO與主鍵
- 25. OneToMany JoinTable與非主鍵值
- 26. 主鍵與唯一約束?
- 27. 主鍵約束與主鍵序列之間的區別?
- 28. 組合主鍵與單個整數主鍵大表
- 29. 是與主鍵(b,a)不同的主鍵(a,b)?
- 30. 複合主鍵與自動遞增主鍵
當然,這不是。不過,這個問題可以使用更多的上下文。 – 2010-03-23 05:16:57
@Phenom,在最近的問題中回答了這個問題:http:// stackoverflow。com/questions/2497729 /記錄中的文件 – paxdiablo 2010-03-23 05:33:48
答案並不像這個那麼明確。 – neuromancer 2010-03-23 05:58:39