Modeling of hospitals and general practices: 'location' table contains common information 'hospital' table contains hospital specific info and a location_id 'general practice' table contains GP specific info and a location_id Person: 'referrer' table contains common info 'post' table links referrer+location (e.g. $general_practitioner, $general_practice) 'hospital_post' table links post+speciality (to get $clinician (post.referrer), $hospital (post.location), $specialty (hospital_post.specialty) Case: provides location Request: provides referrer, case To find the right person/post, lookup location+referrer to get post. If a hospital post record exists for this post id, -that- provides the specialty (if it doesn't exist, it's a GP referral)