Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ивт-20 / БД - заочный факультет / 04 Методические указания - проектирование баз данных.doc
Скачиваний:
43
Добавлен:
26.04.2015
Размер:
518.66 Кб
Скачать

Нормальные формы .

Каждой нормальной форме соответствует некоторый определенный набор ограничений, и отношение находится в некоторой нормальной форме, если удовлетворяет свойственному ей набору ограничений.

Определение: Первая нормальная форма (1НФ) – Все значения атрибутов должны быть атомарными.

2НФ применяется к отношениям с составными ключами, т.е. к таким отношениям, первичный ключ которых состоит из двух или больше атрибутов.

Определение: Вторая нормальная форма– Никакие неключевые атрибуты не являются функционально зависимыми лишь от части ключа.

Отношение с первичным ключом на основе единственного атрибута всегда находится, по крайней мере, в 2НФ.

Если для атрибутов А, В и С некоторого отношения существуют зависимости вида АВ иВС , то говорят, что атрибут С транзитивно зависит от атрибута А через атрибут В.

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

Определение: Отношение находится в нормальной форме Бойса-Кодда (BCNF) в том и только в том случае, если каждый детерминант является потенциальным ключом.

Для отношения с единственным потенциальным ключом его 3НФ и НФБК являются эквивалентными.

На практике достаточно привести отношения к НФБК, чтобы исключить аномалии обновления. Эта процедура основывается на том, что единственными ФЗ в любой таблице должны быть зависимости вида K->F, где K - первичный ключ, а F - некоторое другое поле. Заметим, что это следует из определения первичного ключа таблицы, в соответствии с которым K->F всегда имеет место для всех полей данной таблицы. Цель нормализации состоит именно в том, чтобы избавиться от функциональных зависимостей, которые имеют иной вид, чем K->F.

Повторяя применение двух приведенных ниже правил, почти во всех практических ситуациях можно получить для заданной таблицы множество таблиц, которые находятся в "окончательной" нормальной форме и, таким образом, не содержат каких-либо функциональных зависимостей вида, отличного от K->F.

1.Таблица имеет составной первичный ключ вида (К1,К2), и включает также поле F, которое функционально зависит от части этого ключа, например, от К2, но не от полного ключа. В этом случае рекомендуется сформировать другую таблицу, содержащую К2 и F (первичный ключ - К2), и удалить F из первоначальной таблицы:

Заменить T (K1,K2,F), первичный ключ (К1,К2), ФЗ К2->F

на T1 (K1,K2), первичный ключ (К1),

и T2 (K2,F), первичный ключ К2.

2. Таблица имеет первичный (потенциальный) ключ К, не являющееся потенциальным ключом поле F1, которое, функционально зависит от К, и другое неключевое поле F2, которое функционально зависит от F1.

Заменить T (K,F1,F2), первичный ключ К, ФЗ F1->F2

на T1 (K,F1), первичный ключ К,

и T2 (F1,F2), первичный ключ F1.

ЗАДАЧА 4

Для каждой из следующих реляционных таблиц определите, каким нормальным формам удовлетворяют таблицы (если такие есть) и покажите, как разбить таблицу на несколько таблиц, каждая из которых удовлетворяет форме самого высокого порядка.

  1. Рабочий (ИНН, ФИО, Адрес, Телефон, Родственник, Специальность)

ФЗ: Адрес Телефон

  1. Рабочий (ИНН, ФИО, Адрес, Телефон, Родственник, Адрес_Родств.)

ФЗ: Родственник Адрес_Родств.

  1. Рабочий (Таб_ном, ФИО, ИНН_Бригадир,ФИО_Бригадир)

ФЗ: ИНН_Бригадир ФИО_Бригадир

  1. Продажи (Дата, Клиент, Продукт, Склад, Адрес_склада, Торг_предс)

ФЗ: Клиент Торг_предс

  1. Рабочий (Таб_ном, ФИО, ,ФИО_Бригадир, Иждивенцы)

  1. Продажи(Дата, Клиент, Продукт, Производитель, Страна_Произв, Торг_предс)

ФЗ: Производитель Страна_Произв

Продукт  Страна_Произв

  1. Студент (Номер_зачетки, ФИО, №комн, Этаж, Дежурная_по_Этажу)

ФЗ: №комн, Этаж Дежурная_по_Этажу

  1. Склад (Номер_склада, Товар, Поставщик)

ФЗ: Номер_склада Товар

ФЗ: Товар  Поставщик

  1. Склад (Номер_склада, Товар, Покупатель)

ФЗ: Номер_склада Товар

ФЗ: Товар  Покупатель

  1. Склад (Номер_склада, Зав_складом, Товар)

ФЗ: Зав_складом  Номер_склада

ФЗ: Номер_склада Товар 

  1. Касса (Номер_кассы, Кассир, Время, Место, Сеанс)

ФЗ: Кассир  Номер_кассы

ФЗ: Номер_кассы Место

  1. Филиал (Номер_Филиала, Улица,Город, Почтовый_индекс, Телефон)

Первичный ключ: Номер_Филиала

Альтернативный ключ:Телефон

  1. Объект_для_аренды (Номер_объекта, Адрес, Почтовый_индекс,Тип, Количество_комнат,Арендная_плата,Номер_Владельца,Таб_номер, Номер_Филиала)

Первичный ключ Номер_объекта

  1. Владелец(Номер_владельца,Имя,Адрес,Телефон)

Первичный ключ Номер_владельца

  1. Клиент(Номер_клиента, Фамилия, Имя, Отчество, Адрес, Телефон, Предпочтительный_тип,Максимальный_размер_платы)

Первичный ключ Номер_Клиента

  1. Объявление (Номер_объявления, Номер_объекта, Дата_публикации, Название_газеты, Стоимость)

Первичный ключ Номер_объявления

  1. Газета ( Название_газеты,Адрес,Телефон)

Первичный ключ Название_газеты

Альтернативный ключ Телефон

  1. Инспекция (Номер_объекта,Табельный_номер,Дата_инспектирования, Комментарии)

Первичный ключ (Номер_объекта, Табельный_номер, Дата_инспектирования)

  1. Осмотр (Номер_объекта, Номер_клиента, Дата_осмотра, Комментарии)

Первичный ключ (Номер_объекта, Номер_клиента, Дата_осмотра)

Решение ( вариант 1):

Отношение удовлетворяет 1НФ.Рассмотрим на соответствие 2НФ. Ключ отношения - ИНН, несоставной. Поэтому условия 2НФ выполняются.

Рассмотрим на соответствие 3НФ. По условию задачи ФЗ: Адрес Телефон. Кроме этого явно видна ФЗ: ИНН Адрес. Следовательно ИНН Телефон является транзитивной зависимостью, что противоречит 3НФ. Следуя правилу, разбиваем наше отношение на два:

Рабочий (ИНН, ФИО, Адрес, Родственник, Специальность)

Телефонный_Справочник (Адрес, Телефон)

Продолжаем анализировать. Имеем две ФЗ: ИНН ФИО, ФИО Родственник, следовательно ИНН Родственник есть транзитивная зависимость. Отношение все еще не удовлетворяет 3НФ.

Необходимо разбить на таблицы:

Рабочий (ИНН, ФИО, Адрес, Специальность)

Семья (ФИО,Родственник)

В итоге получаем три таблицы, каждая из которых находится в НФБК. Это легко проверить, т.к. во всех ФЗ детерминант является ключом.