Ставится задача: создать БД, содержащую сведения о посещении пациентами поликлиники своего участкового врача. Сначала строится одна таблица, в которую заносятся фамилия пациента, его дата рождения, номер участка, к которому приписан пациент, фамилия участкового врача, дата посещения врача и установленный диагноз болезни. Ниже приведен пример такой таблицы.
Таблица 2
БД «Поликлиника»
Фамилия пациента |
Дата рождения |
Номер участка |
Фамилия врача |
Дата посещения |
Диагноз |
Лосев О.И. |
20.04.65 |
2 |
Петрова О.И. |
11.04.98 |
грипп |
Орлова Е.Ю. |
25.01.47 |
1 |
Андреева И. В. |
05.05.98 |
ОРЗ |
Лосев О.И. |
20.04.65 |
2 |
Петрова О.И. |
26.07.98 |
бронхит |
Дуров М.Т. |
05.03.30 |
2 |
Петрова О.И. |
14.03.98 |
стенокардия |
Жукова Л. Г. |
30.01.70 |
2 |
Петрова О.И. |
11.04.98 |
ангина |
Орлова Е.Ю. |
25.01.47 |
1 |
Андреева И. В. |
11.07.98 |
гастрит |
Быкова А.А. |
01.04.75 |
1 |
Андреева И. В. |
15.06.98 |
ОРЗ |
Дуров М.Т. |
05.03.30 |
2 |
Петрова О.И. |
26.07.98 |
ОРЗ |
Нетрудно понять недостатки такой организации данных. Во-первых, очевидна избыточность информации: повторение даты рождения одного и того же человека, повторение фамилии врача одного и того же участка. В такой БД велика вероятность иметь недостоверные, противоречивые данные. Например, если на втором участке сменится врач, то придется просматривать всю базу и вносить изменения во все записи, относящиеся к этому участку. При этом велика вероятность что-то пропустить. После каждого нового посещения пациентом больницы потребуется снова вводить его дату рождения, номер участка, фамилию врача, т.е. информацию, уже существующую в БД.
Полученная таблица соответствует первой нормальной форме. Для устранения отмеченных недостатков требуется ее дальнейшая нормализация. Структура такой таблицы (отношения) описывается следующим образом:
ПОЛИКЛИНИКА (ФАМИЛИЯ, ДАТА_РОЖДЕНИЯ, УЧАСТОК, ВРАЧ, ДАТА ПОСЕЩЕНИЯ, ДИАГНОЗ)
Необходимо установить ключ записей. Здесь ключ составной, который включает в себя два поля: ФАМИЛИЯ и ДАТА_ПОСЕЩЕНИЯ. Каждая запись — это информация о конкретном посещении пациентом больницы. Если допустить, что в течение одного дня данный пациент может сделать только один визит к участковому врачу, то в разных записях не будет повторяться комбинация двух полей: фамилии пациента и даты посещения врача.
Согласно определению второй нормальной формы, все неключевые поля должны функционально зависеть от полного ключа. В данной таблице лишь ДИАГНОЗ определяется одновременно фамилией пациента и датой посещения. Остальные поля связаны лишь с фамилией, т. е. от даты посещения они не зависят. Для преобразования ко второй нормальной форме таблицу нужно разбить на две следующие: