比方說,我有一個名爲Users
的表格,它代表了網站的註冊用戶。我還有一個AccountActivation
表,它將隨機生成的字符串存儲到新用戶的電子郵件中,以驗證該電子郵件。如果兩個表具有「一對一」關係,它們是否應該與主鍵具有相同的列?
AccountActivation
表具有UserId
列,該列也恰好是Users
表的主鍵。它還有ActivationCode
列來存儲代碼。任一列都可以唯一標識AccountActivation
表中的一行。
所以,如果我選擇激活碼列作爲主鍵,我最終會得到兩個具有不同主鍵的一對一表。我認爲在一對一的關係中,這兩個表必須有相同的主鍵?
如果你選擇'ActivationCode'作爲PK,那麼*爲什麼*你有兩個*一對一的關係?唯一的關係就是'AccountActivation.UserId - > Users.UserId' - 或者你認爲你突然有什麼? 'Users'在'UserId'上有PK,'AccountActivation'在'ActivationCode'上有PK - 完全沒有問題,沒有理由不這樣做。 –
最有可能的是,「UserId」和「ActivationCode」都是AccountActivation表的候選鍵。 – wildplasser
你怎麼知道同一個隨機生成的字符串不會生成一次以上,並且實際上是否需要你的應用程序執行此操作? –