I am viewing a database model. I need help with part of the model. At this stage, I am only interested in the logical model, not the implementation. I want to adopt the best practice.
Problem Summary
The database is used by an application that manages legal cases for a law firm.
In each case, there are several sides. (By the party, I mean some legal community in the real world that is interested in this matter.)
There are about 40 different types of parties.
2 of these types may consist of one person, one organization, or several persons and / or organizations combined in any combination.
The other 38 types can be either one person or one organization.
In each case, there are always two sides of complex types (i.e., potentially a combination of people and organizations).
Usually for each case there are 5-10 parties.
Options
Each side is modeled as a potential combination of any number of individuals and organizations. The tables look like this:
- Case
<- CasePartyAssignment - >Party
If all parties are potentially a combination of individuals and organizations: - Party
<-PartyPersonAssignment ->Face - Party
<-PartyOrgAssignment ->Organization
Alternatively, I model this using three different types of CasePartyAssignment table types.
The first is the same as above, which covers a complex scenario:
, . , 1 , - . , , , - , PartyPersonAssignment, .
- - / ?