数据库依赖于密钥来存储,排序和比较或创建记录之间的关系。如果您已经在数据库中使用了一段时间,那么您可能已经听说过不同类型的密钥:主键,候选键和外键。当您创建新数据库表时,您被要求选择一个主键,该主键将唯一标识该表中存储的每个记录。
为什么主键是重要的
选择主键是您在设计新数据库时最重要的决策之一。最重要的约束是您必须确保所选键是唯一的。如果它有可能两个记录 - 过去,现在或未来 - 可能共享一个属性的相同值,那么它对于主键来说是一个糟糕的选择。
主键的另一个重要方面是它在关系数据库中链接到它的其他表的使用。在这方面,主键的作用类似于指针的目标。由于存在这些相互依赖关系,因此创建记录时必须存在主键,并且它永远不会更改。
主键选择不当
有些人可能认为主键的明显选择可能是一个糟糕的选择。这里有一些例子:
- 邮政编码 不要为城镇表制作好的主键。如果你正在制作一个简单的城市查找表,邮政编码似乎是一个逻辑主键。但是,经过进一步调查,您可能会发现不止一个城镇共享邮政编码。例如,新泽西州的Neptune,Neptune City,Tinton Falls和Wall Township都拥有07753邮政编码。
- 社会安全号码 出于多种原因,不要制作好的主键。大多数人认为他们的SSN是私有的,并且不希望数据库用户清楚地看到它。有些人不喜欢SSN - 从未收到过社会安全卡的外国人或移民。 SSN也可以在个人死亡后重复使用。当社会安全管理局在欺诈或身份盗用的情况下发布新号码时,个人可能在一生中拥有一个以上的SSN。
- 电子邮件地址 对于主键来说也是一个糟糕的选择。虽然它们是独一无二的,但它们可以随着时间的推此外,并非所有人都有电子邮件地址。
选择有效的主键
那么,什么是一个好的主键?在大多数情况下,请转到数据库系统以获取支持。
数据库设计的最佳实践是使用内部生成的主键。您的数据库管理系统通常可以生成一个在数据库系统之外没有任何意义的唯一标识符。例如,您可以使用Microsoft Access自动编号数据类型来创建名为RecordID的字段。每次创建记录时,AutoNumber数据类型会自动递增字段。虽然数字本身毫无意义,但它提供了一种在查询中引用单个记录的可靠方法。
一个好的主键通常很短,使用数字,并避免使用特殊字符或大写和小写字符的混合,以便快速查找和比较数据库。