Введение в системы БД (542480), страница 79
Текст из файла (страница 79)
БЕТ СОИБТКА1НТБ <списох имен ограничений' <параметр> ; Здесь параметр <параметр> — это или ключевое слово 1ММЕ01АТЕ (немелленно), или ключевое слово РЕГЕККЕР (отложено). Примером может служить следующее утверждение. БЕТ СОИЯТКй1ИТЯ 1С46, 1С95 РЕГЕККЕР Откладываемые о~раничения проверяются только тогда, когда они находятся в состоянии 1ММЕ01йТЕ (немедленно). Установка откладываемого ограничения в состояние 1ММЕ01АТЕ, естественно, приводит к тому, что оно проверяется немедленно. Если проверка завершается ошибкой, то завершается ошибкой и оператор БЕТ 1ММЕ01АТЕ.
При выполнении операции завершения транзакции (СОММ1Т) все откладываемые ограничения целостности переходят в выполняемое состояние 1ММЕР1АТЕ и если какая-либо проверка завершается ошибкой, выполняется откат транзакции. 326 Часть |1. Реляционная модель 8.10. Резюме В этой главе обсуждалось ключевое понятие целостность.
Проблема целостности— это проблема обеспечения точности и корректности данных, хранящихся в базе данных (безусловно, нас интересовали декларативные решения этой проблемы). Как мы уже выяснили, понятие "целостность" в данном контексте означает семантику: это ограничения целостности (в частности, предикаты переменных-отношений и базы данных; см.
ниже), которые отражают смысл данных. Поэтому, как утверждалось в разделе 8.6, целостность данных имеет решающее значение. Ограничения целостности можно распределить по четырем категориям. ° Ограничения типа залают допустимые значения для данного типа (или домена) и проверяются при вызове соответствующего оператора выбора значения. ° Ограничения атрибута задают допустимые значения для данного атрибута и никогда не должны нарушаться (подразумевается, что ограничения типа проверены).
° Ограничения переменной-отношения задают допустимые значения для данной переменной-отношения и проверяются перед тем, как рассматриваемая переменная-отношение будет обновлена. ° Ограничения базы данных устанавливают допустимые значения для данной базы данных и проверяются при выполнении операторов СОИИ1Т. Логическое произведение (нли операция И) всех установленных ограничений переменных-отношений для данной переменной-отношения представляет внутренний предикат переменной-отношения. Предикат переменной-отношения отражает смысл этой переменной в том виде, в котором он может быть воспринят системой, и является критерием приемлемости обновлений лля этой переменной-отношения. Залагпае правила утверждает, что любым апераиилм изменения запрещается каким-либо образом переводить переменную-отношение в состояние, противоречащее ее собственному предикату.
В свою очередь, вся база данных является объектом предиката базы данных и любой транзакции также запрещено переводить базу данных в состояние, которое противоречит этому предикату. Затем в обших чертах были описаны основная идея ограничений перехода (остальные ограничения относятся к ограничениям состояния) и практически важные специальные случаи ограничений, представляющие потенциальные, первичные, альтернативные и внешние ключи.
Потенциальные ключи должны обладать свойством уникальности и неизбыточности, и каждая переменная-отношение должна иметь по крайней мере один потенциальный ключ (исключений нет!). Ограничение, согласно которому значения данного внешнего ключа должны совпадать со значениями соответствуюшего потенциального ключа, называется ссылочным ограничением. Мы познакомились с несколькими следствиями из идеи ссылочной целостности, включая понятие ссылочных действий (в том числе каскадирование). Последнее обсуждение подвело нас к понятию триггерных процедур.
В завершение этой главы были рассмотрены соответствуюшие аспекты языка Я)Е. В языке ЯО). присутствует поддержка ограничений домена, ограничений базовых таблиц и утверждений (обших ограничений). Кроме того, поддержка ограничений базовых таблиц в языке ЗО(. включает специальный случай поддержки ключей. 327 Глава 8. Целостность данных Упражнения 8.4. 328 Часть |1. Реляционная лгодель 8.1. 8.2. 8.3.
На основе представленного в разлелах 8.2 — 8.5 синтаксиса запишите следующие ограничения целостности для базы данных поставщиков деталей и проектов. а) Допустимыми городами являются Лондон ('Ьопбол'), Париж ('Раггв'). Рим ('Нове'), Афины ('АГАепв '), Осло ('Ов1о'), Стокгольм ('Нсос)гЬо1в'), Мадрид ('Мабг(б') и Амстердам ('Ава1егбав'). б) Допустимы только такие номера поставщиков, которые представлены символьной строкой, содержащей не менее двух символов, первым из которых является буква 'Б', а оставшиеся образуют целое число в диапазоне от 0 до 9 999. в) Все красные детали должны весить меньше 50 фунтов. г) Никакие два проекта не могут находиться в одном и том же городе.
д) В любой момент в Афинах может находиться не более одного поставщика. е) Ни одна поставка по количеству деталей не может превышать удвоенное среднее значение количества для всех поставок. ж) Поставщик с наибольшим статусом не может находиться в одном городе с поставщиком с наименьшим статусом. з) Каждый проект должен находиться в городе, в котором есть хотя бы один поставщик. и) Каждый проект должен находиться в городе, в котором есть хотя бы один поставщик деталей данного проекта.
к) Должна существовать по крайней мере одна деталь красного цвета. л) Среднее значение статуса поставщика должно быть больше 18. м) Каждый поставщик в Лондоне должен поставлять деталь с номером 'Р2', н) Хотя бы олна красная деталь должна весить меньше 50 фунтов. о) Поставщики в Лондоне должны поставлять больше видов деталей, чем поставщики в Париже. п) Поставщики в Лондоне должны в сумме нос~валять больше де~алей, чем поставщики в Париже.
р) Ни одна поставка не может быть сокращена (за одно обновление) более чем вдвое по сравнению с текущим значением. с) Поставщики из Афин могут переехать только в Лондон или Париж, а поставщики из Лондона — только в Париж. Для каждо~о из ответов к упр. 8.1 укажите, являются ли они ограничениями переменной-отношения или ограничениями базы данных. Для каждого из ответов к упр. 8.1 приведите пример операции„которая может привести к нарушению данного о~раничения. Предположим, что выражения СВАН(5) и СНАН(3) обозначают символьные строки длиной 5 и 3 символа соответственно.
Сколько типов здесь присутствует — один или два? Пусть А и  — это две переменные-отношения. Определите потенциальные ключи лля результата выполнения каждого из приведенных ниже выражений. 8.6. 8.7. 8.8. 8зй а) й ИНЕКЕ ... б) А (...) в) А Т1МЕЯ В г) й НИ10И В д) й 1ИТЕКБЕСТ В е) А И1ИНБ В ж) А 101И В з) ЕХТЕИВ В А00 <вираженяе> йЯ Х и) ЯНММАК1ХЕ й РЕК В А00 <вжражеляе> АЯ Х к) А ЯЕМ1101И В л) А ЯЕМ1М1ИНЯ В Для каждого случая предполагается, что переменные-отношения й и В удовлетворяют требованиям для соответствующей операции (т.е.
имеют тот же тип, что и в случае операции НИ10И). Пусть К вЂ” переменная-отношение степени и. Какое максимальное количество потенциальных ключей может иметь переменная-отношение К? Пусть К вЂ” переменная-отношение, имеющая единственными допустимыми значениями особые (и очень важные) отношения степени 0 с названиями НЕЕ и 00И. Какой потенциальный ключ (или ключи) имеет эта переменная-отношение К? В данной главе для внешних ключей обсуждались правила удаления и обновления (0ЕЬЕТЕ и НРВАТЕ), но не упоминались правила вставки (операция 1ИБЕКТ). Почему? Используя значения из базы данных поставщиков, деталей и проектов (см.
рис, 4.5), укажите, каким будет результат выполнения каждой из приведенных ниже операций. а) Обновить кортеж проекта с номером 'Ю7', присвоив атрибуту С1ТХ значение ' И еж уог1с '. б) Обновить кортеж детали с номером 'Р5', присвоив атрибуту Р4 значение 'Р4'. в) Обновить кортеж поставщика с номером 'Я5', присвоив атрибуту Я4 значение 'ЯБ'. Предполагается, что для этой операции установлено правило обновления КЕЯТК1СТ. г) Удалить кортеж поставщика с номером 'Я3'. Предполагается, что для этой операции установлено правило удаления САЯСйРЕ. д) Удалить кортеж детали с номером 'Р3'. Предполагается, что для этой операции установлено правило удаления КЕЯТК1СТ. е) Удалить кортеж проекта с номером 'Я4'. Предполагается, что для этой операции установлено правило удаления САЯСАВЕ.
ж) Обновить кортеж поставки с ключом 'Я1'-'Р1' †'Л ', присвоив атрибуту Я$ значение 'БЗ'. з) Обновить кортеж поставки с ключом 'Б5'-'Р5' †'Ю5', присвоив атрибуту Ю$ значение 'Л7'. Глава 8. Целоетноппь данных 329 и) Обновить кортеж поставки с ключом 'Я5' — 'Р5' — 'Л5', присвоив атрибуту о1 значение 'ЮЯ'. 8.10 Смысл переменной-отношения РВЕВЕО (Предварительные условия) заключается в том, что определенный старший курс (ЯПР СОПВЯЕ1) требует в качестве обязательного усло- вия предварительного прослушивания некоторого подчиненного курса (ЯПВ СОПВЯЕ1). Назначение остальных переменных-отношений должно быть понятно без каких-либо дополнительных пояснений. Начертите для этой базы данных соответствующую ссы- лочную диаграмму.