Содержание
В главе использована книга [DATE6].
На схеме Рисунок 23.1, «База данных Поставка» представлена база данных Поставка. Поставщик S однозначно определяется номером поставщика S#, товар P однозначно определяется номером товара P#, проект J однозначно определяется номером проекта J#. Значение кортежа отношения поставка SPJ следующее: определенный поставщик поставляет определенный товар для определенного проекта в определенном количестве (комбинация S# P # J# уникальна для SPJ).
Пример 23.1. Определение данных для базы данных Поставка
СREATE DOMAIN S# CHAR (5); СREATE DOMAIN NAME CHAR (20); СREATE DOMAIN STATUS NUMERIC (5); СREATE DOMAIN CITY CHAR (15); СREATE DOMAIN P# CHAR (5); СREATE DOMAIN COLOR CHAR (10); СREATE DOMAIN WEIGHT NUMERIC (5); СREATE DOMAIN J# CHAR (4); СREATE DOMAIN QTY NUMERIC (9); CREATE BASE RELATION S ( S# DOMAIN ( S# ), SNAME DOMAIN ( NAME ), STATUS DOMAIN ( STATUS ), CITY DOMAIN ( CITY )) PRIMARY KEY ( S# ); CREATE BASE RELATION P ( P# DOMAIN ( P# ), PNAME DOMAIN ( NAME ), COLOR DOMAIN ( COLOR ), WEIGHT DOMAIN ( WEIGHT ), CITY DOMAIN ( CITY ), PRIMARY KEY ( P# ); CREATE BASE RELATION J (J# DOMAIN ( J# ), JNAME DOMAIN ( NAME ), CITY DOMAIN ( CITY ) PRIMARY KEY ( J# )); CREATE BASE RELATION SPJ ( S# DOMAIN ( S# ), P# DOMAIN ( P# ), J# DOMAIN ( J# ), QTY DOMAIN ( QTY )) PRIMARY KEY ( S#, P#, J# ) FOREIGN KEY ( S# ) REFERENCES S DELETE CASCADES UPDATE RESTRICTED FOREIGN KEY ( P# ) REFERENCES P DELETE CASCADES UPDATE RESTRICTED FOREIGN KEY ( J# ) REFERENCES J DELETE CASCADES UPDATE RESTRICTED;
3. Нарушить целостность могут операции с атрибутами являющиеся первичными или внешними ключами.
4. Первичный ключ – уникальный атрибут.
5. Метаправило целостности сущностей – атрибуты первичного ключа не могут принимать Null-значений.
6. Метаправило ссылочной целостности – внешние ключи не должны быть несогласованными.
7. Правила внешних ключей: (1) ограничить – не разрешать выполнение операции, приводящей к нарушению ссылочной целостности, (2) каскадировать – разрешить выполнение требуемой операции, но внести при этом необходимые поправки в других отношениях так, чтобы не допустить нарушения ссылочной целостности и сохранить все имеющие связи.
8. Используя данные схемы Рисунок 23.1, «База данных Поставка» и Пример 23.1, «Определение данных для базы данных Поставка», а также учитывая правила пунктов 3-7, можно определить какой будет результат следующих операций:
Обновить проект J5, установив атрибут CITY равным Ачинск. Результат: операция допустима.
Обновить товар P5, установив атрибут P# равным P4, если для соответствующего правила обновления UPDATE установлена опция RESTRICTED. Результат: операция не допустима (нарушение уникальности первичного ключа).
Обновить проект J5, установив атрибут JNAME равным Null, если для соответствующего правила обновления UPDATE установлена опция CASCADES. Результат: операция допустима,
Обновите поставку S1-P1-J1, установив атрибут J# равным Null, если для соответствующего правила обновления UPDATE установлена опция CASCADES. Результат: операция не допустима, нарушение метаправила целостности сущностей.
Обновить поставщика S3, установив атрибут S# равным S8, если для соответствующего правила обновления UPDATE установлена опция RESTRICTED. Результат: операция не допустима (нарушение правила внешних ключей).
Удалить поставщика S3, если для соответствующего правила DELETE установлена опция CASCADES. Результат: операция допустима, удаляется кортеж поставщика S3 и соответствующие поставки поставщика S3.
Удалить товар P1, если для соответствующего правила удаления DELETE установлена опция RESTRICTED. Результат: операция не допустима (нарушение правила внешних ключей).
Удалить товар P2, если для соответствующего правила удаления DELETE установлена опция RESTRICTED. Результат: операция допустима, удаляется кортеж товара P2, соответствующих ему поставок нет.
Обновить поставку S1-P1-J1, установив атрибут S# равным S2. Результат: операция допустима.
Обновить поставку S2-P3-J3, установив атрибут J# равным J5. Результат: операция недопустима (нарушение уникальности первичного ключа).
Обновить поставку S2-P3-J3, установив атрибут J# равным J6. Результат: операция не допустима (нарушение метаправила ссылочной целостности).
Вставить поставку S4-P4-J3. Результат: операция допустима.
Вставить поставку S4-P6-J3 Результат: операция недопустима (нарушение метаправила ссылочной целостности).