我有一张桌子
Users (Id, Uid, Name, Sex...).
Id
是自动增量,Uid
是唯一的,由我的脚本生成(大写和小号的组合,2X4TY
)。
Uid
是公开的,我在URL中使用它,通过JSON等在客户端 - 服务器通信中使用它。我创建它也是为了隐藏内部Id
,否则会告诉人们有多少我有用户。
我发现自己一直在使用Uid
,甚至开始在其他表中使用它作为FK。这是一个很好的方法吗?我不应该通过JSON发送Uid
,然后找到内部/自动增量Id
并使用它吗?这是更多的工作,我很困惑。
也许我根本不需要任何自动增量Id
,但我在大学教过,所有表都有代理键更好。
答案 0 :(得分:1)
一般来说,我发现拥有自动递增的主键是一个好主意。
了解“您拥有多少用户”的问题无关紧要。没有理由在任何外部通信中包含主键。您可以使用自动递增的密钥,但可以使用uid作为URL和类似的结构。
但是,您应该使用主键与其他表的外键关系。主键具有显着的性能优势。你没有提到uid
到底是什么。但请记住,许多事情会随着时间的推移而改变例如,如果您使用电子邮件地址作为用户ID,则用户的电子邮件地址可能会更改。
如果您想要一个未自动递增的唯一键,请使用uuid()
功能。您可以使用通用标识符来屏蔽用户ID和您拥有的用户数。