2012-01-11 169 views
2

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

+0

这些收据是什么? – simchona 2012-01-11 06:13:14

+2

用户*是通过他的收据号码识别的?如在:他会保留这个号码,直到时间结束,并且这个号码不会被用于识别这个用户以外的任何目的吗?如果是,请继续。如果不是,请使用满足这些要求的单独用户标识。 – Tomalak 2012-01-11 06:15:08

+0

就像用户填写信息时一样,唯一的收据号码被发送到用户的电子邮件。并使用该收据号码,他可以查看他的订单状态。 – user1142462 2012-01-11 06:17:37

回答

0

如果您的收据没有。够复杂 - 使用数字和字符,或20个数字内置 - 更好地使用替代用户ID

如果收到任何可以是简单的整数,也可以从数据库生成 - 更好地利用用户名和它的值赋给ReceiptNo

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

+0

奥列格狗,感谢您的快速回复。我认为使用自动递增的用户标识是更好的主意,因为收据编号将是字母数字和8个字符。 – user1142462 2012-01-11 06:29:42

1

如果您的收据号码中只包含整数话,可能可以使您的收据,没有现场为自动增加的编号,

+0

收据编号将为字母数字,可能为8个字符。 – user1142462 2012-01-11 06:20:21

+0

所以我认为我应该坚持用户ID作为主键权利? – user1142462 2012-01-11 06:22:37

+0

是的,在这种情况下, – mack 2012-01-11 06:55:14

2

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

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

+0

也许补充说,通常,替代品在熟悉度标准上得分非常接近于零,并且非替代品MIGHT在稳定性标准上的得分很差。 – 2012-01-11 15:30:29