【发布时间】:2011-05-14 17:34:17
【问题描述】:
仍在将网络应用程序作为学校项目工作,而且似乎还在不断扩大。
我必须为教师添加一个层,以便他们可以通过应用程序管理和指导学生。所以,我必须把老师和他们的学生联系起来。
我想知道最好的方法是什么。目前我为所有用户准备了一张桌子。该表的基本内容是:
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 (id 2) 老师将上表中的两个学生链接到他,我会做一个这样的表:
pk_id | teacherid | studentid
1 | 2 | 1
2 | 2 | 3
这样,我就知道 Tyranno 老师(id 2)有两个学生,分别是 userid 1 和 userid 3 的学生。
再说一次,我从来没有真正做过这样的事情,所以我想知道是否有人可以给我一些关于这个的见解,以及是否有可能以更好的方式做到这一点。
我正在使用 MySQL 用 PHP (CodeIgniter) 构建我的应用程序;如果这很重要。
非常感谢。
【问题讨论】:
-
你不会碰巧有一张老师的照片:
Tyranno Saurus你会吗? -
您的第二张桌子可以正常工作。但是,如果您曾经真正构建过这个数据库,我会建议学生和教表引用您的用户表。想象一下,如果您想存储特定于学生的信息,您能否想象一下您的用户表中包含仅适用于某些行的列的样子?
-
@Johan 保密,我很高兴。 @enamrik你是绝对正确的。我正在构建这个项目作为课程的一部分,我们基本上必须展示我们作为 web 开发人员可以做的一切。我快完成了,距离截止日期还有一周,所以我想我会扩展到教师部分。这不是一个“真正的”项目,所以我猜数据库现在会照原样做,但我意识到这在现实生活中是行不通的。感谢您指出这一点!
标签: mysql database database-design relational-database