数据库设计 - 将学生与教师联系起来

时间:2011-05-14 17:34:17

标签: mysql database database-design relational-database

作为一个学校项目仍在开发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)中构建我的应用程序;如果这很重要。

非常感谢。

1 个答案:

答案 0 :(得分:1)

如果学生有零或一位教师指导他们,那么我建议在学生表中添加一个CoachID列,该列是该特定教师的外键。你建议的中间表没有做任何事情来简化这种简单的关系,它实际上使它更复杂一点。

如果你将学生与课程联系起来(每个班级有多个学生,每个学生需要多个班级),那么必须使用中间多对多映射表。