Hello Nick, thanks a lot for posting your data modell. I do have some annotations though.
- You define a status_date but not a status. Is there a reason ?
- You define manager as varchar. Shouldn't the manager of a project be part of the system and therefore reference the user.
- Who is the owner of a project vs. the author, vs. the manager
- Categories should use and reference the category package
- Company should reference a seperate company table, which includes more information about this company (e.g. contact information). Good question whether we would like to replace company with sponsor or external_contact, so a company can have multiple sponsors (e.g. if you have multiple projects with one company, but different departments and project leaders on the other end).
- The hours_per_day aso. asf. are unique to a company. At least I haven't found one where one project starts on a monday and another one on saturday, on a regular basis. But maybe I do not understand what these fields are used for.
- My gut feeling is to have a seperate timing table which has the "start, finish, duration, work (what is this), cost as well as type (planned, actual, baseline [what do we need this for]) und project_id"
- How do you define remaining work. Can't we calculate this from somewhere else ?
- I'm sure we can calculate the variances, as well as early and late start/finish.
In any case, thanks for starting this work, looking forward to see more.