
- •Базы данных
- •Введение
- •Часть 1. Проектирование баз данных
- •1.1. Некоторые понятия и определения
- •1. 2. Модели данных
- •1.2.1. Иерархическая модель данных
- •1.2.2. Сетевая модель данных
- •1.2.3. Реляционная модель данных Основные определения
- •Типы связей между отношениями
- •1.3. Классификация баз данных
- •1.4. Цели проектирования баз данных
- •1.5. Проектирование баз данных с использованием универсального отношения
- •1.5.1. Универсальное отношение
- •1.5.2. Проблемы, вызываемые использованием универсального отношения
- •Проблема вставки
- •Проблемы обновления
- •Проблемы удаления
- •1.5.3. Нормальная форма Бойса -Кодда
- •Функциональные зависимости
- •Возможный ключ и детерминант
- •Общий подход к декомпозиции
- •Анализ исходных аномалий
- •1.5.4. Возможные потери фз при декомпозиции
- •1.5.5. Избыточные функциональные зависимости
- •Приемы удаления избыточных фз
- •Минимальное покрытие
- •Модернизированный алгоритм проектирования бд
- •1.6. Метод er - проектирования
- •1.6.1. Сущности и связи
- •1.6.2. Степень связи
- •1.6.3. Переход от диаграмм er – типа к отношениям
- •Предварительные отношения для бинарных связей степени 1:1
- •Предварительные отношения для бинарных связей степени 1:n.
- •Предварительные отношения для бинарных связей степени n:m
- •1.6.4. Дополнительные конструкции, используемые в er - методе
- •Необходимость связей более высокого порядка
- •Предварительные отношения для трехсторонних связей
- •Использование ролей
- •1.6.5. Последовательность проектирования бд при использовании er- метода
- •1.6.6. Проверка отношений на завершающейся фазе проектирования
- •1.7. Другие нормальные формы
- •1.8. Контрольные вопросы
- •Часть 2. Специальные аспекты работы с базами данных
- •2.1. Защита данных в базе
- •2.2.1. Общие вопросы защиты данных
- •2.2.2. Реализация защиты данных в различных системах
- •Управление доступом в sql
- •Реализация системы защиты в ms sql Server
- •2.2. Обеспечение целостности данных
- •2.3. Организация параллельных процессов обработки данных
- •2.4. Восстановление бд
- •2.4.1. Уровни восстановления.
- •2.4.2. Восстановление и логический элемент работы
- •Требования к лэр
- •2.4.3. Промежуточное восстановление
- •2.4.4. Длительное восстановление
- •2.5. Математический аппарат, используемый при работе с реляционной базой данных
- •2.5.1. Теоретико-множественные операции реляционной алгебры
- •2.5.2. Специальные операции реляционной алгебры
- •2.6. Контрольные вопросы
- •Часть 3. Разработка приложений для работы с базами данных
- •3.1. Краткий обзор субд
- •3.2. Субд Access
- •3.2.1. Вводные замечания
- •3.2.2. Создание базы данных
- •3.2.3. Создание и работа с таблицами
- •3.2.4. Работа с запросами
- •3.2.5. Создание форм
- •3.2.6. Отчеты в Access
- •3.2.7. Макросы в Access
- •Преобразование макросов в программы на Visual Basic
- •3.2.8. Работа с внешними данными
- •3.3. Программирование в Access
- •3.3.1. Вводные замечания
- •3.3.2. Объявление переменных
- •3.3.3. Константы
- •3.3.4. Тип данных Variant
- •3.3.5. Пользовательские типы данных
- •3.3.5.Операторы, команды и выражения в vba
- •3.3.7. Процедуры vba
- •3.3.8. Управляющие структуры в vba
- •Работа с управляющими структурами
- •3.3.9. Объекты в Access
- •3.3.10. Классы в Access
- •3.3.11. Работа с ошибками в vba
- •3.4.Работа в ms sql –Server
- •3.4.1. Основные количественные показатели системы sql-сервер
- •3.4.2. Создание баз данных
- •3.4.3. Создание таблицы
- •3.4.4. Извлечение данных
- •3.4.5. Добавление данных
- •3.4.6. Изменение данных
- •3.4.7. Удаление данных
- •3.5. Контрольные вопросы
- •Цитированная литература
- •Оглавление
- •Часть 1. Проектирование баз данных 3
- •Часть 2. Специальные аспекты работы с базами данных 71
- •Часть 3. Разработка приложений для работы с базами данных 114
1.7. Другие нормальные формы
Существует 6 нормальных форм, в которых может находится отношение: первая (1НФ), вторая (2НФ), третья (3НФ), НФБК, четвертая (4НФ) и пятая (5НФ). О первой нормальной и НФБК мы уже говорили. Следует отметить, что если отношение находится в N - форме, то оно находится во всех формах до N-1.
Таким образом, если отношение находится в НФБК, то оно находится и в 1НФ и во 2НФ и в НФБК. Однако для полноты картины рассмотрим 2НФ и 3НФ.
Отношение находится во второй нормальной форме тогда, когда оно находится в первой нормальной форме и не содержит неполных функциональных зависимостей не первичных атрибутов от атрибутов первичного ключа.
Рассмотрим отношение, моделирующее сдачу текущей сессии студентами, живущими в общежитии.
R(Сном, Сфам, Кном, Тном, Дисциплина, Оценка).
Здесь первичным ключом являются атрибуты <Сном, Дисциплина>, а атрибуты Сфам, Кном и Тном зависят только от части первичного ключа Сном, т.е. в данном случае в отношении имеется неполная ФЗ. Для приведения данного отношения ко второй нормальной форме необходимо разбить его на два отношения : R1(Сном, Сфам, Кном, Тном) и R2(Сном, Дисциплина, Оценка).
В исходном отношении R присутствуют те аномалии, о которых мы говорили ранее. В полученном наборе отношений аномалии вставки и удаления отсутствуют, но присутствует аномалия обновления.
Отношение находится в третьей нормальной форме тогда, когда оно находится во второй нормальной форме и не содержит транзитивных зависимостей.
Рассмотрим полученное в предыдущем примере отношение R1(Сном, Сфам, Кном, Тном). Это отношение находится во второй нормальной форме, однако в нем имеется транзитивная зависимость Сном -> Тном.
Для приведения этого отношения к третьей нормальной форме необходимо его разбить на два отношения R3(Сном, Сфам, Кном) и R4(Сном, Тном). При таком представлении отношений аномалия обновления не исчезла.
Рассмотрим 4НФ и 5НФ.
Ранее рассматривались случаи ФЗ, когда каждому значению детерминанта соответствовало только одно значение зависимого от него атрибута. Однако на практике можно встретить случаи, когда одному значению некоторого атрибута соответствует устойчиво постоянное множество значений другого атрибута.
Рассмотрим конкретную ситуацию. Пусть дано отношение, которое моделирует предстоящую сдачу экзаменов в сессии. Допустим оно имеет вид: R(Группа, Сном, Дисциплина).
Перечень дисциплин, которые должен сдавать студент, однозначно определяется не его номером, а номером группы (т. е. специальностью, на которой он учится).
R
Группа |
Сном |
Дисциплина |
1409 |
111 |
БД |
1409 |
111 |
АПП |
… |
… |
… |
1409 |
112 |
БД |
1409 |
112 |
АПП |
… |
… |
… |
1410 |
222 |
БД |
1410 |
222 |
АПП |
…. |
… |
… |
1410 |
223 |
БД |
1410 |
223 |
АПП |
… |
… |
… |
В данном отношении существуют две многозначные зависимости: Группа ->> Сном и Группа ->> Дисциплина.
Это означает, что каждой группе однозначно соответствует перечень дисциплин по учебному плану и номер группы определяет список студентов, которые в этой группе учатся.
Если в БД использовать отношение R, то в нее нельзя поместить информацию о новой группе и ее учебном плане – перечне дисциплин, которые должна пройти группа до тех пор, пока в нее не будут зачислены студенты. При изменении перечня дисциплин по учебному плану, например, при добавлении новой дисциплины, внести эти изменения в отношение для всех студентов, занимающихся в данной группе, весьма затруднительно. С другой стороны, если необходимо добавить студента в уже существующую группу, то потребуется добавить множество кортежей, соответствующих перечню дисциплин для данной группы. Наконец, если нужно изменить название дисциплины, то это необходимо сделать для каждого студента. Такая же ситуация будет иметь место при удалении дисциплины из БД. Эти аномалии модификации отношений как раз и связаны с наличием многозначных зависимостей.
В общем случае в отношении R( А, В, С) существует многозначная зависимость А ->> В в том случае, когда существует многозначная зависимость А ->>С.
Дальнейшая нормализация отношения, подобного рассматриваемому, основывается на теореме Фейджина.
Отношение R(А, В, С) можно спроецировать без потерь в отношение R1(А, В) и R2(А, С) в том случае, когда существует многозначная зависимость А ->> В|C (что равнозначно наличию двух зависимостей А ->> В и А ->>С).
Под проецированием без потерь понимается такой способ декомпозиции отношения путем применения операции проекции, при котором исходное отношение полностью и без избыточности восстанавливается путем естественного соединения полученных отношений.
Отношение R находится в четвертой нормальной форме в том случае, если в случае существования многозначной зависимости А ->> В все остальные атрибуты R функционально зависят от А.
В рассмотренном примере можно произвести декомпозицию исходного отношения в два отношения: R1( Группа, Сном) и R2(Группа, Дисциплина)
R1 R2
Группа |
Сном |
|
Группа |
Дисциплина |
1409 |
111 |
1409 |
БД | |
1409 |
112 |
1409 |
АПП | |
… |
… |
… |
… | |
1410 |
222 |
1410 |
БД | |
1410 |
223 |
1410 |
АПП | |
… |
… |
… |
… |
Оба эти отношения находятся в 4НФ и свободны от отмеченных аномалий. Операции модификации теперь упрощаются: добавление нового студента связано с добавлением всего одного кортежа в отношение R1, а добавление новой дисциплины выливается в добавление по одному кортежу для каждой группы специальности в отношение R2. Кроме того, в отношении R2 можно хранить любое количество групп с определенным перечнем дисциплин, в которые пока еще не зачислены студенты. Наконец, если нужно изменить название дисциплины или удалить определенную дисциплину, то это нужно сделать несколько раз по числу групп специальности, в отличии от исходного случая, когда это нужно было делать по каждому студенту.
Последней нормальной формой является пятая нормальная форма, которая связана с анализом нового вида зависимостей, зависимостей «проекция соединения» (project – join зависимости, обозначаемые как PJ – зависимости).
5НФ редко используется на практике. В большой степени она является теоретическим исследованием. Очень тяжело определить само наличие зависимостей «проекция соединения», потому что утверждение о наличии такой зависимости делается для всех возможных состояний БД, а не только для текущего экземпляра отношения R. Однако знание о возможном наличии подобных зависимостей, даже теоретически, необходимо.