dra*_*apu 2 mysql database database-design single-table-inheritance class-table-inheritance
我目前正在开展一个项目,您可以在其中保存讲师和学生的详细信息.我不知道我是否应该使用一个表User或两个表Lecturer和Student.
当您作为讲师登录时,您具有特殊权限作为项目的组管理页面,在加载学生不具备的组页面上.在Usertbl中将有一个列
status在哪里注册,您可以选择成为学生或讲师的页面并输入特殊的讲师代码.我正在使用PHP和mySql.
在摘要中,我应该User为学生和讲师使用1个表,还是有2个单独的表Student和Lecturer表.
附加信息:1门课程可以有很多讲师和学生,但是1名学生将有1门课程,其中讲师有很多课程.
好问题!
它可能看起来过于复杂,但是如果你想扩展这个系统,我强烈建议将它建模一点"标准化".通过认识到讲师和学生是同一个实体(人/用户),你已经走在正确的轨道上.诀窍是你应该建模"角色",然后模拟用户的角色.这使得模型的这一小部分共有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
Run Code Online (Sandbox Code Playgroud)
样本数据
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
+---------+---------+
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
366 次 |
| 最近记录: |