I’m trying to develop a web app for a university who’s looking to keep track of their industry partnerships and I’m looking for some ideas for the ERD design. The university has different types of partnerships, some of them formal and some informal. These partnerships could be part of formal projects between businesses and academic programs with MOUs and SLAs, or simply informal consultations with industry. Some partnerships also have student involvement and this needs to be reported as well. Some key reports include listing of partners for a particular academic program, listing of partners in a particular sector or business type, listing of formal and/or informal partnerships including contact details of industry and university role-players and listing of specific project details including project description, commencement date, duration and nature of program participation.
These are some of the ideas but I’m open to any further suggestions or comments. The app will be developed using Zend Framework with a MySQL database. Right now however, I’m just looking for help with the ERD design.
I’ve sketched a possible scenario, it’s simplified but I think it goes in the right direction. The important thing is that you don’t overcomplicate the partnership <-> partners relation.
Keep it simple and stupid – only one table for the partners (students, companies etc.). Add columns or further relations to the partners table to specify what kind of partner it is (business? student? sector?).
The partnerships_partners relation table can be used to describe the relation more precisely, like “participant, auditor, sponsor etc.”. It gives you the context in which the partner stands to a specific partnership. Multiple entries are possible. Partners can “participate” in multiple partnerships in multiple contexts even within one partnership he could be “participant and sponsor” at the same time. The
joined_onandleft_oncolumns let you control the “history” of a partner in a certain partnership.The partnerships table describes the partnership like name, start date, expiration date etc.
The projects table describes the project, add your own columns to describe it.
To get your reports, join the necessary tables together in a query and filter the rows according to the report’s conditions.
full picture