【发布时间】:2013-10-27 06:02:04
【问题描述】:
我有两个表用户和商店
Users 表主键是地址和电话号码的组合(用户通过网页注册,我不希望同一个用户注册两次),userId 列是序列但不是主键
在 Stores 表中,ownerID 列是用户表中的 userID - 但由于它不是主键,因此无法设置引用(尽管它是串行的)
我怎样才能达到这个结果?
【问题讨论】:
-
我不确定您要达到什么目的,但是将地址和电话号码组合为主键不是一个好主意!
-
如果您的表中有一个 UserId,那么我建议您将其作为主键,因为这样会更好!
-
@RahulTripathi 将密钥放在串行列上不会验证用户的重复,将其放在计数的列上将消除插入时的重复
-
我可能没有正确理解它,但我的意思是说您可以创建 UserId 作为主键。如果 UserId 是主键,那么这将是唯一的,并且还可以帮助您删除重复项。(虽然这种情况很少见,但如果两个用户共享相同的地址和电话号码怎么办?)
-
地址和电话号码是一个糟糕的 PK,因为它们通常可以识别几个人(考虑一个有固定电话的家庭或有几个员工的企业)。即使您在地址和电话号码上添加 UNIQUE 约束,也会遇到问题。
标签: sql postgresql foreign-key-relationship