作为一个学校项目仍在开发Web应用程序,它似乎在不断扩展。
我必须为教师添加一层,以便他们可以通过应用程序管理和指导学生。所以,我必须将老师与他们的学生联系起来。
我想知道最好的办法是什么。我现在有一张桌子供所有用户使用。这个表的基本内容是:
id | email | firstname | lastname | role
1 | s@s.s | dromiceio | mimus | 1
2 | d@d.d | tyranno | saurus | 2
3 | a@a.a | utah | raptor | 1
角色是我分配给他们的号码,以赋予他们一定的权限。 1 =学生,2 =老师,3 =管理员。
假设一名学生有一名教师但一名教师有很多学生,那么设计数据库表的最佳方法是什么?
我正在考虑创建一个新表,并将学生/教师ID放入其中:
例如,如果老师Tyranno Saurus(身份2)将上表中的两名学生与他联系起来,我会做一个这样的表:
pk_id | teacherid | studentid
1 | 2 | 1
2 | 2 | 3
这样,我就知道Tyranno老师(id 2)有两个学生,即有用户ID 1和用户ID 3的学生。
然后,我再也没有真正做过这样的事情,所以我想知道是否有人能给我一些有关这方面的见解,以及是否有可能以更好的方式做到这一点。
我正在使用MySQL在PHP(CodeIgniter)中构建我的应用程序;如果这很重要。
非常感谢。
答案 0 :(得分:1)
如果学生有零或一位教师指导他们,那么我建议在学生表中添加一个CoachID列,该列是该特定教师的外键。你建议的中间表没有做任何事情来简化这种简单的关系,它实际上使它更复杂一点。
如果你将学生与课程联系起来(每个班级有多个学生,每个学生需要多个班级),那么必须使用中间多对多映射表。