The scenario
A municipal civil protection agency needs to model volunteer groups, their members, roles, and shift assignments to coordinate emergency response staffing.
What is in this drawing
Read the decisions behind it.
01
Separate VolunteerGroup and Volunteer entities linked via membership table to allow many-to-many group participation.
02
Introduce ShiftAssignment as a join entity to capture which volunteer fills which role on a specific shift.
03
Use surrogate primary keys for join tables to simplify future extensions like attendance tracking.
Use this ER model when building a database for volunteer management in emergency services, civil defense, or community response teams requiring shift scheduling and role-based assignments.
More like this