Votre question n'est pas du tout claire pour moi. Par exemple, vous parlez de patients et d'infirmières liés à "Priorité" et de médecins liés à "Temps" et "Priorité" - et vous écrivez comme s'il s'agissait d'autres tables - mais vous ne les décrivez pas.
Voici comment je résoudrais votre problème, sur la base de la compréhension floue que j'ai de votre problème.
Je ne sais pas ce que signifie A&E. Je suppose qu'il s'agit d'une clinique, d'un hôpital ou d'un autre établissement.
aes
id unsigned int(P)
street_address varchar(75)
city_id unsigned int(F cities.id)
postcode varchar(10) // Whatever the size of your postal code.
telenumber varchar(10) // Whatever the size of your telenumber.
Évidemment, votre "état" pourrait être différent. Ici aux États-Unis, nos états ont tous un code unique à 2 caractères.
cities
id unsigned int(P)
name varchar(50)
state_id char(2)(F states.id)
Vous n'avez pas décrit ce que vous devez savoir sur les médecins, donc je suppose que c'est la même chose que ce que vous devez savoir sur les infirmières.
doctors
id unsigned int(P)
forename varchar(50)
surname varchar(50)
Des choses comme :la grippe, la bronchite, l'infection des sinus, etc.
illnesses
id unsigned int(P)
description varchar(75)
nurses
id unsigned int(P)
forename varchar(50)
surname varchar(50)
J'ai mis l'historique du patient dans son propre tableau afin que nous puissions associer plusieurs maladies à chaque patient ainsi qu'une date à laquelle le patient a eu chaque maladie.
patient_history
id unsigned int(P)
patient_id unsigned int(F patients.id)
illness_id unsigned int(F illnesses.id)
qwhen date
patients
id unsigned int(P)
forename varchar(50)
surname varchar(50)
gender enum('f','m')
dob date
street_address varchar(75)
city_id unsigned int(F cities.id)
postcode varchar(10) // Whatever the size of your postal code.
telenumber varchar(10) // Whatever the size of your telenumber.
Encore une fois, vos "états" peuvent avoir un identifiant ou un nom de taille différente.
states
id char(2)(P)
name varchar(50)
Choses comme :étourdissements, fatigue, congestion des sinus, essoufflement, etc.
symptoms
id unsigned int(P)
description varchar(50)
Ce tableau contient des informations sur chaque fois qu'un patient visite un A&E. Tout enregistrement qui n'a pas d'heure de fin représenterait un patient qui est actuellement dans un A&E en attente d'être vu par un médecin/une infirmière. Vous pouvez déterminer la durée d'attente d'un patient en comparant l'heure actuelle à beg_time. Et bien sûr, la priorité serait saisie/mise à jour par le préposé aux admissions, l'infirmière, le médecin, etc.
visits
id unsigned int(P)
patient_id unsigned int(F patients.id)
nurse_id unsigned int(F nurses.id)
ae_id unsigned int(F aes.id)
priority unsigned tinyint // 1 = Critical, 2 = Urgent, 3 = whatever...
beg_time datetime
end_time datetime
Plusieurs médecins peuvent voir un patient...
visits_doctors
id unsigned int(P)
visit_id unsigned int(F visits.id)
doctor_id unsigned int(F doctors.id)
Et plusieurs infirmières peuvent voir un patient...
visits_nurses
id unsigned int(P)
visit_id unsigned int(F visits.id)
nurse_id unsigned int(F nurses.id)
Un patient présente généralement plusieurs symptômes lorsqu'il se présente pour une visite...
visits_symptoms
id unsigned int(P)
visit_id unsigned int(F visits.id)
symptom_id unsigned int(F symptoms.id)