主键与RRN

时间:2010-03-23 05:30:09

标签: file records

主键和RRN之间有什么区别?

2 个答案:

答案 0 :(得分:2)

主键唯一且明确地标识给定记录(在数据库表/视图中)或给定行(在文本文件中)。虽然主键可以方便地基于单个字段(单个“列”),但主节点也可以基于多个字段/列。

RRN 是首字母缩略词,可以理解为“ 记录行号 ”或“ 相对行号 “。记录行号通常被理解为一个数字,通常(但不一定)通过简单增量(基于先前分配的RRN的值)分配,该数字被“添加”到特定记录类型的其他字段/列。 。许多DBMS提供了支持这种“自动递增”或更常用自动分配的RRN的功能。

如上定义,RRN可以用作主键。

与基于记录的[一个或多个]属性(字段或列)值的主键相比,具有[语义无效] RRN有许多优点和缺点。这可能在其他SO问题中讨论过;以下是一些最常见的论点:

  • 可以修改主键,RRN是“不可变的” 例如,如果主键是社会安全号码(SSN),则可能在某个时间更新记录,因为SSN最初输入时出现拼写错误。当/如果发生这种情况时,还需要更新使用此SSN引用更新记录的任何相关记录。如果这些相关记录使用[无意义] RRN,它们将不受SSN值的可能变化的影响。
  • 当没有基于单列的“自然”主键时,使用RRN可能更方便
  • RRN通常较短
  • 通过非RRN主键引用原始记录的相关表和列表,以某种方式复制基础信息。这既可以是优点也可以是缺点:可以知道底层字段值,而无需在原始表中查找:如果您希望相关表包含此类信息,那就太好了,如果不这样,那就很糟糕(例如:社交安全号码可视为敏感等。)
  • RRN保证是唯一的(缺少RRN生成逻辑的错误),基于属性值的密钥倾向于变得非独特(“oops!我们认为我们可以使用电话号码作为房子ID; dang!,电话公司开始重复使用号码......“)

答案 1 :(得分:0)

主键标识表中的行。

RRN(我猜你的意思是相对记录号)也在一个子集中按位置标识(即查询结果)。

如果你需要推断一组与主键无关的记录的顺序,我发现它很有用。