【问题标题】:User Structure, Multiple User Types用户结构,多种用户类型
【发布时间】:2013-05-22 01:26:32
【问题描述】:

我目前正在为我们学校开发一个新的数据库/网络应用程序。我需要提供一些背景信息,以使我的问题更具相关性。

有许多不同的用户类型将访问此应用程序,每个用户类型都需要访问应用程序的不同部分,并且他们可能能够访问的每个“区域”具有不同的权限。

例如:

学生可以登录并访问那里的信息并更新他们的详细信息以及下载他们的报告副本(因此他们只能看到他们的信息)

老师可以登录并访问那里的信息以及他们教的所有学生

管理员可以登录并访问那里的信息以及他们管理的所有教师和学生

还有很多其他登录类型,但是对于这个问题,它们并不重要,因为从技术上讲,它们只是更多的用户,没有或需要自己的表来获取额外信息。

我在很大程度上决定了一个我很满意的结构,但是我一直在改变我认为最好的方式来完成以下工作。

我有一个用户表 (User_T),其中存储了所有相关的用户信息,(用户名、密码等)

但是,对于某些用户类型(EG、学生、员工、ETC),我也有单独的表,这是必要的,因为学生需要存储与员工不同的信息。 这就是我的问题所在,所有用户都有一些相同的基本字段(名字、姓氏、出生日期、性别等)。

我应该将这些存储在 User_T 表中吗?还是在单个表中?

如果我将它们全部存储在 User_T 表中,这使得应用程序更容易提取他们的信息并允许他们更新,例如在显示学生详细信息时,我需要引用 User_T 来获取学生姓名等

我目前的想法是,最好的选择是使用包含所有字段的单独表并将它们连接到视图 User_V 中,并带有一个指示数据来源的字段,以便在执行更新时它可以应用于相应的表。

想法?

【问题讨论】:

  • 一个人可以担任多个角色,例如行政助理可以上课吗?
  • 范围是否有其他限制。例如,教师的行为是否仅限于他们所在的部门或班级中的学生?
  • 是的,一个人可以担任多个角色,例如,您可以是教师、经理,甚至是工资管理人员,您不仅需要访问不同的页面,还需要页面中的不同访问权限(例如:工资管理人员可以添加工资记录,经理不能,但可以查看记录),范围也有限制,例如讲师可能在德国部门,但可能只能查看或他们教的学生,以及管理员可能只能看到那里的学生等

标签: asp.net sql-server web-applications data-structures


【解决方案1】:

使用 User_T 表作为一般的“人员”配置文件表,将其他表用于特定角色的唯一数据,听起来会有很好的分离。 User_T 将存储有关人员的更一般信息,并且此表中的 ID 可能是其他表中称为“person_id”的外键。

使用此表架构还取决于您一起查询此共享通用数据的频率。例如,如果您计划在不知道类型/角色(员工、学生等)的情况下搜索姓名或电子邮件,那么最好将 User_T 表中的这些一般人员信息与其他信息分开。如果您知道角色/类型,则可以选择相应的表进行搜索,然后根据需要简单地加入 User_T 数据。但是,如果您不以这种方式分隔表,那么您将只能使用 VIEW 或 UNION 来允许您使用单个查询仅搜索那些常规列,在我看来,优化起来要麻烦得多。

    User_T table: id, first_name, last_name, email, gender, birthdate, role, ...
    Students table: id, person_id, gpa, ...
    Staff table: id, person_id, staff_type, hire_date, ... 

【讨论】:

  • 数据会被大量查询,我们有超过 16,000 名学生和 900 名教师,因为接待员一直在查找学生记录(关于电话),我只能假设会有很多比登录用户更多的查询。然而,在报告撰写期间,所有 900 多名教师都在登录以撰写报告,并且他们的姓名等都可以在此过程中访问(在旧系统的两个表格中,这会引起很大的麻烦),负载从未真正对我们来说是个问题,一切都相当优化,我们有一个不错的后端,
  • 但我仍然想以正确的方式来做这件事,而不是简单的方式......只是不确定“正确”的方式是什么......如果您需要更多信息,请告诉我。
  • 另外一个问题是,当一个学生在那里完成学习时,他们是否留在用户表中?由于法律要求我们将详细信息保留 7 年,因此用户表可能会变得非常大。
猜你喜欢
  • 2018-09-17
  • 1970-01-01
  • 2017-12-16
  • 1970-01-01
  • 2013-02-20
  • 1970-01-01
  • 1970-01-01
  • 2023-01-27
  • 2018-07-02
相关资源
最近更新 更多