- •Введение
- •1. Концепция информационных систем
- •1.1. Информация и данные предметных областей
- •1.2. Структура банка данных
- •1.2.1. База данных
- •1.2.2. Система управления базами данных
- •1.2.3. Словарь данных
- •1.2.4. Администратор базы данных и его функции
- •1.3. Контрольные вопросы
- •2. Инфомационное моделирование предметных областей для баз данных
- •2.1. Отображение явлений реального мира данными
- •2.2. Инфологическое моделирование по
- •2.3. Трехуровневое представление информационных объектов
- •2.4. Структурные элементы для моделирования данных
- •2.5. Ключи бд
- •2.6. Интеграция полей бд в отношения
- •2.7. Требования интеграции полей в отношения
- •2.8. Обобщенная структура модели данных в бнд
- •2.9. Er-модель бд
- •2.10. Формирование связей сущностей
- •Способ 1. Определение связи сущностей введением дополнительной сущности
- •Способ 2. Определение связей сущностей добавлением в тип сущности общих атрибутов
- •2.11. Бинарные отношения сущностей
- •2.12. Формы представления структур данных
- •2.13. Организация систем бд
- •2.14. Средства поддержки бд
- •2.15. Виды моделей данных для бд
- •Иерархическая модель данных
- •Сетевая модель данных
- •Реляционная модель данных
- •Контрольные вопросы
- •3. Системы управления базами данных
- •3.1. Функции и состав универсальной субд
- •3.2. Лингвистическое обеспечение субд
- •3.3. Независимость прикладных программ от данных
- •3.4. Операции над данными
- •Селекция данных
- •Обработка данных
- •Запросы к бд
- •3.5. Схема реализации запроса в БнД
- •Распределенная обработка данных
- •Комбинированная обработка данных
- •3.7. Целостность и ограничения целостности данных
- •3.8. Защита данных в бд
- •Контрольные вопросы
- •4.2.2. Вторичный ключ
- •4.3. Функциональные и многозначные зависимости
- •4.3.1. Функциональные зависимости
- •X y (X влечет y).
- •4.3.2. Аксиомы функциональных зависимостей
- •Контрольные вопросы
- •5. Реляционная алгебра
- •5.1. Операции над отношениями
- •5.2. Оператор "объединение" (union)
- •5.3. Оператор "вычитание" (difference)
- •5.4. Оператор "пересечение" (intersection)
- •5.5. Оператор "проектирование" (proj)
- •5.6. Оператор "выбор" (sel)
- •Комбинированный запрос с операторами proj и sel
- •5.7 Оператор "соединение" (join)
- •Запрос с соединением по одному полю
- •Алгоритм реализации
- •Запрос с соединением по нескольким полям
- •Алгоритм реализации
- •Оператор "соединение по условию"
- •5.8. Оператор "умножение" (product)
- •Запрос с оператором умножения
- •Алгоритм реализации
- •5.9. Оператор "деление" (division)
- •5.10. Оптимизация алгоритмов реализации запросов
- •Контрольные вопросы
- •6. Нормализация реляционных бд
- •6.1. Задачи нормализации Бд
- •6.2. Первая нормальная форма
- •6.3. Декомпозиция реляционных таблиц
- •Проблема дублирования, операторы реляционной алгебры для декомпозиции и объединения таблиц
- •Присоединенные записи
- •Теорема Хита
- •Критерий полной декомпозиции с исключением дублирования
- •6.4. Вторая нормальная форма
- •6.5. Третья нормальная форма
- •6.6. Экстранормализационные формы
- •Нормальная форма Бокса-Кодда
- •Четвертая нормальная форма
- •Пятая нормальная форма
- •6.7. Методические аспекты реализации нормализации
- •Контрольные вопросы
6.5. Третья нормальная форма
Отношение в 2НФ в случае наличия в нем транзитивных зависимостей может приводить к различным аномалиям.
Рассмотрим отношение R с тремя типами атрибутов или тремя наборами типов атрибутов, для которых имеет место транзитивная зависимость. Обозначим эти наборы соответственно через С1, С2 и С3.
Тогда свойство транзитивной зависимости можно представить соотношениями
С1 C2, С2 С3 и С1 С3.
При этом отметим, что обратное соответствие неоднозначно, т.е. С1 не зависит от С2 или С2 не зависит от С3.
Диаграмму транзитивной зависимости для рассматриваемого случая отражает Рис. 0 .36,а.
Для ликвидации возможных аномалий из-за транзитивной зависимости необходимо исключить эти зависимости. С этой целью необходимо произвести декомпозицию исходного отношения для его преобразования таким образом из 2НФ в третью нормальную форму (3НФ).
Отношение R задано в третьей нормальной форме (3НФ), когда оно задано в 2НФ и каждый непервичный атрибут из отношения R нетранзитивно зависит от любого из ключей-кандидатов.
С1 C1 C2
С2C2 C3
С3
a) б)
Рис. 0.36
Для отношения R, имеющего лишь один ключ и не имеющего многозначных зависимостей, представление в 3НФ ликвидирует избыточность и исключает аномалии выполнения операций включения, удаления и модификации.
Пример.
В отношении
Служащий(№Служащего, ФИО, ЗПлата, №Проекта, ДатаОкончания),
а1 а2 а3 а4 а5
в котором каждый служащий занят лишь в одном проекте, атрибут а5 зависит от атрибута а4, который, в свою очередь, зависит от первичного атрибута а1. Следовательно, атрибут а5 транзитивно зависит от первичного атрибута а1, являющегося ключом. Эта транзитивная зависимость приводит к следующим аномалиям:
до момента привлечения хотя бы одного конкретного служащего к выполнению данного проекта нет возможности записывать значения полей №Проекта и ДатаОкончания, хотя эти реквизиты не зависят от конкретного служащего;
в случае снятия всех служащих с выполнения данного проекта (например, при его передаче в другую бригаду) в БД уничтожается информация в полях №Проекта и ДатаОкончания;
при изменении значения поля ДатаОкончания проекта необходим поиск всех записей, содержащих эту дату, и их корректировка.
С целью перевода отношения в 3НФ для ликвидации транзитивной зависимости в исходном отношении требуется декомпозиция этого отношения на два новых отношения:
Служащий (№Служащего, ФИО , ЗПлата, №Проекта)
и
Проект (№Проекта, ДатаОкончания).
Полученная пара отношений, функциональные зависимости для которых приведены на Рис. 0 .37, в отличие от исходного отношения не содержит транзитивных и неполных зависимостей. Теперь информация о проекте не зависит от информации о служащих, что и естественно, поскольку поле ДатаОкончания относится к Проекту, а не к Служащему как это и отображено на Рис. 0 .37,б.
Из изложенного можно сделать вывод, что отношение в ЗНФ является для АБД средством четкого осмысления предметной области. БД в ЗНФ имеет возможности естественного развития и модификации. Структуризация данных в соответствии с ЗНФ дает простое представление о данных для программистов и пользователей, уменьшает вероятность некорректности выполнения операций.
-
а1
*
а4
*
а2
*
а5
а3
а4
а) б)
Рис. 0.37