Hi All,
This is for getting an idea of what some of you might do in a similar situation.
Heres' the scenario: state of Connecticut has a probation and corrections procedure. Offenders on parole need to meet with parole officers each week. There may be administrators who may schedule the parole officers for meetings with the offenders. The db also needs to track friends and girlfriends of the offenders, attorneys, etc.
So, you have essentially two options on the db structure:
have separate tables for offenders, contacts, parole officers and administrators, maybe a few others. Advantage: you can customize fields and you can count on the safety that we won't mistake a parole officer for a violent felon :-) Disadvantage: not much except in exporting and perhaps contacting, and the fact that an essentially homogeneous entity (a person - i.e. we all have gender, age, name, address and phone numbers) and I think data may not be normalized as far as it can go.
have one consolidated contact table with common information, with a category for type. Probably one-to-many will work for the category in this case (parole officers normally aren't offenders also). Another thing for very tight security would be a one-to-one id table for the staff for example having just the primary key of staff and a status field, with cascade delete - if the staff id is not in that table, they don't exist as staff - make sure all queries for staff join on this table. Advantage: relationships are a bit easier, easier to check for duplicate names and so forth, simpler structure. Disadvantage: just that we have to maintain tight controls on knowing and filtering the data presented to users of the database.
I'm also looking at this becoming a huge database perhaps in the future so that has to be a consideration in any suggestions. One final note, any offender at least can list multiple addresses and periods valid, so there's a 1-many relationship between contacts and addresses.
Your suggestions plus real-life experiences with what you decided would be very nice and very helpful.
Sincerely,
Samuel Fullman