教师学生数据库设计

时间:2011-10-26 17:28:38

标签: php mysql sql database

假设你有学生

你有老师

学生使用与教师不同的界面登录网站

学生可以在网站上执行以下操作 - 查找成绩 - 电子邮件教师

教师可以在网站上执行以下操作 - 查找学生 - 输入成绩

您如何设计数据库表以允许教师和学生登录?这个问题让我感到困惑,因为我正在考虑做以下事情

  • 有老师桌
  • 有学生表

两个单独的表

所以

创建表老师 (     name varchar(255),     email varchar(100),     密码varchar(100) )

创建表学生 (     name varchar(255),     email varchar(100),     密码varchar(100) )

这是通常的做法吗?当您有两个不同的实体登录到两个不同的登录界面时?

---编辑---

如果这两个实体有不同的字段呢?在这种情况下,您是否仍会创建一个带有“角色”的Users表。

例如,如果您有以下内容该怎么办:

(请注意老师和学生有几个不同的字段。你还会创建一个表来放两个吗?)

创建表老师 (     name varchar(255),     email varchar(100),     密码varchar(100)     num_of_students int,

创建表学生 (     name varchar(255),     email varchar(100),     password varchar(100),     gpa小数(10,2) )

5 个答案:

答案 0 :(得分:6)

我会考虑只创建一个表并添加TypeID,其中TypeID会将学生或教师的类型分类。

看一下这两个表的设计,它们完全相同,这应该是一个信号,告诉你可能是过度的事情。

通过将其保存在2个单独的表中,可以为您提供更多UI工作,并为输入数据的人员提供更多管理工作。

通过将其组合到一个表中并引入分类或类型字段,您可以消除所有额外的工作。

CREATE TABLE Users ( ID int, Type int, name varchar(255), email varchar(100))

我也不会将密码存储为纯文本,因为您可能会在password varchar(100)暗示。在这种情况下,Type可以是int或甚至一点数据类型,如果只有两种类型的人员将是学生和教师。该字段可以是IsTeacher,其中1是教师,0是学生。但在大多数情况下,您最终意识到您需要不同类型的用户,因此需要int数据类型。

答案 1 :(得分:2)

我会有一个ID,电子邮件,密码的登录表,但是你可以登录TYPE of login ...管理员(网站范围),老师,学生等等。

然后,从登录中,您将“type”作为标记来显示/隐藏网站中的元素,或根据需要提供其他重定向。

答案 2 :(得分:1)

此处的大多数其他答案中的设计缺少必须为用户分配两个“类型”或更多。事实上,关于与角色相关联的用户的问题非常明显,这些角色本身与权利相关联。因此,基于角色的安全性的典型表格布局在我看来是最好的。

实体和关系

  • 用户: John Q. Public ,...
  • 角色:教师学生,...
  • 右:查找成绩输入成绩查找学生,...

你们之间的N:M关系:

  • 用户和LT; - >作用
  • 角色< - >右(可选)
  • 用户< - >右(可选)

也许检查角色就足够了,你可以放弃任何有权利的东西。

解决方案

只需要一张User表。 (表:User

教师学生Roles,用户可以与之关联。 (表格:RoleUser_Role

您在每个应用程序中通常拥有的另一个Role是Role Admin ,例如可以删除其他用户,重置密码,创建新用户......

如果您拥有复杂的权利,那么您也可以添加RightRight可以与User以及Role相关联。

答案 3 :(得分:1)

我会制作一个表格person并为其添加字段type。例如,类型可以是STUDENT或TEACHER。

答案 4 :(得分:1)

我要做的是有一个叫做'users'的表,然后是一个名为'role'的列,我会在每个界面创建一个脚本,只允许学生登录学生界面和教师在教师界面。

说实话,我实际上只有一个基于权限的用户界面,但如果我使用2个接口,那就是我要做的。

我希望这会对你有所帮助。