- •2. Реляционная модель данных
- •2.1. Определения и понятия
- •2.2. Первичные ключи и индексы
- •2.3. Реляционные отношения между таблицами
- •2.3.1. Отношение один-ко-многим
- •2.3.2. Отношение один-к-одному
- •2.3.3. Отношение многие-ко-многим
- •2.3.4. Связи между записями одной таблицы
- •2.4. Ссылочная целостность
- •2.5. Индексы
- •Упражнения и задачи
- •3. Нормализация отношений
- •3.1. Первая нормальная форма
- •3.2. Функциональные зависимости и детерминанты
- •3.3. Вторая нормальная форма
- •3.4. Третья нормальная форма
- •3.5. Нормальная форма Бойса-Кодда (нфбк)
- •3.6. Нормализация за и против
- •Контрольные вопросы
- •Упражнения и задачи
- •4. Операции с данными в реляционной модели
- •4.1. Объединение
- •4.2. Пересечение
- •4.3. Вычитание
- •4.4. Декартово произведение
- •4.5. Выбор
- •4.6. Проекция
- •4.7. Соединение
- •4.8. Деление
- •Упражнения и задачи
- •5. Запросы к бд
- •5.1. Простые запросы
- •5.2. Многотабличные запросы
- •5.3. Подзапросы
- •6. Сетевая модель данных
- •6.1. Исторический контекст
- •6.2. Основные понятия и определения
- •Торговый-агент
- •Строка-элемент
- •6.3. Преимущества и недостатки сетевых моделей
- •Упражнения и задачи
- •7. Иерархическая модель данных
- •7.1. Основные понятия и определения
- •7.2. Преимущества и недостатки иерархических моделей
- •Упражнения и задачи
- •Часть 2. Управление окружением базы данных
- •1. Администрирование баз данных
- •1.1. Функции абд
- •1.1.1. Работа с пользователями
- •1.1.2. Установление стандартов и процедур
- •1.2. Задачи абд
- •2. Защита базы данных
- •2.1. Идентификация пользователя
- •2.2. Проверка полномочий и представления данных
- •2.3. Шифровка
- •Метод поалфавитной подстановки
- •2.4. Секретность данных
- •4. Целостность данных
- •4.1. Контроль типов
- •4.2. Контроль изменений
- •4.3. Целостность на уровне ссылок
- •5. Параллельная работа с бд
- •5.1. Обработка транзакций
- •5.2. Параллельная работа с бд
- •Литература
3.6. Нормализация за и против
Нормализация таблиц БД призвана устранить из них избыточную информацию. Как видно из приведенных выше примеров, таблицы нормализованной БД содержат только один элемент избыточных данных - это поля связи, присутствующие одновременно у родительской и дочерних таблиц. Поскольку избыточные данные в таблицах не хранятся, экономится дисковое пространство.
Рис.3.20. Нормализованная база данных
Однако у нормализованной БД есть и недостатки, прежде всего практического характера. Чем шире число сущностей, охватываемых предметной областью, тем из большего числа таблиц будет состоять нормализованная БД. Базы данных в составе больших систем, управляющих жизнедеятельностью крупных организаций и предприятий, могут содержать сотни связанных между собою таблиц. Поскольку порог человеческого восприятия не позволяет одновременно анализировать большое число объектов с учетом их взаимосвязей, можно утверждать, что с увеличением числа нормализованных таблиц уменьшается целостное восприятие базы данных как системы взаимосвязанных данных. Поэтому при разработке и эксплуатации крупных систем нередки ситуации, когда каждый сотрудник представляет себе процессы, протекающие только в части системы. Известны случаи эволюционного создания таких систем, принципы функционирования которых впоследствии признавались вышедшими за границы понимания.
Другим недостатком нормализованной БД является необходимость считывать связанные данные из нескольких таблиц при выполнении одного запроса. Например, пусть для рассмотренной выше БД требуется выдать отчет, в котором для каждой накладной указан покупатель и его реквизиты (город и адрес). Для этого необходимо каждую запись в таблице «Накладные» объединить по названию покупателя (поле связи) с соответствующей записью из таблицы «Покупатели». Операции такого объединения подразумевают поиск и позиционирование в таблице «Покупатели» и могут выполняться достаточно медленно, особенно когда одна из таблиц имеет большой объем, данные в базе данных и на диске фрагментированы и т.д. Замечено, что ненормализованные или не вполне нормализованные данные отыскиваются быстрее, если они хранятся в одной таблице, по сравнению со случаем поиска данных в одной или более связанных таблицах. Подобное ускорение тем заметнее, чем больше число записей в связанных таблицах.
Таким образом, при работе с данными большого объема приходится искать компромисс между требованиями нормализации (то есть логичности данных и экономии места на носителях информации) и необходимостью улучшения быстродействия системы.
Контрольные вопросы
Объясните своими словами смысл терминов:
Нормализация.
Избыточность данных.
Аномалия обновления.
Аномалия ввода.
Атомарное значение.
Нормальная форма Бойса-Кодда.
2. Объясните, почему нежелательны таблицы, не подчиняющиеся второй или третьей нормальной форме.
Упражнения и задачи
Установите соответствие между терминами и объяснениями к ним:
Нормализация отношения
повторение данных в базе данных.
Избыточность данных
процесс приведения реляционных таблиц к стандартному виду
Целостность данных
противоречивость данных, вызванная их избыточностью и частичным обновлением
Аномалия обновления
согласованность данных в базе даных.
Аномалия ввода
непреднамеренная потеря данных, вызванная удалением других данных
Первая нормальная форма (1НФ)
невозможность ввести данные в таблицу, вызванная отсутствием других данных
Транзитивная зависимость
значение атрибута в кортеже однозначно определяет значение другого атрибута в кортеже.
Функциональная зависимость
все неключевые атрибуты являются функционально зависимыми от всего ключа
Третья нормальная форма 3НФ
значения в таблице являются атомарными для каждого атрибута таблицы
Вторая нормальная форма (2НФ)
нет транзитивных зависимостей между атрибутами
Аномалия удаления
неключевой атрибут функционально зависит от одного или более неключевых атрибутов
Для объектов и атрибутов, определенных в упражнении к предыдущему разделу, построить реляционную базу данных в 3НФ.