- •Информация и данные
- •Основные понятия систем с базами данных
- •Пользователи информационной системы с БД
- •Требования к информационным системам с базами данных
- •Основные компоненты ИС с базами данных
- •Архитектура систем с базами данных. Понятие модели данных
- •Сущности и их свойства
- •Связи (отношения) между сущностями
- •Виды связей между сущностями
- •Еще о сущностях, их свойствах и связях между ними
- •Модели данных. Ранние подходы к организации баз данных
- •Основные понятия реляционной модели данных
- •Структуры данных реляционной модели. Реляционные отношения
- •Свойства отношений
- •Отсутствие в отношении одинаковых кортежей
- •Кортежи отношения не упорядочены (сверху вниз)
- •Атрибуты отношения не упорядочены (слева направо)
- •Значения всех атрибутов являются атомарными
- •Виды отношений
- •Реляционная база данных
- •Реляционная модель. Операции над данными
- •Реляционная алгебра
- •Пересечение отношений
- •Вычитание отношений
- •Декартово произведение отношений
- •Проекция
- •Выборка (ограничение)
- •Естественное соединение отношений
- •Деление
- •Реляционное исчисление
- •Примеры правильно построенных формул
- •Язык SQL
- •Отличие SQL от процедурных языков программирования
- •Формы и составные части SQL
- •Условия и терминология
- •Простейшие SELECT-запросы
- •Ограничения целостности в реляционной модели
- •Ограничения целостности уровня атрибута
- •Домены отношений
- •Отсутствующая информация или NULL-значения.
- •Ограничения целостности уровня кортежа
- •Ограничения целостности уровня отношения
- •Потенциальные, первичные, альтернативные ключи отношения
- •Потенциальные ключи и NULL-значения
- •Ограничения целостности уровня базы данных
- •Внешние ключи и NULL-значения
- •Правила ссылочной целостности
- •При обновлении кортежа в родительском отношении
- •При удалении кортежа в родительском отношении
- •При вставке кортежа в дочернее отношение
- •При обновлении кортежа в дочернем отношении
- •Средства обеспечения целостности данных в СУБД
- •Поддержка декларативных ограничений целостности в языке SQL
- •Проектирование базы данных
- •Функциональная зависимость
- •Нормализация отношений базы данных
- •Нормальные формы
- •Декомпозиция без потерь и функциональные зависимости
- •Первая и вторая нормальные формы.
- •Третья нормальная форма.
- •Многозначные зависимости и четвертая нормальная форма
- •Зависимости соединения и пятая нормальная форма
- •Итоговая схема процедуры нормализации
- •Структуры хранения данных и методы доступа
- •Хранение отношений и доступ к хранимым данным
- •Индексирование
- •Управление транзакциями и целостность баз данных
- •Транзакции и параллелизм
- •Проблемы, возникающие при параллельном выполнении транзакций
- •Проблема потери результатов обновления
- •Проблемы несовместимого анализа
- •Несовместимый анализ – неповторяемое считывание
- •Несовместимый анализ – фиктивные элементы (фантомы)
- •Собственно несовместимый анализ
- •Конфликты между транзакциями
- •Методы сериализации транзакций
- •Решение проблем параллелизма при помощи блокировок
- •Проблема потери результатов обновления
- •Проблема несовместимого анализа. Неповторяемое считывание
- •Фиктивные элементы (фантомы)
- •Собственно несовместимый анализ
- •Уровни изоляции. Объекты синхронизационных блокировок
- •Предикатные синхронизационные блокировки
- •Метод временных меток
- •Уровни изоляции.
- •Синтаксис операторов SQL, определяющих уровни изоляции
9.Ограничения целостности в реляционной модели
Как уже говорилось, реляционная модель включает в себя три составные части. Это – описание структуры данных, описание операций, которые могут выполняться над данными, и ограничения целостности данных. Первые две компоненты были рассмотрены выше в разделах 6 и 7, соответственно. В данном разделе рассмотрим третью составляющую модели – ограничения целостности.
Очевидно, что база данных представляет для пользователя какую-либо ценность до тех пор, пока хранимые в ней данные будут правильными, то есть будут корректно отражать информацию о соответствующей предметной области. В связи с этим, в СУБД желательно наличие средств, позволяющих контролировать корректность хранимых данных. Должно быть также понятно, что для того, чтобы можно было осуществлять проверку корректности данных, в системе необходимо наличие дополнительной информации, указывающей, какие данные считать правильными, а какие нет. В реляционной модели такого рода информация указывается в ограничениях целостности данных.
Ограничения целостности базы данных определяют набор условий, логических ограничений, которым должны удовлетворять данные, хранимые в базе данных.
Любое ограничение целостности является семантическим понятием, т.е. относится к смыслу, а не форме представления данных. Оно отражает определенные свойства объектов-сущностей предметной области, информация о которых не может быть получена из анализа самих хранимых в базе значений данных. Например, из анализа фактически присутствующих в отношении значений атрибута нельзя сделать вывод о том, какие значения должны считаться правильными. То, что, например, значение атрибута Возраст не может быть отрицательным числом, является внешним ограничением, накладываемым на значения атрибута исходя из семантики (смысла) предметной области.
Говорят, что база данных находится в согласованном или целостном состоянии, если все находящиеся в ней данные удовлетворяют заданным для этой базы данных ограничениям целостности данных.
Следует обратить внимание, что для самой базы данных, для СУБД ограничения целостности являются формальным свойством, одним из видов хранимой в базе информации о предметной области. СУБД не понимает смысла
80
данных. Имеющая средства поддержки ограничений целостности СУБД реализует проверку и обеспечение согласованности и целостности хранимых данных лишь в той мере, в которой эти данные удовлетворяют заданным в системе ограничениям целостности. Поэтому более точно следует говорить, что СУБД обеспечивает не целостность или согласованность данных вообще, а выполнение заданных в базе данных ограничений целостность данных.
Проблема обеспечения целостности базы данных усложняется тем, что данные в ней не являются зафиксированными, неизменными, а напротив могут изменяться во времени. Вследствие этого, с ограничениями целостности должен быть связан набор правил и определенных действий, которые должны выполняться при модификации данных, для того, чтобы в процессе работы с базой данных обеспечивалась корректность хранимых в ней данных. Другими словами, чтобы любые действия по модификации данных переводили базу данных из одного целостного (согласованного) состояния в другое целостное состояние. В связи с этим возникает понятие реакции системы на попытку нарушения целостности данных. При этом возможны два варианта реакции системы: можно отвергнуть попытку нарушения целостности, а можно выполнить какие-либо действия, компенсирующие нарушение целостности.
Действия системы по проверке ограничений целостности можно представить в следующем виде (рисунок 9.1).
Пользователь |
|
|
|
|
|
|
|
|
|
Попытка выполнить операцию |
|||||||||||||||||||||||||||||
|
|
|
|
или |
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||
|
приложение |
|
|
|
|
|
|
|
|
|
(INSERT, UPDATE, DELETE) |
||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ограничения |
Проверка |
Ограничения |
ограничений |
||
нарушаются |
|
не нарушаются |
Сообщение об отказе
операции
Операция
выполняется
Операция |
Операция выполняется. |
|
Дополнительно выполняются |
||
отвергается |
||
компенсирующие операции |
||
|
Рис. 9.1. Работа системы по проверке ограничений целостности
Очевидно, что реакция системы в случае осуществления действий по модификации данных в большой степени зависит от вида затрагиваемых этими действиями ограничений целостности.
В зависимости от области действия ограничений целостности их можно разделить следующим образом:
• ограничения целостности уровня атрибута,