- Patient (пациент)
- Doctor (врач)
- Medical Facility (медицинское учереждение, больница, клиника)
- Appointment (встреча с врачом по записи)
- Prescription (рецепт от врача)
- Record (запись состояния пациента, показатели)
Данные отношения находятся в 2НФ, так как они находятся во 1НФ и каждый не ключевой атрибут неприводимо зависит от любого потенциального ключа. Разберём подробнее возможные потенциальные ключи для каждой таблицы:
patient
- толькоpatient_id
.phone_number
,email
не подходят, так как могут бытьNULL
.doctor
- толькоdoctor_id
.medical_facility
-facility_id
и (state
,city
,address
).appointment
- толькоappointment_id
. (patient_id
,appointment_dttm
,is_active
) и (doctor_id
,appointment_dttm
,is_active
) не подходят, так какis_active
может бытьfalse
.prescription
-prescription_id
и (patient_id
,medication_name
,prescription_dt
).record
-record_id
и (patient_id
,assessment_dttm
).
Таблица record
будет версионной, ведь состояние пациента изменяется с течением времени. SCD
(Slowly changing dimensions) будет типа
Patient:
Название | Описание | Тип данных | Ограничение |
---|---|---|---|
patient_id |
Идентификатор | INTEGER | PRIMARY KEY |
name |
ФИО | VARCHAR(50) | NOT NULL |
birth_dt |
Дата рождения | DATE | NOT NULL |
gender |
Пол | VARCHAR(10) | NOT NULL |
phone_number |
Телефон | VARCHAR(15) | |
email |
Email-адрес | VARCHAR(30) |
Doctor:
Название | Описание | Тип данных | Ограничение |
---|---|---|---|
doctor_id |
Идентификатор | INTEGER | PRIMARY KEY |
name |
ФИО | VARCHAR(50) | NOT NULL |
specialty |
Специальность | VARCHAR(25) | NOT NULL |
phone_number |
Телефон | VARCHAR(15) | |
email |
Email-адрес | VARCHAR(30) | |
primary_facility_id |
Базовое мед. учреждение | INTEGER | FOREIGN KEY REFERENCES medical_facility(facility_id) |
Medical Facility:
Название | Описание | Тип данных | Ограничение |
---|---|---|---|
facility_id |
Идентификатор | INTEGER | PRIMARY KEY |
name |
Название | VARCHAR(50) | NOT NULL |
type |
Тип | VARCHAR(20) | NOT NULL |
address |
Адрес (улица, здание) | VARCHAR(30) | NOT NULL |
city |
Город (населённый пункт) | VARCHAR(20) | NOT NULL |
state |
Штат (регион) | VARCHAR(20) | NOT NULL |
zipcode |
Почтовый индекс | INTEGER | |
phone_number |
Контактный телефон | VARCHAR(15) |
Appointment:
Название | Описание | Тип данных | Ограничение |
---|---|---|---|
appointment_id |
Идентификатор | INTEGER | PRIMARY KEY |
patient_id |
Пациент | INTEGER | FOREIGN KEY REFERENCES patient(patient_id) |
doctor_id |
Доктор | INTEGER | FOREIGN KEY REFERENCES doctor(doctor_id) |
facility_id |
Учреждение, где происходит встреча | INTEGER | FOREIGN KEY REFERENCES medical_facility(facility_id) |
appointment_dttm |
Дата и время встречи | TIMESTAMP | NOT NULL |
reason |
Причина встречи | VARCHAR(30) | |
notes |
Замечания | VARCHAR(50) | |
is_active |
В силе ли встреча? | BOOLEAN | NOT NULL |
Prescription:
Название | Описание | Тип данных | Ограничение |
---|---|---|---|
prescription_id |
Идентификатор | INTEGER | PRIMARY KEY |
patient_id |
Пациент | INTEGER | FOREIGN KEY REFERENCES patient(patient_id) |
doctor_id |
Доктор | INTEGER | FOREIGN KEY REFERENCES doctor(doctor_id) |
medication_name |
Выписанное лекарство | VARCHAR(30) | NOT NULL |
dosage |
Дозировка | VARCHAR(30) | |
quantity |
Количество препаратов | INTEGER | |
prescription_dt |
Дата рецепта | DATE | NOT NULL |
notes |
Замечания | VARCHAR(50) |
Record:
Название | Описание | Тип данных | Ограничение |
---|---|---|---|
record_id |
Идентификатор | INTEGER | PRIMARY KEY |
patient_id |
Пациент | INTEGER | FOREIGN KEY REFERENCES patient(patient_id) |
assessment_dttm |
Дата и время измерений | TIMESTAMP | NOT NULL |
systolic_pressure |
Cистолическое давление | INTEGER | |
diastolic_pressure |
Диастолическое давление | INTEGER | |
temperature |
Температура | REAL | |
heart_rate |
Пульс | REAL |