
- •Оглавление
- •Раздел 4. Проектирование реляционных баз данных. 113
- •Раздел 5. Определение структур данных и обслуживание баз данных. 114
- •Введение
- •Раздел 1. Основы теории баз данных Тема 1: Базы данных и информационные системы. Основные понятия.
- •Понятия базы данных и информационные системы.
- •Архитектура информационной системы.
- •Понятия базы данных и информационные системы.
- •Архитектура информационной системы.
- •Тема 2: Банки данных. Системы управления базами данных.
- •Банки данных. Основные компоненты системы.
- •Классификация субд.
- •Банки данных. Основные компоненты системы.
- •Классификация субд.
- •Раздел 2. Реляционная алгебра Тема1: Реляционная алгебра. Классические операции теории множеств.
- •Тема 2: Специальные операции теории множеств.
- •Раздел 3. Модели данных. Тема 1: Классические модели данных.
- •Сетевая модель представления данных.
- •Реляционная модель представления данных.
- •Элементы реляционной модели
- •Тема 2: Связывание таблиц. Целостность связей.
- •Основные виды связи таблиц.
- •Контроль целостности связей.
- •Характеристика видов связей
- •Раздел 4. Проектирование реляционных баз данных. Тема 1: Основные принципы проектирования баз данных.
- •2. Избыточное дублирование данных и аномалии
- •3. Формирование исходного отношения.
- •Тема 2: Метод нормальных форм
- •2. Выявление зависимостей между атрибутами
- •3. Нормальные формы
- •Тема 3: Метод сущность-связь. Этапы проектирования.
- •2.Этапы проектирования
- •3.Пример проектирования бд учебной части.
- •Тема 4: Правила формирования отношений.
- •2. Формирование отношений для связи 1:м
- •3. Формирование отношений для связи м:м
- •Раздел 5. Определение структур данных и обслуживание баз данных. Тема 1: Среда sql*Plus.
- •Функции.
- •2. Основные типы данных
- •3. Арифметические выражения
- •4. Операторы сравнения
- •5. Обработка неопределенных значений
- •6. Функции
- •7. Форматные модели
- •Тема 2: Структуры данных. Создание таблиц.
- •Создание таблиц.
- •3. Создание таблиц
- •Тема 3: Изменение таблиц и ограничений
- •Добавление и изменение столбца.
- •Изменение ограничений.
- •Удаление таблицы. Изменение имени таблицы и добавление комментариев.
- •Тема 4: Операции с ограничениями.
- •Тема 5: Манипулирование данными.
- •1. Вставка новых строк в таблицу
- •2. Копирование строк из другой таблицы
- •3. Обновление строк в таблице
- •4. Удаление строк из таблицы
- •Тема 6: Команда запроса данных. Простой запрос.
- •Тема 7: Сложные запросы.
- •Использование функций для работы с датами при организации запроса.
- •Тема 8: Группировка строк в запросе
- •2. Группы внутри групп.
- •3. Предложение having.
- •Тема 9: Подзапросы.
- •Подзапрос. Его назначение и синтаксис.
- •Однострочные и многострочные подзапросы.
- •Подзапрос. Его назначение и синтаксис.
- •2.Однострочные и многострочные подзапросы.
- •Тема 10: Выборка данных из нескольких таблиц.
- •2. Псевдонимы таблиц.
- •3. Дополнительные условия поиска.
- •4. Внешние соединения.
- •Select таблица.Столбец, таблица.Столбец
- •Тема 11: Создание, изменение и удаление последовательностей.
- •Создание последовательности.
- •2. Изменение и удаление последовательности.
- •3. Генерация значений последовательности.
- •Тема 12: Создание, изменение и удаление представлений.
- •Представления. Создание представлений.
- •Изменение и удаление представлений.
- •Представления. Создание представлений.
- •Изменение и удаление представлений.
- •Тема 13: «Индексы»
- •Понятие индекса. Необходимость использования.
- •Создание и удаление индексов.
- •1. Понятие индекса. Необходимость использования.
- •2. Создание и удаление индексов.
- •Тема 14: «Создание отчетов»
- •2. Форматирование number колонок.
- •3. Оформление Отчета пробелами и итоговыми строками.
- •4. Вычисление итоговых строк при изменении значения колонки.
- •5. Определение заголовков.
- •6. Установка размеров страницы
- •7. Сохранение и Печать Результатов Запроса
- •Тема 15: Управление транзакциями
- •Практикум Раздел 3. Реляционная алгебра.
- •Раздел 4. Проектирование реляционных баз данных.
- •Раздел 5. Определение структур данных и обслуживание баз данных.
- •Библиографический список
2. Выявление зависимостей между атрибутами
Выявление зависимостей между атрибутами необходимо для выполнения проектирования БД методом нормальных форм.
Выявим зависимости между атрибутами отношения ПРЕПОДАВАТЕЛЬ (рис.1.), приведенного на рисунке. При этом учтем следующее условие, которое выполняется в данном отношении: один преподаватель в одной группе может проводить один вид занятий.
а
Оклад
)
ФИО→Оклад
ФИО→Должн.
ФИО→Стаж
Ф
Д_Стажжж
ФИО→Каф
Стаж→Д.Стаж
Должн→Оклад
Оклад→Должн
ФИО, Предм. Группа→ВидЗан
Рис.1. Зависимости между атрибутами
Нами не были выделены зависимости между атрибутами ФИО, Предм. и Группа, поскольку они образуют составной ключ и не учитываются в процессе нормализации исходного отношения.
3. Нормальные формы
Процесс проектирования БД с использованием метода нормальных форм является итерациональным и заключается в последовательном переводе отношений из первой нормальной формы в нормальные формы более высокого порядка по определенным правилам. Каждая следующая нормальная форма ограничивает определенный тип функциональных зависимостей, устраняет соответствующие аномалии при выполнении операций над отношениями БД и сохраняет свойства предшествующих нормальных форм.
Выделяют следующую последовательность нормальных форм:
первая нормальная форма (1НФ);
вторая нормальная форма (2РФ);
третья нормальная форма (3НФ);
усиленная третья нормальная форма, или нормальная форма Бойса-Кодда (БКНФ);
четвертая нормальная форма (4НФ);
пятая нормальная форма (5НФ).
А) Первая нормальная форма.
Отношение находится в 1НФ, если все его атрибуты являются простыми (имеют единственное значение). Исходное отношение строится таким образом, чтобы оно было в 1НФ.
Перевод отношения в следующую нормальную форму осуществляется методом «декомпозиции без потерь»
Основной операцией метода является операция проекции. Поясним ее на примере.
Исходное отношение ПРЕПОДАВАТЕЛЬ, используемое для иллюстрации метода, имеет составной ключ ФИО, Предм., Группа и находится в 1НФ, поскольку все его атрибуты простые.
В этом отношении в соответствии с Рис.1 можно выделить частичную зависимость атрибутов Стаж, Д_стаж, Каф, Должн, оклад от ключа – атрибута ФИО, являющегося частью составного ключа. Эта частичная зависимость приводит к следующему:
- В отношении есть явное и неявное избыточное дублирование данных (повторений сведений о стаже, должности, окладе).
- Существует проблема редактирования данных (изменение должности Иванова потребует просмотра всех кортежей отношения и внесения изменений в те из них, которые содержат сведения о нем.)
Часть избыточности устраняется при переводе отношения во 2НФ.
Б) Вторая нормальная форма.
Отношение находится в 2НФ, если оно находится в 1НФ и каждый неключевой атрибут функционально полно зависит от первичного ключа (составного).
Для устранения частичной зависимости и перевода отношения в 2НФ необходимо, используя операцию проекции, разложить его на несколько отношений следующим образом (рис.2.):
построить проекцию без атрибутов, находящихся в частичной функциональной зависимости от первичного ключа;
построить проекции на части составного первичного ключа и атрибуты, зависящие от этих частей.
R1
ФИО |
Предм |
Группа |
ВидЗан |
Иванов И.М. |
СУБД |
256 |
Практ |
Иванов И.М. |
ПЛ/1 |
123 |
П
ВидЗан |
Петров М.И. |
СУБД |
256 |
Лекция |
Петров М.И. |
Паскаль |
256 |
Практ |
Сидоров Н.Г. |
ПЛ/1 |
123 |
Лекция |
Сидоров Н.Г. |
Паскаль |
256 |
Лекция |
Егоров В.В. |
ПЭВМ |
244 |
Л
Оклад |
R2
ФИО |
Долж |
Оклад |
Стаж |
Д_Стаж |
К |
Иванов И.М. |
Преп. |
500 |
5 |
100 |
25 |
Петров М.И. |
Ст.преп |
800 |
7 |
100 |
25 |
Сидоров Н.Г. |
Преп. |
500 |
10 |
150 |
25 |
Егоров В.В. |
Преп |
500 |
5 |
100 |
24 |
Рис.2. Отношения во 2 нормальной форме
Исследование отношений R1 и R2 показывает, что переход к 2НФ позволил исключить явную избыточность данных в таблице R2 – повторение строк со сведениями о преподавателях. В R2 по–прежнему имеет место неявное дублирование данных.
Для дальнейшего совершенствования отношения необходимо преобразовать его в 3НФ.
В) Третья нормальная форма.
Отношение находится в 3НФ, если оно находится в 2НФ и каждый неключевой атрибут нетранзитивно зависит от первичного ключа.
Если в отношении R1 транзитивные зависимости отсутствуют, то в отношении R2 они есть:
ФИО→Долж→Оклад,
ФИО→Оклад→Должн,
ФИО→Стаж→Д_Стаж
Транзитивные зависимости также порождают избыточное дублирование информации в отношении. Устраним их. Для этого используя операцию проекции на атрибуты, являющиеся причиной транзитивных зависимостей, преобразуем отношение R2, получив при этом отношения, которые представлены в 3НФ (рис.3.)
R3
ФИО |
Должн |
Стаж |
Каф |
Иванов И.М. |
Преп |
5 |
25 |
Петров М.И. |
Ст.преп |
7 |
25 |
Сидоров Н.Г. |
Преп |
10 |
25 |
Егоров В.В. |
Преп |
5 |
24 |
R4
Должн |
О |
Преп |
500 |
Ст.преп |
800 |
R5
Стаж |
Д_Стаж |
5 |
1 |
7 |
100 |
10 |
150 |
Рис.3. Отношения в 3 нормальной форме
Если в отношении имеется зависимость атрибутов составного ключа от неключевых атрибутов, то необходимо перейти к усиленной 3НФ (нормальной форме Бойса-Кодда).
На практике обычно ограничиваются структурой БД, соответствующей 3НФ или БКНФ.