- •Южно-сахалинский институт экономики, права и информатики
- •Рекомендуемая литература 55 аннотация
- •Предисловие
- •Раздел 1. Нормализация отношений. Практическая работа №1. Функциональные зависимости.
- •Нормальные формы .
- •Раздел 2. Концептуальное проектирование. Описание предметной области, используемой в качестве учебного примера. Анализ требований пользователя.
- •1.Требования к данным
- •2. Требования к транзакциям.
- •Практическая работа №1. Построение концептуальной модели.
- •1.Определение типов сущностей
- •2. Документирование выделенных типов сущностей.
- •3.Определение типов связей.
- •4. Определение мощности и уровня участия типов связей.
- •5. Документирование типов связей.
- •6. Построение предварительной er-диаграммы.
- •6. Варианты для самостоятельной работы.
- •Практическая работа №2. Определение атрибутов, доменов и ключей в методологии концептуального проектирования.
- •1. Определение атрибутов и связывание их с типами сущностей и связей.
- •2. Документирование выделенных атрибутов
- •3. Определение и документирование Доменов атрибутов .
- •4. Определение атрибутов, являющихся потенциальными и первичными ключами.
- •4. Варианты для самостоятельной работы.
- •Обсуждение локальной концептуальной модели данных с пользователями.
- •Практическая работа №3. Преобразование локальной концептуальной модели данных в логическую модель .
- •Определение набора отношений исходя из структуры локальной логической модели данных.
- •Практическая работа №4. Построение окончательной диаграммы .
- •1. Проверка модели с помощью правил нормализации.
- •2. Определение бизнес-правил.
- •3. Проверка модели в отношении транзакций пользователей.
- •4. Ссылочная целостность
- •5. Варианты для самостоятельной работы.
- •Практическая работа №4. Разработка физического проекта бд.
- •Алгоритм преобразования er-модели в реляционную модель данных.
- •Рекомендуемая литература
Нормальные формы .
Каждой нормальной форме соответствует некоторый определенный набор ограничений, и отношение находится в некоторой нормальной форме, если удовлетворяет свойственному ей набору ограничений.
Определение: Первая нормальная форма (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НФ.Рассмотрим на соответствие 2НФ. Ключ отношения - ИНН, несоставной. Поэтому условия 2НФ выполняются.
Рассмотрим на соответствие 3НФ. По условию задачи ФЗ: Адрес Телефон. Кроме этого явно видна ФЗ: ИНН Адрес. Следовательно ИНН Телефон является транзитивной зависимостью, что противоречит 3НФ. Следуя правилу, разбиваем наше отношение на два:
Рабочий (ИНН, ФИО, Адрес, Родственник, Специальность)
Телефонный_Справочник (Адрес, Телефон)
Продолжаем анализировать. Имеем две ФЗ: ИНН ФИО, ФИО Родственник, следовательно ИНН Родственник есть транзитивная зависимость. Отношение все еще не удовлетворяет 3НФ.
Необходимо разбить на таблицы:
Рабочий (ИНН, ФИО, Адрес, Специальность)
Семья (ФИО,Родственник)
В итоге получаем три таблицы, каждая из которых находится в НФБК. Это легко проверить, т.к. во всех ФЗ детерминант является ключом.