mysql表设计关注

时间:2013-01-25 18:26:45

标签: mysql database database-design

我正在开发一个“电子课程”应用程序,您可以在其中找到管理员,教师,学生和课程。 一个学生可以有很多老师和很多课程,一个老师可以有很多学生和很多课程,一个课程可以有一个老师但很多学生。

我想这样做,所以管理员有自己的登录页面,教师/学生共享相同的内容。 (顺便说一句,这是最好的方法吗?)

我的问题是,我是否应该将所有与登录相关的信息(用户名,密码,电子邮件)放入“用户”表中,并为所有其他信息分配表(“教师”,“学生”)?

我应该在“用户”表中包含一个指向“学生”/“教师”表的主要ID的密钥吗?

所有这些最好的方法是什么?帮助我,mysql大师:)

注意:我见过很多与我有关的问题,但没有一个真的回答了我的问题。

1 个答案:

答案 0 :(得分:1)

我会比Abe Miessler建议更进一步,并在用户和角色之间创建一个参考表。

例如,教师作为学生注册并非不可能,因此需要在不同时间承担这两种角色。

USER_TABLE:
UserID PK
UserName
OtherUserData

ROLE_TABLE
RoleID PK
RoleName

USER_ROLES
UserID PK
RoleID PK

USER_ROLES has composite PK on UserTable.UserID AND RoleTable.RoleID