С.Д. Кузнецов - Основы баз данных (1121716), страница 55
Текст из файла (страница 55)
Продемонстрируем и прокомментируем несколько примеров определений общих ограничений целостности. В определении таблицы емР содержалось ограничение столбца ЕМР ВОАТЕ: СНЕСК (ЕМР ВРАТЕ >= '1917-10-24') (к работе на предприятии допускаются только те лица, которые родились после Октябрьского переворота). Вот каким образом можно определить такое же ограничение на уровне общих ограничений целостности: сееАте Аевееттон мтн ВМР ВОАТВ снеск ((БЕЬЕСТ М1И(ЕМР ВРАТЕ)) РВОМ ЕМР) >= '1917-10-24').
В логическом условии этого общего ограничения выбирается минимальное значение столбца емР ВОАте (дата рождения самого старого служащего). Значением условного выражения будете(зе в том и только в том случае, если среди служащих имеется хотя бы один, родившийся до указанной даты.
'Теперь переформулируем в вице общего ограничения целостности ограничение таблицы емР Рео емР но, которое определялось следующим образом: СОМВТКА1МТ РЕО ЕМР ИО СНЕСК ((БЕЬЕСТ СОНЕТ (*) РВОМ ЕМР Е У)НЕВЕ Е.РЕО НО = РЕО ИО) <= 50) (над одним проектом не может работать более 50 служащих). Вот формулировка эквивалентного общего ограничения целостности: СЕЕАТЕ АВВЕЕТ10Н ИЕИ РЕО ЕМР МО СНЕСК ( НОТ ЕХ1ВТЯ (БЕЬЕСТ РКО ИО РВОМ ЕМР ОЯООР ВУ РЕО ИО нАч1ИО соонт* > 50)). Логическое выражение этого ограничения может принимать только значения ггие и ~аде. Внутренний оператор выборки группирует строки таблицы ЕМР таким образом, что в одну группу попадают все строки с одинаковым значением столбца РКО НО.
Затем эти группы фильтруются по условию раздела НИ'1МО, и остаются только группы, включающие более 50 строк. В результирующей таблице содержатся строки из одного столбца, содержащего значение РЕО НО оставшихся групп. Предикат нот 2бб Лекция 12 Средства оп еделения базовых таблиц и ограничений целостности ЕХ1 ЯТЯ принимает значение Луге тогда и только тогда, когда эта результируюшая таблица не содержит ни одной строки, т. е.
нет ни одного проекта, в котором работает больше 50 служащих. Покажем, как можно сформулировать в виде общего ограничения целостности ограничение внешнего ключа. Например, приведем такую эквивалентную формулировку для определения внешнего ключа РВО МО, входящего в состав определения таблицы емР: РОВЕ1СИ КЕУ РВО ИО ВЕРЕВЕИСЕЯ РВО (РВО ИО) В виде общего ограничения целостности это может выглядеть следуюшим образом: (!) СВЕАТЕ АЯБЕВТ10И РК РВО ИО СНЕСК (2) ( нот ех1ЯтЯ (Беьест * РВОМ емР инеВе РВО ио 1Я Нот ноьь Амэ (3) НОТ ЕХ1БТБ (БЕЗВЕСТ * РВОМ РВО (4) У(НЕВЕ РВО.РВО НО = ЕМР.РВО НО))). Логическое выражение этого ограничения выглядит достаточно сложным и нуждается в пояснении.
Условие выборки оператора Беьест на строке (2) состоит из двух частей, связанных через АНО. Первая часть отфильтровывает те строки таблицы ЕМР, у которых в столбце РВО НО содержится ноьь. Если этот столбец содержит гллл, во всех строках таблицы, то результирующая таблица оператора выборки на строке (2) будет пустой, и значением предиката НОт ЕХ1БтБ будет Лие, т. е, ограничение удовлетворяется.
Теперь предположим, что в таблице емР нашлась строка ешр, В СтОлбце РВО ИО которой содержится значение, отличное от НОНЫ Назовем это значение санд рго по. Для него вычисляется вторая часть условия выборки оператора БЕЬЕСт на строке (2). Оператор выборки на строке (3) выбирает все строки таблицы РВО, значение столбца РВо ко которых равняется санс! ргс по. Если для данного значения санс) ргс пс нашлась хотя бы одна такая строка, то результируюшая таблица оператора выборки на строке (3) будет непустой, и значением предиката нот ех1ЯтБ на строке (3) будет га)уе. Соответственно, все условие выборки первого оператора яеьест примет значениегайе, и строка со значением санс( ргс по в столбце РВо но будет отфильтрована.' Если же найдется хотя бы одна строка таблицы емР с таким значением санг) рго пс столбца РВО НО, что втаблице РВО не найдется ниоднойстроки, значение столбца Рйо но которой равнялось бы этому сагк! рго по, то результирующая таблица оператора выборки на строке (3) будет пустой, и значением предиката нот ех1ятБ на строке (3) будет лис.
Тогда все условие выборки первого оператора ЯЕ1.ЕСТ примет значение Путе, и эта строка таб- ' Это означает, что сапе рго по является допустимым значением внешнего ключа. 257 Основы баз данных Курс лицы кмР будет пропущена в результирующую таблицу. Значением предиката нот кхт ЯТЯ будет 7а(ж, т е. ограничение не удовлетворяется. Мы сознательно привели такое подробное пояснение не только для того, чтобы прояснить смысл условного выражения общего ограничения целостности Рк Рео мо, но и чтобы дать понять, во что реально вырождается простая синтаксическая конструкция определения внешнего ключа. Как показывает опыт, многие начинающие проектировщики Е( )1 -ориентированных баз данных думают, что ссылочные ограничения так же легко поддерживать, как определять.
Наконец, сформулируем общее ограничение целостности, состоящее в том„что никакой менеджер проекта не должен иметь суммарный общий доход, болыций суммарного дохода руководителя отдела, в котором работает этот менеджер. (1) скеАте АЯЯеет10м РНО ммс сомктн снеск (2) НОТ ЕХ1ЯТЯ (ЯЕЬЕСТ * РВОМ ЕМР ЕМР1, ЕМР ЕМР2, ПЯРТ, РНО '»)НККЕ (3) ЕМР1,ЕМР МО =. РЕО.РРО ММС АМО (4) ЕМР1.РЕРТ МО = ОЕРТ.РЕРТ МО АМВ (5) ОЕРТ.РЕРТ МЫС = ЕМР2.ЕМР МО АМВ (6) ЕМР1.ЕМР ЯАЬ + СОАЬЕЯСЕ (ЕМР1.ЕМР ВОЖБ,0) > (7) ЕМР2.ЕМР ЯАЬ + СОАЬЕЯСЕ (ЕМР2.ЕМР ВОМСЯ,О) | В логическом выражении этого ограничения используется оператор выборки Якькст, в разделе перечня таблиц (РВОМ) впервые в этом курсе используется несколько таблиц. Такие запросы в Б(;)1. называются запросами с соедииеиинл|и, и мы воспользуемся случаем, чтобы пояснить на примере (конечно, предварительно), как их следует понимать в соответствии со стандартом языка 9 П .
Итак, в разделе РВОМ оператора выборки, используемого в логическом условии этого ограничения, через запятую перечислены четыре элемента — кмР ЕМР1, кмР кмР2, оеРТ и Рно. Выражение вила кмР Амотнкн НАмк означает применение своего рода операции переименования. Внутри запроса столбцы этого «экземпляра» ЕМР имеют «квалифицированные» имена вида Амотнке НАНЕ. со1плп пале, где со1плп папе обозначает имя существующего столбца таблицы ЕМР. Вычисление оператора выборки начинается с того, что формируется расширенное декартово произведение всех таблиц, указанных в разделе РВОМ.
В данном случае схема результирующей таблицы раздела РВОМ будет содержать следующие имена столбцов: ЕМР1.КМР МО, ЕМР1.ЕМР МАМЕ, ЕМР1. ЕМР ВВАТЕ, ЕМР1. ЕМР ЯАЬ, ЕМР1.ЕМР ВОМОЯ, ЕМР1. РЕРТ МО, ЕМР1. РЕО МО, ЕМР2.ЕМР МО, ЕМР2.ЕМР МАМЕ, ЕМР2. ЕМР ВОАТЕ, ЕМР2. ЕМР ЯА1, ЕМР2.ЕМР ВОМОЯ, ЕМР2. ОЕРТ НО, ЕМР2. РВО НО, РЕРТ.ОЕРТ МО, РЕРТ.РЕРТ ЕМР МО, ВЕРТ.РЕРТ ТОТАЬ ЯАЬ, ОЕРТ.ОЕРТ ММС, РЕО.РКО МО, 258 Лекция 12 Средства определения базовых таблиц и ограничений целостности РЕО.РЕО Т1ТЬЕ, РЕО.РЕО ЯРАТЕ, РЕО.РЕО РОЕАТ, РЕО.РЕО ММС, РЕО РЕЯС. Для удобства назовем эту «широкую» таблицу Аьь тосетнее." Условие раздела мнеее состоит из четырех частей, связанных через АМР. Обсудим их последовательно.
После проверки условия емр1.емр МО РЕО. РЕО ММС в таблице АЬЬ ТОСЕТНЕЕ останутся все служащиЕ-менеджеры проектов вместе со своими проектами в комбинации со всеми возможными отделами и всеми возможными служащими (назовем эту отфильтрованную таблицу Аьь тосетнее ятер1). После проверки условия емР1.Рерт но РЕЕТ. РЕЕТ МО в таблице АЬЬ ТОСЕТНЕЕ ЯТЕРТ останутся все служащие-менеджеры проектов вместе со своими проектами и вместе с описанием своих отделов в комбинации со всеми возможными служащими (назовем эту отфильтрованную таблицу Аьь тосетнее ятер2).
после проверки условия Рерт.Рерт мис = емР2. емР мо в таблице АР1,тосетнее ЯтеР2 останутся все служащие-менеджеры проектов вместе со своими проектами, вместе с описанием своих отделов и вместе с руководителями этих отделов (по одной строке для каждого допустимого сочетания «проект-менеджер проекта-отдел менеджера проекта-руководитель отдела менеджера проекта»). Наювем эту отфильтрованную таблицу АЬЬ ТОСЕТНЕЕ ЯТЕР Ь Легко видеть, что послепроверки условия ЕМР1.ЕМР ЯАЬ + ЕМР1.ЕМР ВОМОЯ > ЕМР2.ЕМР ЯАЬ » емР2.емр вомРЯ втаблице Аьь тосетнее Ятерз могугостаться тслькостроки проект-менеджер проекта-отдел менеджера проекта-руководитель отдела менеджера проекта, в которых суммарный доход менеджера проекта превышает суммарный доход руководителя отдела, где работает менеджер проекта.
Если хотя бы одна такая строка существует, то результат оператора выборки будет иепустым, значением предиката Мот Ех1ЯТЯ будет~а1те, и тем самым ограничение целостности Рео мнс сомяте будет нарушено. Отмена определения общего ограничения целостности Для того чтобы отменить ранее определенное общее ограничение целостности, нужно воспользоваться оператором Реор Аяяеет1ом, задаваемым в следующем синтаксисе: РЕОР АЯЯЕЕТ10И сопэЬга1пс папе Вот пример оператора, отменяющего определение дискриминационного общего ограничения целостности Рео ммс сомвтрз ' Не следует воспринимать этот и следующие абзацы как описание того, как на самом леле выполняются подобные запросы в Боь-серверах. это наиболее прямолинейный и мююзффективный способ выполнения запроса (хотя, в принципе, его можно применять и на практике). Мы выбрали этот способ описания, поскольку он максимально соответствует подходу к описанию семантики языка ЯОЬ, применяемому в стандарте языка, Кстати, основным отличием более практичных способов выполнения запросов с соединением является стремление к тому, чтобы избежать явного декартова произведения.
259 Основы баз данных Курс РЕОР АЯЯЕЕТ?ОИ РЕО МИО СОИЯТРО Немедленная и откладываемая проверка ограничений На первый взгляд кажется, что ограничения целостности (всех видов) должны немедленно проверяться в случае выполнения любого действия, изменяющего содержимое базы данных (вставка в любую таблицу новой строки, изменение или удаление существующих строк). Однако можно определить такие ограничения целостности, логическое выражение которых будет принимать значение~аде при любой немедленной проверке. Одним из примеров такого ограничения является ограничение СНЕСК (ОЕРТ ЕМР ИО )ЯЕЬЕСТ СОНЕТ)*) РЕОМ ЕМР МНЕЕЕ БЕРТ ИО = ЕМР.РЕРТ МО)) из определения таблицы ОЕРТ.