你好,我的問題是,如果在mySQL DB中爲那些沒有通過電子郵件驗證其帳戶的用戶有一個temporary_users表更好。如果用戶被驗證,則他的數據被複制到用戶表中。我應該爲驗證目的創建一個temporary_users表嗎?
否則,所有用戶,無論是否驗證,都將被保存在用戶表中,其中將有一個隨機數的新列。當用戶驗證後,該值將被刪除,這意味着他可以登錄。
在未來,我將創建一個與您建議的結構相同的忘記密碼功能。
什麼是最好的方法?
你好,我的問題是,如果在mySQL DB中爲那些沒有通過電子郵件驗證其帳戶的用戶有一個temporary_users表更好。如果用戶被驗證,則他的數據被複制到用戶表中。我應該爲驗證目的創建一個temporary_users表嗎?
否則,所有用戶,無論是否驗證,都將被保存在用戶表中,其中將有一個隨機數的新列。當用戶驗證後,該值將被刪除,這意味着他可以登錄。
在未來,我將創建一個與您建議的結構相同的忘記密碼功能。
什麼是最好的方法?
將所有用戶存儲在單個表中,並將驗證/未驗證狀態存儲在每條記錄中。無論您添加一個is_validated
列,還是僅存儲一個唯一標記並將其設置爲null
以供驗證的用戶完全由您決定。
爲了添加單列數據而複製整個表格並不是一個很好的做法,而且它很笨拙;您希望能夠根據他們的登錄憑據找到用戶,並告訴他們他們的帳戶尚未激活。要用兩個表執行此操作需要兩個查詢。
最好在主表中使用一列作爲「驗證」和「未驗證」的標誌。
當用戶註冊,插入自己的信息到數據庫和「驗證」 colunmn設置爲像0
一些代表性的「未驗證」一旦他們確認,更新您的驗證列該用戶帳戶代表「驗證」,如1代表。
這是浪費資源和額外的數據庫查詢,爲臨時用戶創建一個全新的表,如果只是有一個代表用戶狀態的列,就像「驗證」一樣。
您可以更進一步,併爲每個用戶提供一個「狀態」欄。創建表示的存在的用戶狀態值的鍵,例如:
0 - 創建,未驗證 1 - 恪 2 - 非活動/禁用帳戶 3 - 禁止 等。
這都可以通過使用一列來控制用戶的狀態。當你可以在記錄本身上使用一列來控制任意多的存在狀態時,對於某種存在狀態而言,有一個獨立的表是絕對沒有必要的。
我已經閱讀了一些教程/意見通過谷歌,他們使用不同的表。你能給我一個這樣的理由嗎? (我甚至不能想到爲什麼我應該創建一個新表的一個原因)更新:我的答案證實了我的想法。謝謝 – EnexoOnoma
你可以給出一個單一的原因*用於創建第二個表格嗎?爲什麼教程建議你這樣做?我可以客觀地說,從性能的角度來看,我的方式不那麼複雜和更好(查詢次數更少),同時不會更安全。 – meagar
我不知道,這就是我問這個問題的原因。對我來說這是一個「愚蠢」的想法,但我想我在這裏錯過了什麼? – EnexoOnoma