比方说,我有一个名为Users
的表格,它代表了网站的注册用户。我还有一个AccountActivation
表,它将随机生成的字符串存储到新用户的电子邮件中,以验证该电子邮件。如果两个表具有“一对一”关系,它们是否应该与主键具有相同的列?
AccountActivation
表具有UserId
列,该列也恰好是Users
表的主键。它还有ActivationCode
列来存储代码。任一列都可以唯一标识AccountActivation
表中的一行。
所以,如果我选择激活码列作为主键,我最终会得到两个具有不同主键的一对一表。我认为在一对一的关系中,这两个表必须有相同的主键?
如果你选择'ActivationCode'作为PK,那么*为什么*你有两个*一对一的关系?唯一的关系就是'AccountActivation.UserId - > Users.UserId' - 或者你认为你突然有什么? 'Users'在'UserId'上有PK,'AccountActivation'在'ActivationCode'上有PK - 完全没有问题,没有理由不这样做。 –
最有可能的是,“UserId”和“ActivationCode”都是AccountActivation表的候选键。 – wildplasser
你怎么知道同一个随机生成的字符串不会生成一次以上,并且实际上是否需要你的应用程序执行此操作? –