- •Информация и данные
- •Основные понятия систем с базами данных
- •Пользователи информационной системы с БД
- •Требования к информационным системам с базами данных
- •Основные компоненты ИС с базами данных
- •Архитектура систем с базами данных. Понятие модели данных
- •Сущности и их свойства
- •Связи (отношения) между сущностями
- •Виды связей между сущностями
- •Еще о сущностях, их свойствах и связях между ними
- •Модели данных. Ранние подходы к организации баз данных
- •Основные понятия реляционной модели данных
- •Структуры данных реляционной модели. Реляционные отношения
- •Свойства отношений
- •Отсутствие в отношении одинаковых кортежей
- •Кортежи отношения не упорядочены (сверху вниз)
- •Атрибуты отношения не упорядочены (слева направо)
- •Значения всех атрибутов являются атомарными
- •Виды отношений
- •Реляционная база данных
- •Реляционная модель. Операции над данными
- •Реляционная алгебра
- •Пересечение отношений
- •Вычитание отношений
- •Декартово произведение отношений
- •Проекция
- •Выборка (ограничение)
- •Естественное соединение отношений
- •Деление
- •Реляционное исчисление
- •Примеры правильно построенных формул
- •Язык SQL
- •Отличие SQL от процедурных языков программирования
- •Формы и составные части SQL
- •Условия и терминология
- •Простейшие SELECT-запросы
- •Ограничения целостности в реляционной модели
- •Ограничения целостности уровня атрибута
- •Домены отношений
- •Отсутствующая информация или NULL-значения.
- •Ограничения целостности уровня кортежа
- •Ограничения целостности уровня отношения
- •Потенциальные, первичные, альтернативные ключи отношения
- •Потенциальные ключи и NULL-значения
- •Ограничения целостности уровня базы данных
- •Внешние ключи и NULL-значения
- •Правила ссылочной целостности
- •При обновлении кортежа в родительском отношении
- •При удалении кортежа в родительском отношении
- •При вставке кортежа в дочернее отношение
- •При обновлении кортежа в дочернем отношении
- •Средства обеспечения целостности данных в СУБД
- •Поддержка декларативных ограничений целостности в языке SQL
- •Проектирование базы данных
- •Функциональная зависимость
- •Нормализация отношений базы данных
- •Нормальные формы
- •Декомпозиция без потерь и функциональные зависимости
- •Первая и вторая нормальные формы.
- •Третья нормальная форма.
- •Многозначные зависимости и четвертая нормальная форма
- •Зависимости соединения и пятая нормальная форма
- •Итоговая схема процедуры нормализации
- •Структуры хранения данных и методы доступа
- •Хранение отношений и доступ к хранимым данным
- •Индексирование
- •Управление транзакциями и целостность баз данных
- •Транзакции и параллелизм
- •Проблемы, возникающие при параллельном выполнении транзакций
- •Проблема потери результатов обновления
- •Проблемы несовместимого анализа
- •Несовместимый анализ – неповторяемое считывание
- •Несовместимый анализ – фиктивные элементы (фантомы)
- •Собственно несовместимый анализ
- •Конфликты между транзакциями
- •Методы сериализации транзакций
- •Решение проблем параллелизма при помощи блокировок
- •Проблема потери результатов обновления
- •Проблема несовместимого анализа. Неповторяемое считывание
- •Фиктивные элементы (фантомы)
- •Собственно несовместимый анализ
- •Уровни изоляции. Объекты синхронизационных блокировок
- •Предикатные синхронизационные блокировки
- •Метод временных меток
- •Уровни изоляции.
- •Синтаксис операторов SQL, определяющих уровни изоляции
133
Видно, что отношение имеет два перекрывающихся составных потенциальных ключа. Этими ключами являются составные атрибуты
{КОД_СТУДЕНТА, ДИСЦИПЛИНА} и {ДИСЦИПЛИНА, НОМЕР_БИЛЕТА}. При этом нетрудно убедиться, что представленное отношение находится в нормальной форме Бойса-Кодда, так как все его детерминанты являются потенциальными ключами.
Данный пример иллюстрирует тот факт, что само по себе наличие перекрывающихся составных потенциальных ключей не является признаком того, что отношение не находится в нормальной форме Бойса-Кодда.
10.7.Многозначные зависимости и четвертая нормальная форма
Рассмотренные в предыдущих разделах преобразования отношений в нормальную форму Бойса-Кодда обеспечивают полное устранение нежелательных проблем, аномалий операций обновления данных INSERT, DELETE и UPDATE, которые обусловлены наличием между атрибутами функциональных зависимостей. Для отношений, в которых имеют место только функциональные зависимости между атрибутами, приведение их к нормальной форме Бойса-Кодда заканчивает процесс их нормализации, так как в этом случае отношение уже оказывается в четвертой и пятой нормальных формах. Проблема, однако, состоит в том, что зависимости между атрибутами не исчерпываются только функциональными зависимостями. В отношениях кроме функциональных могут присутствовать и другие, более сложные виды зависимостей между атрибутами. Так введение рассматриваемой в данном разделе четвертой нормальной формы связано с необходимостью решения проблем, обусловленных наличием в отношении так называемой многозначной зависимости.
Рассмотрим в качестве примера отношение, представленное на рис.10.22.
134
СТУД_КУРС_ДИСЦ
СТУДЕНТ |
КУРС |
ДИСЦИПЛИНА |
Иванов |
1 |
Математика |
Иванов |
1 |
Физика |
Иванов |
1 |
Иностр.язык |
Петров |
1 |
Математика |
Петров |
1 |
Физика |
Петров |
1 |
Иностр.язык |
Сидоров |
1 |
Математика |
Сидоров |
1 |
Физика |
Сидоров |
1 |
Иностр.язык |
Кузнецов |
3 |
Информатика |
Кузнецов |
3 |
История |
Кузнецов |
3 |
Математика |
Попова |
3 |
Информатика |
Попова |
3 |
История |
Попова |
3 |
Математика |
Рис.10.22. Пример отношения с многозначными зависимостями
Хорошо видно, что отношение СТУД_КУРС_ДИСЦ, приведенное на рис.10.22, страдает избыточностью и связанными с этим аномалиями операций обновления. В этом отношении между атрибутами {СТУДЕНТ, КУРС, ДИСЦИПЛИНА} существуют только тривиальные функциональные зависимости типа {СТУДЕНТ, КУРС, ДИСЦИПЛИНА}→{ДИСЦИПЛИНА} или {СТУДЕНТ, КУРС, ДИСЦИПЛИНА}→{СТУДЕНТ, КУРС} и т.д. Первичным ключом этого отношения является набор атрибутов {СТУДЕНТ, КУРС, ДИСЦИПЛИНА}, то есть весь кортеж этого отношения. Учитывая материалы предыдущих разделов, нетрудно увидеть, что это отношение уже находится в нормальной форме Бойса-Кодда, так как единственный детерминант отношения {СТУДЕНТ, КУРС, ДИСЦИПЛИНА} одновременно является его ключом. Следовательно, в этом отношении по определению должны отсутствовать проблемы, связанные с функциональной зависимостью. Однако, также хорошо видно, что это отношение, тем не менее, явно страдает наличием аномалий операций обновления данных. Действительно, для добавления, например, информации о новой дисциплине на конкретном курсе мы должны добавить кортежи с этой дисциплиной для каждого студента, обучающегося на данном курсе.
Проблемы отношения, представленного на рис.11.22, связаны уже не функциональной зависимостью, а с наличием в нем так называемой многозначной зависимости, связывающей атрибут курс с атрибутами студент и дисциплина. Эта зависимость состоит в том, что конкретное значение атрибута курс однозначно определяет не одно, а множество соответствующих ему значений атрибутов студент и дисциплина. А именно, множество студентов, обучающихся на данном курсе. При этом значения атрибутов студент дисциплина друг от друга совершенно не зависят.
135
Рисунок 10.23 иллюстрирует поясняет характер зависимостей между атрибутами в данном примере, когда значения атрибута КУРС однозначно определяют не единичные значения атрибутов СТУДЕНТ и ДИСЦИПЛИНА, а конкретные множества значений, а именно, множество студентов, обучающихся на конкретном курсе, и множество дисциплин, изучаемых каждым студентом конкретного курса.
СТУДЕНТ
|
ДИСЦИПЛИНА |
|
Иванов |
КУРС |
|
Физика |
||
|
||
Петров |
1 |
|
Ин.язык |
||
Сидоров |
2 |
|
Математика |
||
|
||
|
3 |
|
Кузнецов |
История |
|
4 |
||
|
||
Попова |
Информат |
|
5 |
||
|
||
|
Математика |
Рис.10.23. Иллюстрация многозначных зависимостей
Многозначную зависимость обозначают двойной стрелкой следующим образом:
КУРС → СТУДЕНТ и КУРС → ДИСЦИПЛИНА.
Запись А→В означает, что атрибут В многозначно зависит от атрибута А, или атрибут А многозначно определяет значения атрибута В.
Помещение в одну таблицу информации об элементах двух подмножеств значений атрибутов СТУДЕНТ и ДИСЦИПЛИНА, для каждого значения атрибута КУРС, приводит к размножению кортежей отношения из-за необходимости указания всех сочетаний элементов подмножеств значений атрибутов СТУДЕНТ и ДИСЦИПЛИНА, относящихся к конкретному значению атрибута КУРС.
Определение многозначной зависимости выглядит следующим образом.
Пусть А, В и С являются произвольными подмножествами множества атрибутов отношения R. Тогда В многозначно зависит от А, то есть А→В, тогда и только тогда, когда множество значений В, соответствующее заданной паре {значение А, значение С} отношения R, зависит от А, но не зависит от С.
136
Независимость множества значений В от значений С означает, что конкретное значение А и определяемое им множество значений В может иметь место при любых значениях атрибута С.
Можно показать, что для данного отношения R{А, В, С} многозначная зависимость А→B выполняется тогда и только тогда, когда выполняется также зависимость А→С. Другими словами, многозначные зависимости в отношении всегда образуют связанные пары, и поэтому их обычно в символичном виде представляют вместе А→B и А→С или короче – А→В С.
Для рассматриваемого примера такая запись имеет следующий вид:
КУРС→СТУДЕНТ ДИСЦИПЛИНА.
Если снова обратиться к рассмотренной ранее функциональной зависимости, то нетрудно увидеть, что на самом деле функциональная зависимость является частным случаем многозначной зависимости, а именно случаем, когда множество зависимых значений, соответствующих конкретным значениям детерминанта, всегда является одноэлементным множеством.
Таким образом, можно сказать, что проблемы рассматриваемого отношения (рис.10.22) связаны с тем, что оно содержит многозначные зависимости, не являющиеся функциональными.
Проблемы этого отношения решаются его декомпозицией на две проекции
СТУД_КУРС
СТУДЕНТ |
КУРС |
Иванов |
1 |
Петров |
1 |
Сидоров |
1 |
Кузнецов |
3 |
Попова |
3 |
КУРС_ДИСЦ
КУРС |
ДИСЦИПЛИНА |
1 |
Математика |
1 |
Физика |
1 |
Ин.язык |
3 |
Информатика |
3 |
История |
3 |
Математика |
Рис.10.24. Проекции отношения СТУД_КУРС_ДИСЦ на рис.10.22
Возможность осуществления такой декомпозиции обосновывается теоремой Фейгина.
Теорема Фейгина.
Пусть А, В и С являются множествами атрибутов отношения R{А, В, С}. Отношение R будет равно соединению его проекций {А, В} и {А, С} тогда и только тогда, когда для отношения R выполняется многозначная зависимость А→В.
Можно обратить внимание на то, что теорема Фейгина является обобщением рассмотренной в разделе 10.3 теоремы Хеза, которая, напомним, звучит так.
137
Теорема Хеза.
Пусть R{А, В, С} является отношением, где А, В и С атрибуты этого отношения. Если R удовлетворяет зависимости А→В, то R равно соединению его проекций {А, В} и {А, С}.
Как видно, теорема Хеза естественным образом вытекает из теоремы Фейгина.
Теперь можно дать определение четвертой нормальной формы отношения.
Отношение R находится в четвертой нормальной форме (4НФ) тогда и только тогда, когда существуют подмножества А и В атрибутов отношения R такие, что выполняется (нетривиальная) многозначная зависимость А→В и все атрибуты R также функционально зависят от А.
Приведенное строгое определение четвертой нормальной формы требует пояснения. Последнее условие, состоящее в том, что все атрибуты отношения R также функционально зависят от А, означает, что A является потенциальным ключом отношения. В этом случае многозначная зависимость А→ В фактически является вырожденной, то есть представлена в этом отношении в виде функциональной зависимости. Другими словами, нетривиальные многозначные зависимости присутствуют в отношении R только в форме K→Х, то есть атрибут Х функционально зависит от первичного ключа K.
Еще проще это определение можно сформулировать следующим образом.
Отношение R находится в четвертой нормальной форме, если оно находится в нормальной форме Бойса-Кодда, и все многозначные зависимости отношения R являются функциональными зависимостями от потенциальных ключей.
Приведенное определение четвертой нормальной формы не следует истолковывать таким образом, что при декомпозиции отношения с многозначными зависимостями именно эти зависимости становятся функциональными. На самом деле, при декомпозиции указанные многозначные зависимости исчезают. Выше уже говорилось, что многозначные зависимости могут существовать только парами. Определение четвертой нормальной формы утверждает только то, что в отношении, находящимся в четвертой нормальной форме допустимыми являются только функциональные зависимости атрибутов от потенциального ключа, не связывая эти зависимости с имевшимися в отношении до декомпозиции многозначными зависимостями.
И, наконец, на случай многозначных зависимостей может быть обобщено приведенное ранее в разделе 10.5 определение Риссанена, касающееся декомпозиции отношения на независимые проекции. Оно имело следующий смысл.