Содержание
В главе использована книга [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 Результат: операция недопустима (нарушение метаправила ссылочной целостности).