2014-09-12 81 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

对不起!为什么您需要三张表来存储用户详细信息和验证码,对于他们两个都使用单一表格。

你只需要使用只有你设计的验证表是正确的。