
- •Т.Е.Ильиных л.И.Шустова проектирование реляционных баз данных в нотациях idef1x
- •Содержание
- •Этапы проектирования базы данных
- •Инфологическое проектирование базы данных
- •Общие сведения
- •Описание бизнес компонентов и бизнес процессов
- •Сущность
- •Атрибут
- •Другие компоненты инфологической модели
- •Уровни представления данных
- •Этапы инфологического проектирования Инициирование проекта (фаза 0)
- •Определение сущностей (фаза 1)
- •Построение модели уровня сущностей (фаза 2)
- •Построение модели уровня ключей (фаза 3)
- •Построение полноатрибутной модели (фаза 4)
- •Нормализация данных
- •Даталогическое проектирование базы данных
- •Создание даталогической модели Общие сведения
- •Получение спецификаций внутренней схемы базы данных
- •Ограничения целостности
- •Результаты этапа даталогического проектирования
- •Имя таблицы
- •Основы нормализации отношений Общие сведения
- •Первая нормальная форма
- •Вторая нормальная форма
- •Третья нормальная форма
- •Нормальная форма Бойса – Кодда
- •Четвертая нормальная форма
- •Пятая нормальная форма
- •Денормализация
- •Примеры проектирования баз данных различных бизнес приложений
- •Общие замечания
- •Проектирование базы данных "Школа" Постановка задачи
- •Инициирование проекта (фаза 0)
- •Определение множеств сущностей (фаза 1) Выделение множеств сущностей
- •Описание множеств сущностей
- •Пул сущностей
- •Построение модели уровня сущностей (фаза 2)
- •Концептуальная схема уровня сущностей
- •Построение модели уровня ключей (фаза 3) Разрешение неопределенных связей
- •Пул сущностей
- •Определение связей
- •Определение ключевых атрибутов и доменов
- •Изучаемый предмет/e5
- •Описание доменов
- •Описание атрибутов
- •Концептуальная схема
- •Построение полноатрибутной модели (фаза 4)
- •Описание доменов
- •Описание атрибутов
- •Явные ограничения целостности
- •Даталогическая модель
- •Проектирование базы данных "Обмен валюты" Постановка задачи
- •Инициирование проекта (фаза 0)
- •Определение множеств сущностей (фаза 1) Выделение множеств сущностей
- •Описание множеств сущностей
- •Пул сущностей
- •Фаза 2. Построение модели уровня сущностей Матрица связей
- •Матрица связей
- •Описание связей
- •Описание связей
- •Концептуальная схема уровня сущностей
- •Построение модели уровня ключей (фаза 3) Разрешение неопределенных связей
- •Пул сущностей
- •Определение связей
- •Определение ключевых атрибутов и доменов
- •Описание доменов
- •Описание атрибутов
- •Концептуальная схема
- •Построение полноатрибутной модели (фаза 4)
- •Описание доменов
- •Описание атрибутов
- •Явные ограничения целостности
- •Даталогическая модель
- •Проектирование базы данных "Торговля" Постановка задачи
- •Инициирование проекта (фаза 0)
- •Определение множеств сущностей (фаза 1) Выделение множеств сущностей
- •Описание множеств сущностей
- •Пул сущностей
- •Построение модели уровня сущностей (фаза 2)
- •Концептуальная схема уровня сущностей
- •Построение модели уровня ключей (фаза 3) Разрешение неопределенных связей
- •Пул сущностей
- •Описание связей
- •Определение ключевых атрибутов и доменов
- •Товар в списке цен/e5
- •Описание доменов
- •Описание атрибутов
- •Концептуальная схема
- •Построение полноатрибутной модели (фаза 4)
- •Описание доменов
- •Описание атрибутов
- •Явные ограничения целостности
- •Даталогическая модель
- •Список литературы
- •115409, Москва, Каширское ш., 31
Ограничения целостности
Реляционная модель данных и, следовательно, соответствующие СУБД поддерживают некоторые (внутренние) ограничения целостности:
уникальность значений ключевых атрибутов,
обязательность значений некоторых атрибутов,
ссылочные ограничения.
Рассмотрим более подробно ссылочные ограничения. Эти ограничения определяют допустимые значения атрибутов внешних ключей дочерних отношений, которые могут изменяться в результате манипулирования данными. Рассмотрим основные ситуации.
Пусть имеются две схемы отношения (рис. 3.1). К каждому отношению могут быть применены операции манипулирования данными – вставить новый кортеж (INSERT), удалить (DELETE) или модифицировать (UPDATE) существующий кортеж. При этом мы рассматриваем модификацию существующего кортежа, затрагивающую ключевые атрибуты. Рассмотрим проблемы, которые могут возникнуть при выполнении каждой из указанных операций.
Рис. 3.1. Реализация ссылочных ограничений целостности
Основное правило, регламентирующее выполнение указанных операций, устанавливает допустимые значения атрибутов первичных и внешних ключей родительского и дочернего отношений. Рассмотрим выполнение этих операций отдельно для дочернего и родительского отношения.
Дочернее отношение – Name2/E2
Операция INSERT выполняется без каких-либо ограничений при условии, что в новом (вставляемом) кортеже значение атрибутов первичного ключа (Id2) уникально, и значение атрибутов внешнего ключа (Id1) имеется в каком-либо кортеже родительского отношения Name1. Например, может быть вставлен кортеж <4, 2, …>.
Операция DELETE выполняется без каких-либо ограничений. Например, может быть удален кортеж <2, 2, …>.
Операция UPDATE, затрагивающая значения атрибутов первичного и/или внешнего ключей, выполняется с такими же ограничениями, что и операция INSERT. Например, в кортеже <2, 2, …> может быть модифицировано значение первичного ключа и получен кортеж <4, 2, …> (при условии, что в отношении Name2 нет кортежа с таким значением первичного ключа) или может быть модифицировано значение внешнего ключа и получен кортеж <2, 1, …>.
На этапе создания внутренней схемы ссылочные ограничения целостности для дочернего отношения никаким специальным образом, кроме определения ключевых атрибутов, не задаются.
Родительское отношение – Name1/E1
Операция INSERT выполняется без каких-либо ограничений при условии, что соблюдается уникальность значений ключевых атрибутов (Id1). Так, например, может быть вставлен кортеж <4, …, …>;
Операция DELETE требует уточнения: как должно выполняться удаление некоторого кортежа родительского отношения при условии, что в дочернем отношении существует кортеж, ссылающийся на удаляемый.
В реляционной модели данных поддерживаются три вида реакции на удаление кортежа родительского отношения:
CASCADE – при удалении кортежа родительского отношения удаляются все ссылающиеся на него кортежи дочернего отношения. Так, если в рассматриваемом примере из родительского отношения Name1 удаляется кортеж <1, …, …>, то из дочернего отношения Name2 автоматически будут удалены кортежи <1, 1, …> и <3, 1, …>.
RESTRICT – при удалении кортежа родительского отношения операция удаления не выполняется, если в дочернем отношении есть хотя бы один кортеж, ссылающийся на удаляемый. Так, при попытке удалить кортеж <2, …, …> родительского отношения Name1 операция удаления не будет выполнена.
SET NULL – если допускаются пустые значения атрибутов внешнего ключа, тогда при удалении кортежа родительского отношения в кортежах дочернего отношения, ссылающихся на удаляемый, будут установлены пустые (NULL) значения атрибутов внешнего ключа. Например, если удаляется кортеж <2, …, …> родительского отношения Name1, в дочернем отношении Name2 будет модифицирован кортеж <2, NULL, …>.
Операция UPDATE, затрагивающая значение атрибутов первичного ключа, требует таких же уточнений, что и операция DELETE. Эта операция также допускает три вида реакции: CASCADE, RESTRICT, SET NULL, имеющие тот же смысл.
На этапе создания внутренней схемы при определении внешних ключей дочерних отношений необходимо указывать реакцию на операцию DELETE (и операцию UPDATE, если используемая СУБД поддерживает данное ограничение).