
- •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. Нормализация отношений
Нормализация отношения - процесс приведения реляционных таблиц к стандартному виду.
Рассмотрим реляционную таблицу на рис. 3.1. После небольшого анализа видно, что реляционная таблица на рис. 3.1 спроектирована неудачно. Например, в четырех кортежах, соответствующих рабочему 1412, повторяется одно и то же имя и информация о типе специальности. Эта избыточность данных или повторение приводит не только к потере лишнего места; она может вызвать нарушениецелостности данных(противоречивость) в базе данных.
Избыточность данных - повторение данных в базе данных.
Целостность данных -согласованность данных в базе данных.
Таблица 3.1. «Работник»
№ работника |
Фамилия |
Специальность |
№ менеджера |
№ здания |
1235 |
Петров |
Электрик |
1311 |
312 |
1235 |
Петров |
Электрик |
1311 |
515 |
1412 |
Смирнов |
Штукатур |
|
312 |
1412 |
Смирнов |
Штукатур |
|
460 |
1412 |
Смирнов |
Штукатур |
|
435 |
1412 |
Смирнов |
Штукатур |
|
515 |
1311 |
Васильев |
Электрик |
|
435 |
Проблема возникает из-за того, что один и тот же работник может работать более, чем на одном здании. Предположим, что специальность Смирнова была указана неправильно, а исправление было внесено только в первый кортеж. Тогда между кортежами, содержащими информацию о Смирнове, возникает несоответствие, которое называется аномалией обновления.
Аномалия обновления - противоречивость данных, вызванная их избыточностью и частичным обновлением.
Теперь предположим, что Смирнов в течение трех месяцев был на больничном и все здания, на которых он был назначен работать, уже закончены. Если принимается решение удалить все строки о законченных зданиях из таблицы, то информация о Смирнове, его специальности будет потеряна. Это называется аномалией удаления.Обратный случай: мы могли нанять нового работника по фамилии Сидоров, которого еще не успели назначить ни на какое здание. Если мы не допускаем пустых значений, то не можем ввести информацию о Сидорове в базу данных. Это называетсяаномалией ввода.
Аномалия удаления - непреднамеренная потеря данных, вызванная удалением других данных.
Аномалия ввода - невозможность ввести данные в таблицу, вызванная отсутствием других данных.
Аномалии обновления, удаления и ввода, очевидно, нежелательны. Чтобы предотвратить или хотя бы свести к минимуму подобные проблемы нужно воспользоваться нормальными формами или правилами структурирования таблиц.
3.1. Первая нормальная форма
Реляционная таблица находится в первой нормальной форме (1НФ), если значения в таблице являются атомарными для каждого атрибута таблицы.
Атомарное значение - значение, не являющееся множеством значений или повторяющейся группой.
Любая реляционная таблица находится в 1НФ. Для того чтобы пояснить понятие, рассмотрим пример таблицы 3.2, не удовлетворяющей этому условию.
Таблица 3.2. «Работник»
№ работ. |
Фамилия |
Специальность |
№ менеджера |
№ здания |
1235 |
Петров |
Электрик |
1311 |
{312,515} |
1412 |
Смирнов |
Штукатур |
|
{312,460,435,515} |
1311 |
Васильев |
Электрик |
|
435 |
Значение атрибута № здания– это множество зданий, на которых работает данный человек. Предположим, что мы хотим получить список рабочих, отделывающих здание 435. Извлечь эту информацию может оказаться непросто, так как идентификатор нужного нам значения запрятан внутри множества в кортеже. Реляционная таблица 3.2 не соответствует 1НФ, так как значения атрибута№ зданияне являются атомарными. Однако таблица 3.1 имеет 1НФ, так как нужное нам значение, то есть номер конкретного здания, может быть выбрано путем простой ссылки на имя атрибута № здания.