【发布时间】:2014-11-17 16:02:52
【问题描述】:
我目前正在开展一个项目,您可以在其中保存讲师和学生的详细信息。
我不确定我应该使用一张桌子User 还是两张桌子Lecturer 和Student。
当您以讲师身份登录时,您拥有作为项目组管理页面的特殊权限,在加载组页面时,学生将没有这些权限。在Usertbl 中会有一列
status在哪里注册,可以选择成为学生或讲师的页面并输入一个特殊的
讲师代码。我正在将 PHP 与 mySql 一起使用。
总之,我应该为学生和讲师使用 1 个User 表,还是使用 2 个单独的 Student 和 Lecturer 表。
附加信息:1 门课程可以有很多讲师和学生,但 1 名学生可以有 1 门课程,而讲师有很多课程。
【问题讨论】:
-
这是基于您的数据。如果所有用户都有相同的主数据,并且只有他们的类型在变化,那么使用一个带有标志字段的表。
-
是的,非常依赖数据。一个讲师可以成为另一个讲师班级的学生吗?如果是这样,如果您使用两个不同的表,您将把一个人保存为两个实体,这通常是一个坏主意。我当然会倾向于一张桌子,但这取决于你的模型和你的现实的细节。 @ctrahey 建议将“角色”的概念添加到单个用户表中,这是一个非常传统且经过充分测试的问题解决方案。
-
Student 表中的某些信息是不同的,因为 Student 的 CourseID 是外国人,所以我假设我需要将 Student 和 Lecturer 放在不同的表中。一个学生有很多讲师,一个讲师有很多学生,我目前正在使用数据库中的链接器表来连接两者。我曾假设我可以将两者都放在一个 User 表中。
-
我在一所大学任教,当时我是学生。其中一位讲师作为学生坐在我的课堂上。
-
我在您的问题中添加了两个标签,即单表继承和类表继承。这两种设计模式可能是回答您自己问题的关键。
标签: mysql database database-design single-table-inheritance class-table-inheritance