4

我们正在为非政府组织( N )开发一个平台,通过个人志愿者( V)或公司志愿者(C)完成他们的工作

非政府组织

  1. 非政府组织可以注册帐户并创建个人资料。
  2. 它创建活动(需要志愿者帮助的工作),个人志愿者或公司(在系统中注册为志愿者的员工的子集)可以申请这些活动。
  3. 非政府组织可以检查申请人的个人资料和以前的工作经历并接受申请。接受后,他们成为活动的成员。
  4. 在这里,虽然他们在定期工作后表示 2 周,但他们需要输入他们为该特定活动贡献的小时数。
  5. 非政府组织必须验证这个时间,以便它可以反映在志愿者档案中作为信用

公司

  1. 公司注册个人资料。
  2. 它以特定格式的 CSV 文件上传其所有员工的列表,以针对自己添加志愿者或发送邀请链接以要求其员工注册。如果系统中已经存在员工,我们会发送一封电子邮件,要求他验证公司的声明
  3. 公司可以搜索特定任务并通过选择其所有员工或其子集来应用它。
  4. 在验证完成工作的时间时,可以通过两种方式完成。1公司可以集中说 V1 V2 V3 已完成 2hrs 3hrs 和 2hrs 并提交给 NGO 进行验证,或者允许其每个员工手动处理并允许他们提交。

我在哪里需要帮助?

我创建了非政府组织和单一志愿者的关系。我对如何使用相同的表格但允许像公司这样的新实体进入非政府组织和志愿者之间并管理时间验证和活动管理感到困惑。

验证时间非常重要,因为它将用于显示非政府组织、公司以及志愿者(个人工作以及通过公司为某项事业工作)的社会公平平衡

我为 NGO 和志愿者创建了下面的 ER 图,需要创建其中的公司部分。

在此处输入图像描述 链接:http: //i.stack.imgur.com/OMY21.png

4

1 回答 1

3

我不确定你是否需要改变你的架构,甚至根本不需要。你的模式需要一个应用程序来让它做任何事情——你不能在这里实现所有的逻辑——它的一部分/大部分将在你的应用程序中。

据我了解,您的规范说所有实际的志愿者工作都是由个人执行的,其中一些可能与公司有关,而另一些则没有。您的架构已经捕获了这一点。

这几乎就是你所需要的,我想。当你说:

在验证完成工作的时间时,可以通过两种方式完成。1 公司可以集中说 V1 V2 V3 已完成 2hrs 3hrs 和 2hrs 并提交给 NGO 进行验证,或者允许其每个员工手动处理并允许他们提交。

这已经涵盖了——每个人输入他们自己的工作记录,或者应用程序允许公司为他们做这件事——然后非政府组织以同样的方式验证这些记录,不管是谁输入的。

我创建了非政府组织和单一志愿者的关系。我对如何使用相同的表格但允许像公司这样的新实体进入非政府组织和志愿者之间并管理时间验证和活动管理感到困惑。

让我们通过一个工作示例来说明这两个用例,以确保我们已经涵盖了所有内容:

工作示例

个人,无公司

volunteers一个人注册,在表中创建一行。ngo_activity_applications他们注册了一项活动,在表中创建了一行。

非政府组织批准它们,在表格中创建一行ngo_activity_members- 并删除ngo_activity_applications表格中的行,或者更改它status- 规范。不清楚。

个人做一些工作并在应用程序中记录时间,在ngo_activity_time_validations表中创建行。

非政府组织以某种方式验证完成的工作,然后告诉应用程序。这可能会更改表中行的状态并在ngo_activity_time_validations表中创建一个汇总行或匹配行volunteer_validated_times。规格不清楚cost_per_hour来自哪里?

公司

一家公司注册并上传了一个包含 3 名志愿者的 CSV 文件。这会在表中创建一行,在companies表中创建三行,在链接表中创建volunteers3 行。company_volunteers

公司志愿者 1 单独报名参加一项活动,一切如上进行。

公司报名参加了一项不同的活动,并自愿邀请所有 3 名员工参与该活动。ngo_activity_applications这将在表中创建 3 行。

NGO 批准了所有这三个,在表中创建三个新行ngo_activity_members- 并删除ngo_activity_applications表中的行或更改它们status- 规范。不清楚。

志愿者做一些工作,公司代表公司志愿者 1 和 2 在应用程序中记录时间 - 公司志愿者 3 记录她自己的时间:

公司志愿者 1 和 2 公司使用应用程序代表他们记录时间 - 在ngo_activity_time_validations表中创建 2 行。

公司志愿者 3 公司志愿者 3 使用该应用程序记录自己的时间 - 在ngo_activity_time_validations表中创建一行。

非政府组织以某种方式验证完成的工作,然后告诉应用程序。这可能会更改表中行的状态并在ngo_activity_time_validations表中创建一个汇总行或匹配行volunteer_validated_times。规格不清楚cost_per_hour来自哪里?

概括

volunteer_validated_times您可以通过查询表JOINed 到表来查看任何个人记录了多少验证时间volunteers。您还可以通过执行相同的查询但也加入表来查看任何公司记录了多少验证时间company_volunteers

可能的变化和问题:

您可能希望company_entered在表中添加一个标志ngp_activity_time_validations,以便区分个人输入的记录和公司代表个人输入的记录。如果日志记录与您的应用程序相关,您可能还希望添加在此表中创建条目的人员的 ID。

可能想要在表中添加一hourly_rate列,在表中创建行时volunteers用作默认值。cost_per_hourvolunteer_validated_times

于 2013-05-21T23:31:26.357 回答