Въпросът ти изобщо не ми е ясен. Например вие говорите за пациентите и медицинските сестри, които са свързани с „Приоритет“, а лекарите са свързани с „Време“ и „Приоритет“ – и пишете, сякаш това са други таблици – но не ги описвате.
По-долу е как бих решил проблема ви, въз основа на мъгливото разбиране, което имам за проблема ви.
Не знам какво означава A&E. Предполагам, че е клиника, болница или друго заведение.
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.
Очевидно вашето "състояние" може да е различно. Тук, в Съединените щати, всички наши щати имат уникален код от 2 знака.
cities
id unsigned int(P)
name varchar(50)
state_id char(2)(F states.id)
Не сте описали какво трябва да знаете за лекарите, така че предполагам, че е същото като това, което трябва да знаете за медицинските сестри.
doctors
id unsigned int(P)
forename varchar(50)
surname varchar(50)
Неща като:грип, бронхит, синусова инфекция и др.
illnesses
id unsigned int(P)
description varchar(75)
nurses
id unsigned int(P)
forename varchar(50)
surname varchar(50)
Поставих историята на пациента в собствената й таблица, за да можем да свържем множество заболявания с всеки пациент, както и дата, когато пациентът е имал всяко заболяване.
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.
Отново, вашите "щати" може да имат различен идентификационен номер или име.
states
id char(2)(P)
name varchar(50)
Неща като:замаяност, умора, задръстване на синусите, задух и др.
symptoms
id unsigned int(P)
description varchar(50)
Тази таблица съдържа информация за всеки път, когато пациент посещава A&E. Всеки запис, който няма end_time, би представлявал пациент, който в момента е в A&E и чака да бъде видян от лекар/медицинска сестра. Можете да определите колко дълго е чакал пациент, като сравните текущото време с beg_time. И, разбира се, приоритетът ще бъде въведен/актуализиран от приемащия служител, медицинска сестра, лекар и т.н.
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
Няколко лекари могат да видят пациент...
visits_doctors
id unsigned int(P)
visit_id unsigned int(F visits.id)
doctor_id unsigned int(F doctors.id)
И няколко медицински сестри могат да видят пациент...
visits_nurses
id unsigned int(P)
visit_id unsigned int(F visits.id)
nurse_id unsigned int(F nurses.id)
Пациентът обикновено има множество симптоми, когато идва на посещение...
visits_symptoms
id unsigned int(P)
visit_id unsigned int(F visits.id)
symptom_id unsigned int(F symptoms.id)