Context
I've been searching the internet to see if I could find any other information or posts about what I'm trying to achieve, but I had no luck. I don't know if there's a specific term or whatever for my problem, so I'm going to try my best to explain it below. I'm sorry if it all sounds pretty vague, it probably is.
Problem
I am currently building a website that is intended for multiple users. Each user belongs to a company, and the goal of the website is to assign these tasks to their users to complete. Tasks are automatically generated and all companies can see them. Now here comes the problem that I'm trying to solve: all modifications of that task (deletion, assignment, progression status) are company specific. What do I mean by that?
For example, if we have a task, and company A assigns a user to that task, it should be specific for that company, and have no visible effect for other companies. So company B should be able to assign a user to that task as well. Or if company A deletes a task, it should be still be visible to company B. Or if company A sets the task to the status done, it should not change the status for company B.
How would one tackle this kind of problem? I know you can make a bunch of tables, like task_deletions for example, with column task_id and company_id, but I have a feeling there is a more complete solution for this problem. Any info/help would be greatly appreciated.