【问题标题】:database design and EF model with various User Roles具有各种用户角色的数据库设计和 EF 模型
【发布时间】:2012-07-21 00:25:14
【问题描述】:

我需要一些关于项目管理系统数据库设计的指导。我的问题主要是关于我应该如何围绕各种角色设计列或表的功能。

系统将在一个用户表中有多个用户,并在角色表中有以下角色 (公司管理员、项目经理、主管、候补主管、员工)

涉及的各种实体是用户、角色、UserRoleMapping、公司、项目

  • 一家公司有很多项目,并且有一个或多个公司管理员
  • 每个项目都有一个项目经理
  • 每个项目都有几名员工分配给它
  • 每个员工都有一个主管

我正在寻找可以很好地转换为实体框架模型的良好数据库设计。

这是我想到的方法,如果有任何反馈,我将不胜感激: 使用将提供用户、角色、UserRoleMapping 功能的默认 ASP.NET 成员资格。

然后,使用 Membership 中的基本用户表并创建特定于角色的表来存储各种用户:员工、公司管理员、主管

更新二:请看下面的新图片。考虑使用每个层次结构的表将各种经理(公司的公司管理员、项目的项目经理、员工的主管)存储在同一个表中。 您如何看待数据库设计,请建议这将如何用于实体模型?

另外,另外,您认为我连接项目、任务和员工的方式正确吗?

谢谢。

【问题讨论】:

  • 您将如何将EmployeeTask 限制为与Task 来自同一公司的Employees?与USerProjects相同?
  • 嗯,不确定。我可以将 CompanyID 也添加到这些表中,还是依靠模型或应用程序逻辑来不允许这样做?请指教。
  • 达米尔,请参阅我在上述问题中的更新。你怎么看这个?
  • 从您的模型中,您遵循什么逻辑来拥有两个独立的实体“用户”和“员工”?我怀疑“用户”不需要是公司的“员工”,例如,他们可以是内部管理员或审计员,而“用户”实体是代表特定实体的其他类型实体的父实体系统中的参与者类型。如果这是正确的,那么对于这种特殊情况,“角色”应该一般适用于“用户”,还是只适用于“员工”?你的意思是管理“员工”的角色还是“用户”的整体?

标签: entity-framework database-design entity-framework-4


【解决方案1】:

员工表可以有多大?作为管理员、主管或经理,所有这些都是员工(尽管他们可能有也可能没有主管)。一个员工可以分配到多个项目吗?可以为员工分配多个项目吗?就我而言,一次只能将一名员工分配给一个项目(或者在某些员工的情况下,没有)。这允许我修改一个基本的员工对象,如下所示: 企业标识 [员工信息] SupervisorID(可以为 null 并且是一个employee_id) AlternateSupervisorID(可以为null,是employee_id)|Project_ID(可以是null),是FK

只有其他对象是 PK 为 project_id 的项目。

【讨论】:

  • 格伦,我真的很喜欢你的方法。 Employee 表(现在重命名为 AllUsers 可能有 2000 条记录或更少)。员工可以分配到多个项目。我已经用修改后的设计更新了我的问题。对于模型类的外观,我将不胜感激。
  • 我问的原因是自引用 FK 在大型表上可能是一个性能问题,但即使是 20-30K 也不应该是一个问题。 UsersCompany.companyID 必须存在于 Company 中并且 UserProjects.ProjectID 必须存在于 Projects 中吗?你会想要记录下来。看起来这些对象的存在是为了改进对某些信息的检索。
  • 格伦。我刚刚更新了原始问题中的图表。你能复习一下吗?
  • 抱歉拖了我这么久。没有意识到您在谈论多家公司,但看起来它会起作用。不要认为您需要任务和员工之间的关系,但这种关系可能有助于可扩展性。不要认为我会挂起与用户相关的角色,因为该表与 DBMS 拥有的表的名称非常接近。
猜你喜欢
  • 2017-05-24
  • 1970-01-01
  • 1970-01-01
  • 2015-02-21
  • 2014-12-17
  • 1970-01-01
  • 1970-01-01
  • 2016-03-30
  • 2012-03-08
相关资源
最近更新 更多