我不确定你是否需要改变你的架构,甚至根本不需要。你的模式需要一个应用程序来让它做任何事情——你不能在这里实现所有的逻辑——它的一部分/大部分将在你的应用程序中。
据我了解,您的规范说所有实际的志愿者工作都是由个人执行的,其中一些可能与公司有关,而另一些则没有。您的架构已经捕获了这一点。
这几乎就是你所需要的,我想。当你说:
在验证完成工作的时间时,可以通过两种方式完成。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
表中创建三行,在链接表中创建volunteers
3 行。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
您可以通过查询表JOIN
ed 到表来查看任何个人记录了多少验证时间volunteers
。您还可以通过执行相同的查询但也加入表来查看任何公司记录了多少验证时间company_volunteers
。
可能的变化和问题:
您可能希望company_entered
在表中添加一个标志ngp_activity_time_validations
,以便区分个人输入的记录和公司代表个人输入的记录。如果日志记录与您的应用程序相关,您可能还希望添加在此表中创建条目的人员的 ID。
可能想要在表中添加一hourly_rate
列,在表中创建行时volunteers
用作默认值。cost_per_hour
volunteer_validated_times