I would appreciate your suggestions as to the design of a database I am working on. It is for a law practice.
One of my problems is a design which allows some rather deep assiciations.
I am looking at the following tables:
FILE
This would be a master identifier. Each file coming into the firm would have a file number.
Each file would be of a particular type. For purposes of this post, I'll focus on a loan closing. Perhaps FILE_TYPE.
Each closing will be of a particular type loan which may be identified in the FILE_TYPE table.
Each closing has quite a few people involved in it. There will be the pre_closing inhouse staff, post_closing inhouse staff, closer, managing attorney, supervising attorney, borrower (can be more than one borrowers), may be a seller(s), a lender, the lender may have multiple contact people for different tasks, a mortgage broker which may also have multiple people invovled at different stages of the process, there may also be different branches of the lender and broker, tax search person, title search person and maybe more.
Each loan has quite a few tasks. I need to list the tasks for each loan. Each tasks will need to assigned to a person and have an assigned completion date. We will also need to see the status of each task. Each task will also need to be associated with notes about the task. I had initially thought to place these tasks in the LOAN table but then wasn't sure how I would go about associating the assigned person, status, notes, completion date to each task with the LOAN. Unless, I did something like
task_1
task_1_assigned_staff
task_1_assigned_atty
task_1_assigned_competion_date
task_1_status
task_1_notes
That seemed a bit overwhelming since there will probably be 20+ tasks, leading to a table with over 100 fields. Additionally, we would be typing information in about the same people 100s of times. All of these people should be in the CONTACTS table.
Does anyone have any ideas? I can expound more on the end requirements if you think that would help. I've looked at several CRMs including OpenCRM and Anteil. These suggest a seemingly good way to deal with CONTACTS and ORGANIZATIONS. But, they don't deal with a project which will ALWAYS have certain tasks assigned to it.
I've been reading a lot about object oriented PHP programming but am still at a loss as to where to begin with this structure.
To further deepen the task, I would like to make this a fully integrated contact relationship management system. For example,
a contact may have relations many contact-types and many company
a company may have relations to many events
a contact may have relations to many events
an event will have a description and times and tasks
an event may have relations to many companies and many contacts
a task will have a description
a task may have relations to an event to a contact and to a many times
Your help would be appreciated in this challenge.
Thanks,
Joel