Я нормальная форма таблицы БД
4. Установление связей между таблицами
Первая нормальная форма (1НФ)
1НФ требует, чтобы каждое поле таблицы было
· Неделимым,
· Не содержало повторяющихся групп.
Неделимость – требование относительное. Наиболее характерные примеры:
Пример 1. Объект БОЛЬНИЦА
№ па-циента | ФИО па-циента | Адрес пациента | Дата опе-рации | ФИО хирурга | Операция |
Васин ВВ | Мира, 14-2 | 11.01.05 | Батурин РР | Удал.грыжи | |
Васин ВВ | Мира, 14-2 | 10.02.05 | Зинин Б.Б. | Уд. камней | |
ВанинНН | Труда, 114-67 | 03.12.04 | Петров ДД | Уд.камнейт | |
Ким ОО | Калинина, 13-97 | 21.02.05 | Зинин Б.Б. | Щитов жел |
Недостатки таблицы с т. зрения БД, если первичный ключ - №пац.:
1. Здесь атрибуты ФИО пац и ФИО хир.,Адрес пац и Дата не являются неделимыми, но для целей данной БД их можно принять неделимыми.
2. Есть повторяющаяся группа – строки 1 и 2.
Выбор первичного ключа:
Вариант 1. Выбор одного атрибута.
- № пац. – нельзя, т.к. две записи, неоднозначно идентифицирует записи таблицы,
-ФИО пац, адрес пац. – то же,
|
|
-Дата оп. –можно, но это не основной атрибут, не главный семантически, как № пац, его ФИО, хирург, операция, дата тоже может повторяться – пока отложим.
- ФИО хир. –повторяется
- Операция – тоже повторяется
Вариант 2. Выбор составного атрибута
Можно объединить № пац + ФИО хирурга или
№ пац + Операция или
№ пац + Дата оп.
Выбираем № пац + ФИО хир, как несуший наибольшую смысловую нагрузку – по ФИО хирурга м. узнать вид операции, возможно – его дату по расписанию его работы. Тогда таблица примет вид:
№ пац.+ ФИО хирурга | ФИО па-циента | Адрес пациента | Дата опе-рации | Операция |
110+ Батурин РР | Васин ВВ | Мира, 14-2 | 11.01.05 | Удал.грыжи |
110+ Зинин Б.Б. | Васин ВВ | Мира, 14-2 | 10.02.05 | Уд. камней |
114+ Петров ДД | ВанинНН | Труда, 114-67 | 03.12.04 | Уд.камнейт |
215+ Зинин Б.Б. | Ким ОО | Калинина, 13-97 | 21.02.05 | Щитов жел |
Для данной конкретной БД составной первичный ключ удовлетворяет 1НФ, исчезла повторяющаяся группа.
Но данное решение не универсально, при добавлении в таблицу новых записей возможны совпадения, появление повторяющихся групп.
Может быть, долее нечувствительным к обновлению БД окажется составной ключ
№ пац + Дата, т.к. мало вероятно, что одному пациенту в один день сделают 2 операции.