Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УИС Лабораторные работы.doc
Скачиваний:
8
Добавлен:
06.12.2018
Размер:
377.86 Кб
Скачать

Нормализация отношений

Рассмотрим процедуру нормализации отношения на примере. Пусть по требованию заказчика сформулирована следующая таблица:

TStudent (ФИО, Дата_рожд, Пол, №_паспорта, Дата_выдачи, Прописка, Дом_тел, Группа, Факультет)

В таком виде эта таблица не может использоваться как БД, т.к. будет содержать явно дублированные данные, одна и та же информация будет храниться в большом числе экземпляров. На первый взгляд дублирование в таблице не избыточное, оно допустимо в принципе, но нежелательно. Кроме того, возможны пустые ячейки в этой таблице, т.е. память для информации выделяется, а информации нет! Не исключены и указанные выше аномалии.

1Нф: Отношение находится в 1нф, если все его атрибуты являются простыми, т.Е. Имеют единственное значение, и в таблице отсутствуют повторяющиеся группы полей (строки).

Будем полагать, что студент имеет не более 1 ФИО, паспорта, прописки, домашнего телефона. Но студент может одновременно учиться в двух группах – получать дополнительное образование. Тогда приведенное отношение не удовлетворяет требованиям 1НФ. Поэтому выделим атрибуты Группа и Факультет в отдельное отношение TGruppa, а чтобы не утратить связь между студентом и группами, в которых он учится, создадим отношение TObuchenie.

TObuchenie (ФИО, Группа)

TStudent (ФИО, Дата_рожд, Пол, №_паспорта, Дата_выдачи, Прописка, Дом_тел)

TGruppa (Группа, Факультет)

Теперь отношения находятся в 1НФ.

2Нф: Отношение находится во 2нф, если оно удовлетворяет условию 1нф и каждый неключевой атрибут функционально полно зависит от первичного ключа.

Что можно выбрать в качестве первичного ключа? Напомню, что это атрибут (или группа атрибутов), однозначно определяющий кортеж отношения. Ключевые атрибуты не могут иметь значения Null (т.е. они должны быть обязательно определены) и не должны изменяться в ходе эксплуатации БД!

Таких атрибутов в отношении TStudent нет! У людей меняется все из указанного списка, кроме даты рождения, иногда даже пол! Но дата рождения не может однозначно идентифицировать кортеж отношения, поэтому дополнительно введем в отношение TStudent ключевой атрибут ID (идентификатор). В отношении TGruppa такой атрибут есть – это Группа. Можно его взять в качестве первичного ключа, но практический опыт проектировщиков БД рекомендует в качестве первичных ключей отношений выбирать только числовые поля–идентификаторы, заполняемые автоматически при вводе записей. Поэтому введем в отношение TGruppa такой атрибут ID_Gr. Аналогично в отношение TObuchenie введем ключевой атрибут ID_Ob. Получим следующие отношения:

TObuchenie (ID_Ob, ID, ID_Gr)

TStudent (ID, ФИО, Дата_рожд, Пол, №_паспорта, Дата_выдачи, Прописка, Дом_тел)

TGruppa (ID_Gr, Группа, Факультет)

В отношениях подчеркнуты первичные ключи.

Полная функциональная зависимость атрибута B от атрибута А означает, что каждому значению А соответствует ровно одно значение В (или ни одного).

Все неключевые поля удовлетворяют данному условию.

Эти отношения во 2НФ.