- •Основы бд
- •1. Основные понятия, термины.
- •2. Модели данных.
- •3. Иерархическая модель.
- •4. Сетевая модель.
- •5. Реляционная модель
- •Операции реляционной алгебры
- •Реляционное исчисление кортежей
- •Проектирование схем реляционной бд
- •1. Основные положения
- •2. Избыточность данных и аномалии обновления
- •3. Функциональная зависимость
- •4. I нормальная форма
- •5. II нормальная форма
- •7. Нормальная форма Бойса-Кодда
- •8. Обзор процесса нормализации
- •9. Многозначные зависимости
- •Методология проектирования бд
- •Основные понятия.
- •Методология концептуального проектирования.
- •Методология логического проектирования.
- •1. Основные понятия.
- •2. Методология концептуального проектирования
- •3. Методология логического проектирования
- •4. Методология физического проектирования бд
- •Пример проектирования бд
- •Пример физического проектирования бд
- •2. Управление транзакций
- •3. Обработка запросов
2. Избыточность данных и аномалии обновления
Основная цель проектирования заключается в определении атрибутов в отношении, чтобы минимизировать избыточность данных и т.о. сократить объем памяти, которая необходима для физического хранения отношения.
Сотрудник (Nсотр, ФИО, Адрес, Должность, З/П, Nотд)
Отдел (Nотд, Адрес, Nтел)
Сотрудники отдела (Nсотр, ФИО, Адрес, Должность, З/П, Nотд, Адрес_отд, Nтел_отд)
В отношении «Сотрудники отдела» есть избыточность данных.
Поскольку сведения об отделе будет повторяться для каждого сотрудника отдела. В связи с этим в «Сотрудники отдела» существует следующее отношения обновления.
- При добавлении нового сотрудника отдела, необходимо указывать все сведения об этом отделе.
- При добавлении сведений о новом отделе, который еще не имеет сотрудников, придется присвоить значение NULL ключевому полю, что нарушает целостность данных.
При возникновении подобных аномалий рекомендуется отношение разбивать на две части. Для отношений «Сотрудники» и «Отдел» подобных аномалий уже не будет.
3. Функциональная зависимость
Функциональная зависимость описывает связь между отношениями: R(A,B) A->B.
Атрибут B функциональная зависимость от атрибута A, что означает, что каждое значение атрибута A связано только с одним значением атрибута B. При наличии функциональной зависимости атрибут или группа атрибутов, которые расположены слева от стрелки называются детерминантом.
Сотрудники_отделения:
Nсотр -> ФИО, Адрес, Должность, З/П, Nотд, Адрес_отд, Nтел_отд.
Nотд -> Адрес_отд, Nтел_отд.
Адрес_отд -> Nотд, Nтел_отд.
Nтел_отд -> Nотд, Адрес_отд.
Первичный ключ - Nотд, поскольку все остальные атрибуты функционально зависят от Nотд.
4. I нормальная форма
Нормализация отношений выполняется на основе анализа первичных ключей и существования функциональных зависимостей между атрибутами. Как правило, нормализация выполняется в несколько этапов. Каждый этап соответствует определенной «Нормальной форме» (НФ). При проектировании реляционных БД требования 1-ой НФ должны выполняться всегда, остальные по желанию проектировщика. Однако, чтобы исключить аномалии обновления и избыточности данных рекомендуется приводить отношение к 3-ей НФ.
Ненормализованное отношение приводится к 1-ой НФ следующими способами:
- Выравнивание таблиц или добавление строк;
- Один атрибут или группа атрибутов, которые назначены ключом отношения повторяющейся группы помещается вместе с ключом в отдельные отношения. Во вновь созданных отношениях устанавливаются свои первичные ключи.
5. II нормальная форма
2-ая НФ – основывается на полной функциональной зависимости. Полная функциональная зависимость означает, что если атрибут B функционально зависит от некоторого значения атрибута A, то зависит от полного значения этого атрибута, а не какого-то его подмножества. Если имеет место полная функциональная зависимость между атрибутами A и B, то удаление какого-либо значения атрибута A приводит к полной потери этой зависимости. При частичной зависимости это сохраняется . 2-ая НФ применяется к отношениям с составными ключами. Считается, что отношение находится во 2-ой НФ, если оно удовлетворяет 1-ой НФ и каждый атрибут, который не входит в состав первичного ключа, функционально полно завит от первого ключа.
На этом этапе, если имеется частичная зависимость, они удаляются из отношения и помещаются в новое отношение вместе с копией их детерминанта.
Отношение «Клиент - аренда»
Первичный ключ : (N_клиента, N_объекта)
f1: N_клиента, N_объекта -> Нач_аренды, Кон_аренды
f2: N_клиента -> ФИО_клиента
f3: N_ объекта -> Адрес, Стоимость, N_владельца, ФИО_владельца
f4: N_клиента, Нач_аренды -> N_объекта, Адрес, Кон_аренды, Стоимость, N_владельца, ФИО_владельца
1 – для первичного ключа
2
Зависимость
3 – частичная
4 – функциональная зависимость для потенциального ключа
Для того, что бы отношение преобразовать ко 2-ой НФ необходимо создать новое отношение и атрибуты, которые не входят в первичный ключ вместе с копией детерминанта поместить в новое отношение.
f2: Клиент (N_клиента , ФИО_клиента)
f1: Аренда (N_клиента, N_объекта, Нач_аренды, Кон_аренды)
f3 : Владелец объектов (N_объекта, Адрес, Стоимость, N_владельца, ФИО_владельца)
6. 3-я нормальная форма
Если имеет место
A ->B
B->C
то говорят, что атрибут C транзитивно зависит от A через атрибут B, при условии, что атрибут A функционально не зависит ни от атрибута B, ни от атрибута C.
N_сотрудника -> N_отдела
N_отдела -> N_адреса_отдела
Отношение удовлетворяет 3-ей НФ, если оно находиться во 2-ой НФ, и не имеет атрибутов для входящих в первичный ключ, которые бы транзитивно зависли от этого ключа. Если в отношение существует транзитивная зависимость, то она исключается из отношения, образуя новое отношение, которое помещается в зависимые атрибуты в месте с копией детерминанта.
Объекты (N_объекта, Адрес, Стоимость, N_владельца)
Владельцы (N_владельца, ФИО_владельца)
Т.о. общую схему декомпозиции отношения «Клиент_Аренда» мы можем представить следующим образом:
Процесс нормализации отношения заключается в декомпозиции отношения посредством выполнения последовательных операций в проекции. Полученное отношение можно соединить без потерь и вернуться к исходному отношению. Текущую процедуру называют без проигрышной или неаддитивной.