Database Relationships overview appreciated
===

I am helping to create a database via salesforce for storing information about Non-profit organizations.
 
It has primarily 4 entities in the schema: Agency, Program, Project, and Contact, where Agency is at the top of the hierarchy, Program is next, etc.
 

 - Many-to-many relationship from Agency to Agency
 - Many-to-many relationship from Agency to Contact
 - Many-to-many relationship from Contact to Contact
 - Many-to-many relationship from Agency to Program
 - One-to-many relationship from Program to Project
 - Many-to-many relationship from Project to Contact


We have created junction objects for the relationships, and our current strategy is to have a series of queries on each of the object pages to display the correct information, as well as have an option to create a new association manually. 
 
However, we are concerned about updating our database when certain new associations are made. For example, if an Agency to Program association is made, we update all the contacts under that program to be associated with that agency. However, do we update all the projects under that program to be associated with the Agency? 
 
Here is a list of our direct relationships which create implied relationships. If you have any comments or feel any further associations should be created, any help would be appreciated! Thank you so much
 

 - Direct Relationships -> Implied Relationships
 - Agency-Agency
 - Agency-Contacts
 - Contacts-Contacts
 - Agency-Program -> Agency-Agency & Agency-Contact (& Agency-Project ????)
 - Agency-Project -> Agency-Agency & Agency-Contact & Agency-Program
 - Program Project -> Agency-Project
 - Program-Contact -> Agency-Contact
 - Project-Contact -> Program-Contact
