Глава 23. Практическая работа "Целостность реляционной модели данных"

Содержание

23.1. Постановка задачи
23.2. Варианты заданий
23.2.1. Вариант 1
23.2.2. Вариант 2
23.2.3. Вариант 3
23.2.4. Вариант 4
23.2.5. Вариант 5
23.2.6. Вариант 6
23.2.7. Вариант 7
23.2.8. Вариант 8
23.2.9. Вариант 9
23.2.10. Вариант 10
23.2.11. Вариант 11
23.2.12. Вариант 12
23.2.13. Вариант 13
23.2.14. Вариант 14
23.2.15. Вариант 15
23.2.16. Вариант 16
23.2.17. Вариант 17
23.2.18. Вариант 18
23.2.19. Вариант 19
23.2.20. Вариант 20

В главе использована книга [DATE6].

23.1. Постановка задачи

Рисунок 23.1. База данных Поставка

База данных Поставка

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