与主键混淆

时间:2012-01-11 06:08:08

标签: sql database database-design primary-key

我是设计数据库的新手。也许这是一个愚蠢的问题所以请原谅我。所以我正在为用户设计数据库。用户填写注册信息后,他会获得唯一的收据编号。所以我的问题是收据没有。是唯一的,我可以将它用作Users表中的主键,还是应该坚持使用标准方法将userID分配给表中的每一行并使用userID作为主键?

3 个答案:

答案 0 :(得分:2)

一个表可以有多个键。如果收据编号是唯一的,并且您希望DBMS将该属性的关键依赖关系强制实施为数据完整性约束,那么您应该将其设为关键字(由PRIMARY KEY或UNIQUE约束或您的DBMS的任何机制实现唯一性提供)。

将任何一个键指定为“主键”并不是特别重要 - 或者至少它只是你想要的那么重要。真正重要的是你选择的全套钥匙。任何密钥的要求都是唯一性和不可简化性。选择密钥的合理标准还包括:熟悉,简单和稳定

答案 1 :(得分:1)

如果您的收据编号只包含整数,那么您可以将收据 - 无字段作为自动递增编号,

答案 2 :(得分:0)

如果您的收据没有。足够复杂 - 使用数字和字符构建,或长度为20位 - 更好地使用代理UserId

如果收到否可以是简单整数并且可以从DB生成 - 更好地使用UserId并将其值分配给ReceiptNo

如果ReceiptNo是简单整数,并且它标识用户 AND 唯一的用户 - 将其用作PKey。

相关问题