- •Информация и данные
- •Основные понятия систем с базами данных
- •Пользователи информационной системы с БД
- •Требования к информационным системам с базами данных
- •Основные компоненты ИС с базами данных
- •Архитектура систем с базами данных. Понятие модели данных
- •Сущности и их свойства
- •Связи (отношения) между сущностями
- •Виды связей между сущностями
- •Еще о сущностях, их свойствах и связях между ними
- •Модели данных. Ранние подходы к организации баз данных
- •Основные понятия реляционной модели данных
- •Структуры данных реляционной модели. Реляционные отношения
- •Свойства отношений
- •Отсутствие в отношении одинаковых кортежей
- •Кортежи отношения не упорядочены (сверху вниз)
- •Атрибуты отношения не упорядочены (слева направо)
- •Значения всех атрибутов являются атомарными
- •Виды отношений
- •Реляционная база данных
- •Реляционная модель. Операции над данными
- •Реляционная алгебра
- •Пересечение отношений
- •Вычитание отношений
- •Декартово произведение отношений
- •Проекция
- •Выборка (ограничение)
- •Естественное соединение отношений
- •Деление
- •Реляционное исчисление
- •Примеры правильно построенных формул
- •Язык SQL
- •Отличие SQL от процедурных языков программирования
- •Формы и составные части SQL
- •Условия и терминология
- •Простейшие SELECT-запросы
- •Ограничения целостности в реляционной модели
- •Ограничения целостности уровня атрибута
- •Домены отношений
- •Отсутствующая информация или NULL-значения.
- •Ограничения целостности уровня кортежа
- •Ограничения целостности уровня отношения
- •Потенциальные, первичные, альтернативные ключи отношения
- •Потенциальные ключи и NULL-значения
- •Ограничения целостности уровня базы данных
- •Внешние ключи и NULL-значения
- •Правила ссылочной целостности
- •При обновлении кортежа в родительском отношении
- •При удалении кортежа в родительском отношении
- •При вставке кортежа в дочернее отношение
- •При обновлении кортежа в дочернем отношении
- •Средства обеспечения целостности данных в СУБД
- •Поддержка декларативных ограничений целостности в языке SQL
- •Проектирование базы данных
- •Функциональная зависимость
- •Нормализация отношений базы данных
- •Нормальные формы
- •Декомпозиция без потерь и функциональные зависимости
- •Первая и вторая нормальные формы.
- •Третья нормальная форма.
- •Многозначные зависимости и четвертая нормальная форма
- •Зависимости соединения и пятая нормальная форма
- •Итоговая схема процедуры нормализации
- •Структуры хранения данных и методы доступа
- •Хранение отношений и доступ к хранимым данным
- •Индексирование
- •Управление транзакциями и целостность баз данных
- •Транзакции и параллелизм
- •Проблемы, возникающие при параллельном выполнении транзакций
- •Проблема потери результатов обновления
- •Проблемы несовместимого анализа
- •Несовместимый анализ – неповторяемое считывание
- •Несовместимый анализ – фиктивные элементы (фантомы)
- •Собственно несовместимый анализ
- •Конфликты между транзакциями
- •Методы сериализации транзакций
- •Решение проблем параллелизма при помощи блокировок
- •Проблема потери результатов обновления
- •Проблема несовместимого анализа. Неповторяемое считывание
- •Фиктивные элементы (фантомы)
- •Собственно несовместимый анализ
- •Уровни изоляции. Объекты синхронизационных блокировок
- •Предикатные синхронизационные блокировки
- •Метод временных меток
- •Уровни изоляции.
- •Синтаксис операторов SQL, определяющих уровни изоляции
86
если один или несколько элементов множества неизвестны, а остальные равны false, то значение выражения также неизвестны (может быть true или false, в зависимости оттого какие на самом деле имеют значения неизвестные элементы множества).
Выражение FORALL(х1, х2, …, хn) принимает значение false, если хотя бы один из элементов множества <х1, х2, …, хn> имеет значение false, принимает значение true, если все до одного элемента этого множества имеют значение true, и наконец, если один или несколько элементов неопределенны, а остальные находятся в состоянии true, то значение выражения также является неопределенным (оно может быть true, если неизвестные элементы равны true, и будут false, если хотя бы один из них равен false).
Рассмотренные в данном разделе аспекты, причиной которых является допущение использования в качестве значений атрибутов неопределенных значений, не является единственными. Ниже будут рассмотрены и некоторые другие. Учитывая тот факт, что в настоящее время NULL-значения «узаконены» стандартом языка SQL, знание этих аспектов является совершенно необходимым. При этом, однако, в качестве рекомендации разработчику базы данных можно привести пожелание Дэйта [1] по возможности не использовать для атрибутов отношения базы данных NULL-значений, кроме случаев, когда это является действительно оправданным. В большом числе практических случаев альтернативой использования NULL-значений может быть использование значений по умолчанию. При этом операции над значениями атрибутов остаются в рамках более привычной двузначной логики, а их результаты являются для разработчика более понятными и предсказуемыми. В языке SQL по умолчанию для атрибутов NULL-значения разрешены. Для их запрета для конкретного атрибута используется ограничение NOT NULL.
9.2.Ограничения целостности уровня кортежа
Ограничения целостности кортежа представляют собой ограничения,
накладываемые на допустимые значения отдельного кортежа отношения, и не являющиеся ограничением целостности атрибута. То, что ограничение наложено на кортеж, означает, что для его проверки не требуется никакой информации о других кортежах.
Примером такого рода ограничений в отношении АУДИТОРНЫЙ_ФОНД, имеющего следующие атрибуты {№_КОМНАТЫ, ДЛИНА, ШИРИНА, ВЫСОТА,