2014-09-12 82 views
0

我正計劃爲我的學校構建一個小型社交網絡樣式項目,並且在創建我的數據庫設計時遇到了一些麻煩。例如:訪問者可以創建一個帳戶,如果他們在我們學校註冊。他們需要給他們的學生號碼和他們的名字,姓氏,中間名稱和課程等。應用程序應該生成一個唯一的驗證碼。該代碼將發送到學生電子郵件地址。當學生準備啓動他們的帳戶時,您應該輸入他們的學號和應用程序生成的驗證碼,如果驗證碼和學生號碼在我們的數據庫中匹配,他們將自動導向到他們可以輸入他們的頁面用戶名和密碼。爲授權用戶創建賬戶的數據庫設計

表驗證

ID,StudentNumber,Code,FirstName,LastName,MiddleName,Gender,Course. 

用戶表

ID,StudentNumber,UserName,Password,E-mail. 

用戶配置文件表 ID,StudentNumber,代碼,名字,姓氏,中間名,性別,場。

在我上面的設計任何建議? 希望你能幫助我解決我的問題。上帝保佑!

回答

0

驗證表是obsolote

當用戶註冊時。他被輸入驗證表。如果然後點擊電子郵件,您將擁有這個龐大的代碼,可將字段從驗證複製到用戶+個人資料。

將字段添加到配置文件中,意味着您必須對Verification執行相同操作。

只需在用戶表中添加「已驗證」字段即可。然後更改您的查詢:

SELECT * FROM user WHERE verified = true; 

或者您可以選擇狀態字段。例如,用戶可以被驗證,但因爲受到拖延而被阻止。

學生號碼是主鍵

然後,爲什麼有en ID列?該studentnumber是獨一無二......這簡直是把它作爲主鍵,擺脫ID左右浮動

COLUMNNAMES

不要使用 - 在列名或首都。不要。

DB設計

就在這時,有一個用戶有一個配置文件和配置文件有一個課程。

所以如果一個用戶註冊到2個課程,他將有2個配置文件?祝你好運,保持這些配置文件同步。

代碼不是個人資料

我覺得跟列代碼你指的是驗證碼?如果是這樣,那就叫它verification_code

爲什麼它是配置文件的一部分?它應該是用戶的一部分。

無神論者!

0

爲什麼要使用這麼多表?只有一個用戶表就足夠了。

用戶

ID,StudentNumber,用戶名,密碼,電子郵件,名字,姓氏,中間名,性別,當然,VerificationCode,IsVerified

這樣,您就可以容納所有的信息你需要。 然後,當您需要驗證時,只需查詢用戶名和驗證碼,然後將其與所提供的用戶進行比較即可。列IsVerified應該是int(1),可以將默認值設置爲0.如果用戶在驗證中成功,則將其更改爲1.

0

對不起!爲什麼您需要三張表來存儲用戶詳細信息和驗證碼,對於他們兩個都使用單一表格。

你只需要使用只有你設計的驗證表是正確的。