0

我在 Asp.Net MVC 中有一个时间表应用程序,但问题应该是一般数据库设计:

我有许多相关的表,客户、项目、任务、员工、时间段。现在,我希望能够将任务与员工相关联作为“资源”。对于每个资源,我希望能够获得有关为特定任务分配给员工的工作百分比的信息。但我无法绕过它。据我所知,它不能简单地是 Task 和 Employee 之间的多对多关系,因为那我应该把百分比字段放在哪里?如果我把它放在员工身上,它与特定任务有什么关系?

看起来这将是一个简单的问题,但我无法弄清楚,我应该提到我的数据库技能相当初级。所以任何帮助将不胜感激!

编辑:好的,你们中的一些人回答了一些关于使用 Employee_Id 和 Task_Id 和 WorkPercentage 为“资源”制作单独表的变体。但是我应该在每次添加任务时手动更新 Employee_Id 和 Task_Id 吗?因为我首先将这些答案理解为提示我应该在 Employee 和 Task 之间添加多对多关系,然后在联结表 (EmployeeTask) 中添加 WorkPercentage 字段。我试过了,但是在尝试添加员工时我立即遇到了问题,这需要一个 EmployeeTasks 列表并抱怨不可为空的字段不能有空值。但那不是我应该这样做的吗?而是使用每个字段值手动更新的单独表......?

如果可能,请准确解释如何处理你们提出的解决方案(即任何关系)。谢谢!

4

3 回答 3

0

也许是一个名为“Resources”的新表,其中包含 id_employee、id_task 和 work_percentage 列?

对于要建模的每个事物,您可以使用多个表。

于 2011-02-08T11:08:43.563 回答
0

您的意思是“跟踪有多少这项任务已分配给员工 A”?

如果是这样,您可以创建一个包含 task_id、employee_id 和工作百分比的新表。

最简洁的处理方法是:每次创建新任务时,添加一条 100% 分配给任何人的记录(例如员工 ID 为 0)。然后,每当有人被分配时,为该员工创建一个新记录以及他们刚刚获得的百分比,并更新原始记录以取消该金额。

这样,您还可以轻松跟踪任何资源不足的任务。

于 2011-02-08T11:15:43.300 回答
0

您可能需要一个表,例如 ProjectResources,仅记录哪些员工是每个项目的资源。然后可能是一个 ProjectTasks 表,您可以在其中记录项目密钥、任务密钥、资源密钥以及您需要的任何其他详细信息。

就个人而言,我发现按时间而不是按百分比来估计和跟踪任务更有用。最后,我想知道“任务 'n' 已完成,花了 3 个小时”,而不仅仅是“任务 'n' 已完成”。

于 2011-02-08T11:37:23.897 回答