2

我目前正在做一个项目,您可以在其中保存讲师和学生的详细信息。我不确定我应该使用一张桌子User还是两张桌子LecturerStudent.

当您以讲师身份登录时,您拥有作为项目组管理页面的特殊权限,在加载组页面时,学生将没有这些权限。在Usertbl中会有一个 status注册栏,您可以在该页面选择成为学生或讲师并输入特殊的讲师代码。我正在将 PHP 与 mySql 一起使用。

总之,我应该User为学生和讲师使用 1 个表格,还是有 2 个单独StudentLecturer表格。

附加信息:1 门课程可以有很多讲师和学生,但 1 名学生有 1 门课程,而讲师有很多课程。

4

2 回答 2

7

好问题!

它可能看起来过于复杂,但如果你想扩展这个系统,我强烈建议对它进行更“标准化”的建模。通过意识到讲师和学生都是同一个实体(人/用户),您已经走上了正确的道路。诀窍是你应该为“角色”建模,然后也为用户的角色建模。这为模型的这一小部分制作了 3 个表格。

USERS               USER_ROLES           ROLES
+------------+      +----------+         +--------+
| id         | <--> | user_id  |     /-->| id     |
| login_name |      | role_id  | <--/    | name   |
| etc        |      +----------+         +--------+
+------------+

users
======
id
login_name
etc

roles
=======
id
name

user_roles
===========
user_id
role_id
since

样本数据

USERS
+----+------------+
| id | login_name |
+----+------------+
| 1  | Chris      |
+----+------------+
| 2  | Cherri     |
+----+------------+


ROLES
+----+------------+
| id | name       |
+----+------------+
| 1  | Lecturer   |
+----+------------+
| 2  | Student    |
+----+------------+

USER_ROLES
+---------+---------+
| user_id | role_id |
+---------+---------+
|    1    |     1   | <-- Chris is a Lecturer
+---------+---------+
|    2    |     2   | <-- Cherri is a student
+---------+---------+
|    2    |     1   | <-- Cherri is also a lecturer
+---------+---------+
于 2014-11-17T16:07:31.440 回答
-2

使用带有一个字段的单个表,该字段指示它是学生还是讲师。它可以是一个简单的整数列名称“角色”,其中角色 = 0 表示学生,角色 = 1 表示讲师。

这种方法简单、实施快、符合要求。

于 2014-11-17T16:17:52.520 回答