我打算为我的学校建立一个小型的社交网络风格项目,我在创建数据库设计时遇到了一些麻烦。例如:如果在我们学校注册,访客可以创建一个帐户。他们需要提供学生编号及其名字,姓氏,中间名和课程等。应用程序应生成唯一的验证码。代码将在学生电子邮件地址中发送。当学生准备好激活他们的帐户时,您应该输入他们的学生编号和应用程序生成的验证码,如果验证码和学生编号在我们的数据库中匹配,他们将自动转到他们可以输入他们的页面用户名和密码。
验证表
ID,StudentNumber,Code,FirstName,LastName,MiddleName,Gender,Course.
用户表
ID,StudentNumber,UserName,Password,E-mail.
用户个人资料表 ID,StudentNumber,代码,名字,姓氏,中间名,性别,场。
我的设计中有任何建议吗? 希望你能解决我的问题。上帝保佑!
答案 0 :(得分:0)
当用户注册时。他进入了验证表。如果然后点击该电子邮件,您将拥有这个庞大的代码,可以将字段从验证复制到用户+个人资料。
在配置文件中添加字段意味着您必须对验证执行相同的操作。
只需添加一个字段'已验证'在用户表中。然后更改您的查询:
SELECT * FROM user WHERE verified = true;
或者您可以选择状态字段。例如,用户可以进行验证,但由于拖钓而被阻止。
然后,为什么有ID列? studentnumber是唯一的...只需将其作为主键使用,并摆脱浮动的ID
请勿在列名中使用 - 或大写字母。只是不要。
此时,有一个用户有个人资料,个人资料有一个课程。
因此,如果用户注册了2门课程,他将拥有2个个人资料?祝你们保持这些档案同步。
我认为使用列代码表示验证码?如果是,请将其命名为verification_code
为什么它是个人档案的一部分?它应该是用户的一部分。
Atheistbless!
答案 1 :(得分:0)
为什么要使用这么多表?只需一个用户表即可。
用户
ID,StudentNumber,UserName,Password,E-mail,FirstName,LastName,MiddleName,Gender,Course,VerificationCode,IsVerified
这样您就可以保存所需的所有信息。
然后,当您需要验证时,只需查询用户名和验证码,然后将其与提供的用户进行比较。列IsVerified
应为int(1),您可以将默认值设置为0.如果用户在验证中成功,则将其更改为1.
答案 2 :(得分:0)
对不起!为什么需要三个表来存储用户详细信息和验证码,为这两个表使用单个表。
您只需使用您设计的验证表即可。