How do I go about managing projects when there are two fundamental relationships that need to be maintained? The most obvious example that I can think of would be a firm doing some kind of location-based consulting.
I’ve been wracking my brain on how to explain this, in essence, this is the bullet point version:
- Each client that has multiple locations
- There are several projects that relate to specific client locations
- There are deliverables for these projects
- Each deliverable my only relate to a few locations the project is linked to
The system seems to break down when you overlay these two main relationships; a client with multiple locations which have projects assigned to them, and deliverables that link back to individual locations. You just end up with too many many-to-many relationships that are difficult to manage.
The problem is then visualizing this in a system. You have a client record with location sub-records. Each location record has many project records associated with it. Each Project record has deliverable records, and then those deliverables relate to specific loations.
I realize that this seems a bit estoeric, but is there a way to simplify this so that it is visually understandable?
1
This seems like a fairly straightfoward relational data structure.
client <- location; or
client <- clientLocation -> location
project <- location; or
project <- projectLocation -> location
deliverable <- location; or
deliverable <- project; or
deliverable <- location
<- project
It’s true that if you have a number of many-many relationships you’ll end up with more tables, but we’re only talking about a few entities.
It’s not true to say that
The system seems to break down when you overlay these two main relationships
The system will work fine if it properly describes the relationships. If it becomes too complex to visualize then the proper way to proceed is to break down the visualization into stages or tiers.
For example, do you need to view data from multiple clients at once? If not, then simply have an initial filter that restricts the relevant data to a single client. Alternatively you might be able to restrict to a single location or project.
The key is in prioritizing the visualization process with regards to importance and logical progression. e.g. A user will first select a client, then select the relevant projects, and finally sort by location.