主键和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. 选择更大的RRN的记录
- 6. Mysql:分区与主键
- 7. CakePHP ACL与UUID主键
- 8. 与VARCHAR作为主键
- 9. 主键与重复数据?
- 10. 插入PDO与主键
- 11. OneToMany JoinTable与非主键值
- 12. JPA2 PrimaryKey与Oracle主键
- 13. Yii复合主键与isNewRecord
- 14. 主键与唯一约束?
- 15. Laravel updateExistingPivot与多个主键
- 16. OneToOne与共享主键
- 17. 组合主键与单个整数主键大表
- 18. varchar()主键或int主键?
- 19. 视图与表之间的主键和外键键映射
- 20. 当主键没有主键时,mysql主键重复输入
- 21. 主键
- 22. 多主键与asp .net mvc 3
- 23. 合并SQLite3表与相同的主键
- 24. 添加主键即开始与1001
- 25. Mysql的插入与外键指主ID
- 26. 更新ID主键字段与C#
- 27. 子查询与多个主键
- 28. 二进制与整数 - 作为主键?
- 29. NHibernate与字符串主键和关系
- 30. Netbeans 7.0,输入值与复合主键
当然,这不是。不过,这个问题可以使用更多的上下文。 – 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