Введение в системы БД (542480), страница 82
Текст из файла (страница 82)
Кока К. б. ТЬе Вцгдпеьа Кисе Воо1с: Ссазз[Гусп8, Ребпспй, апд Модейп8 Кц1ез (Чегсдоп 3.0). — Воз!оп, Маза.: РасаЬазе Кезеагсй бгоцр, 1994. См. аннотацию к [8.19). Коза К. б. Вцаспева Косе Сопсерсз. — Ноцзсоп, Тхд Вцгдпеьа Кисе Яо!цйопз, 1пс., 1998. На протяжении нескольких последних лет в коммерческих продуктах получила широкое распространение поддержка бизнес-правил. Некоторые ведущие специалисты компьютерной индустрии стали склоняться к тому, что они могут представлять собой лучшую основу для разработки и построения баз данных и их приложений (т.е. лучшую, чем ранее признанные методы, подобные созданию моделей "сущность-связь", объектному моделированию, семантическому моделированию и т.д.).
И мы с этим согласньс, поскольку бизнес-правила, по существу, представляют собой ни что иное, как более дружественный пользователю (т.е. менее академический и менее формальный) способ описания предикатов, утверждений и прочих аспектов целостности данных, обсуждавшихся в настоящей главе. Автор этой работы является одним из основных защитников подхода, основанного на использовании бизнес-правил, и его книги рекомендуются всем серьезным практикам. В [8.18) дано исчерпывающее освещение рассматриваемой темы, а [8.19) представляет собой краткое учебное пособие. ЯсопеЬга1сег М.К., %оп8 Е. Ассеьв Сои!го! сп а Ке1асюпас Раса Вазе Мапайегпепс Бумегп Ьу Овесу Могййсас!оп 0 Ргос.
АСМ Ь)а!!опас Сопà — 1974. Университетский прототип СУБД ПябКЕЯ [7.1!1 был пионером в интересном подходе к реализации ограничений целостности (и ограничений безопасное~и также; см. главу 16), основанном на модификации запроса. Ограничения целостности определялись с помощью оператора ОЕГ1КЕ 1КТЕОК1ТХ, имеющего следующий синтаксис. ОЕГ1НЕ 1НТЕОК1ТХ ОН <имя перемеииой-отаоиеиия> 1Я клогическое имраиеиие> Например; ОЕР1КЕ 1НТЕОКХТХ ОН Я 18 Я.БТАТОБ > 0 Допустим, что пользователь О пытаешься выполнить операцию КЕРЕАСЕ языка Ос) е1..
КЕРЬАСЕ Я ( ЯТАТОЯ = Б.ЯТАТОЯ - 10 ) С!БЕКЕ Я.С1ТХ = "Еопдоп" 336 Часть Д: Релиз(ионная модель В системе ВчСгКЕЯ она будет автоматически заменена следуюшей операцией, НЕРЬАСЕ Б ( ЯТАТОЯ = Я.ЯТАТОБ - 10 ) ИНЕНЕ Я.С1ТУ = "Ьопдоп" АНО ( Я.ЯТАТОЯ - 10 ) > 0 8.21. 8.22. Ответы к некоторым упражнениям 8.1. а) ТУРЕ С1ТУ РОББНЕР ( СОНЯТНА1ИТ ТНЕ С1ТУ ОН ТНЕ С1ТУ ОН ТНЕ С1ТУ ОН ТНЕ С1ТХ Ой ТНЕ С1ТУ СНАЯ ) (С1ТУ ) = 'Ьолдоп' (С1ТУ ) = 'Рагзв' (С1ТУ ) = 'Ноже' (С1ТУ ) = 'МЬедв' (С1ТУ ) = 'Ов1о' 337 Глава 8.
Целостность данных Конечно, измененная таким образом операция не сможет нарушить ограничение целостности. Недостатком этого подхода является то, что не все ограничения целостности могут быть реализованы таким же простым способом. Фактически в языке О()ЕЬ поддерживаются только ограничения, которые задаются на основе простого ограничиваюшего условия. Однако даже такую ограниченную поддержку целостности в то время можно было найти далеко не во всех системах.
1УаНгег А., Яа!гегег Я. С. Ац!оглацс Мод!Всаг!оп оУТгапзас!!опз го Ргезегче Раса Вазе |пгеЕПгу %11Ьоцг 1)пдо|пй 1)рдагеж Тесйп|са! Керогг 81!026. — Ягопу Вгоо1с, Х.У.: Бгаге 1)п!кегедгу оУХегч Уог1с, )цпе, 1981. В этой работе описан метод автоматической модификации любого "шаблона транзакции" (т.е. исходного кода транзакции) в соответствуюший безопасный шаблон, который является безопасным в том смысле, что ни один экземпляр транзакции, созланной в соответствии с данным модифицированным шаблоном, не сможет нарушить заданные ограничения целостности.
Этот метод функционирует за счет добавления к исходному шаблону запросов и тестов, предназначенных для того, чтобы еше до выполнения обновления можно было получить гарантии, что никакие ограничения целостности не будут нарушены. Если один из этих ~сотов во время выполнения даст неудовлетворительный результат, транзакция будет отменена с выдачей сообшения об ошибке.
9|г|догп 1. апс1 Сеп' Я. (еды). Асйге Ра!аЬазе Яузгегпж Тг!88егз апд Кц!ез Уог Адхапсед РагаЬазе Ргосеьа!пй. Яап Ргапс!зсо, Сайбх Мог8ап Кацйпапп, 1996. Это полезный конспект исследований и руководств по "активным системам баз ланных" (т.е. системам баз данных, которые автоматически выполняют определенные действия в ответ на определенные события; другими словами, по системам с триггерными процедурами). Здесь описано несколько прототипов систем, в частности СУБД ЯгагЬцгяг лаборатории |ВМ КезеагсЬ (25.26], (25.14], [25.17], [25.21], [25,22] и СУБД Роз!Егез Калифорнийского университета в Беркли [25.26], [25,30], [25.32].
В этой книге также излагаются вопросы, относяшиеся к стандартам ЯОЬ!92, Я >ЬЗ (начальной версии) и некоторым коммерческим продуктам (к СУБД Огас|е, 1пТопп|х и 1пЯгез в том числе). Также в книге представлена обширная библиография, ОК тНЕ С?тХ (С?тХ ) = 'ЯУосХАо?ш' ОК тНЕ С?тХ (С?тУ ) = 'Иас)г?с)' ОК ТНЕ С1ТУ (С1ТУ ) = 'Ашябегбаш' Очевидным вариантом сокращенной записи этого выражения может быть следующий. ТУРЕ С1ТХ РОЯБВЕР ( СНАВ ] СОКБТВА1КТ ТНЕ СХТХ ( С1ТУ ) 1К ( 'Ьопс(оп' , 'Раг?в' 'Роше' , 'Асйепв' 'Оя?о' , 'ЯСос)сйо?ш' 'ИасЫс)' , 'Ашя0егс(аш' ) ; б) ТУРЕ Я» РОЯЯВЕР ( СНАК ) СОКЯТВА1КТ яовятВ ( тне я» ( я» ), 1, х ) = 'я' Ако сАят Ая хктеоен (БОВБТВ ( тне я» ( я» ), 2 ) > 0 Ако сАят Ая Хктеоек (яонятн ( тне Б» ( Б» ), 2 ) < яяяя ; Здесь подразумевается, что в системе существуют операторы выделения подстроки ЯОНБТК и явного преобразования типов САЯТ Ая ХКТЕОЕВ.
в) СОКЯТВА1КТ С 1Я ЕИРТХ ( Р КНЕКЕ КЕ?ОНТ > КЕ?ОНТ ( 50.0 ) ) г) СОКБТКА1КТ 0 СООКТ ( о ) = СООКТ ( Ю ( С1ТУ ) ) ) д) СОКЯТВА1КТ Е СООКТ ( Я КНЕКЕ С1ТХ = 'АОАепя' ) < 1 ; е) СОКЯТВА1КТ Р ХЯ ЕИРТУ ( ( ЕХТЕКО БРо А00 2* АЧБ ( ЯРЮ, ОТУ ) АБ Х ) КНЕКЕ ЦТУ > Х ) ) ж) СОКБТВА1КТ 6 1Я ЕМРТУ ( ( Я КНЕКЕ ЯТАТОЯ = МХК ( Б ( ЯТАТОЯ ) ) ) МОХК ( Я КНЕВЕ ЯТАТОЯ = ИАХ ( Б ( ЯТАТОЯ ) ) ) ) В действительности понятия "поставщик с наибольшим статусом" и "поставщик с наименьшим статусом" не очень хорошо определены, поскольку значения статуса не являются уникальными.
Заданное требование интерпретируется так, что если Бх и Яу — некоторые поставщики с "наибольшим статусом" и "наименьшим статусом" соответственно, то Бх и Яу не должны находиться в олном городе. Также включена проверка того, что "наибольший статус" н "наименьший с~атус" не равны между собой, иначе заданное требование не будет выполняться, в частности оно будет нарушаться, если существует лишь один поставщик. з) СОКБТВА1КТ Н 1Я ЕИРТУ ( Ю ( С1ТУ ) М?КОБ Я ( С?ТУ ] ) у и) СОКЯТВА1КТ 1 ХЯ ЕИРТХ ( 1 КНЕВЕ КОТ ( ТОРЬЕ ( С1ТУ С1ТХ ) 1К (,? (,?» ) ЮО?К БР?,?01К Я ) ( С1ТУ ) ] ) к) СОКЯТВА1КТ Ю КОТ ( 1Я ЕМРТХ ( Р ЙНЕКЕ СОЬОК = СОЬОК ( 'Кеб' ) ) ) ) Заданное ограничение буде~ нарушено, если деталей нет совсем.
Лучшей формулировкой ограничения могла бы быть такая. СОКЯТВА1КТ Ю 1Я ЕМРТУ ( Р ) ОК КОТ ( 1Я ЕИРТХ ( Р КНЕКЕ СОЬОК = СОЬОВ ( 'Кес)' ) ) ) ; 338 Часть )). Реляционная модель л) СОИЯТВА1ИТ К 1Р ИОТ ( 1Я ЕМРТУ ( Я ) ] ТНЕИ АРРО ( Я, ЯТАТОБ ) > 18 ЕИО ХР р В данном случае проверка существования поставщика необходима, поскольку вычисление функции АРРО при отсутствии аргумента могло бы привести к возникновению исключительной ситуации. м) СОМБТВА1ИТ Ь 1Б ВИРТУ ( ( Я ИНЕВЕ С1ТХ = 'Ьопс]оп' ) ( Я(] ) М1ИОБ ( ЯРЮ ИНЕВЕ Р) = Р(] ( 'Р2' ) ) ( Я$ ) ) н) СОИБТВА1ИТ М 1Я ЕМРТХ ( Р ) ОВ ИОТ ( ХБ ЕМРТУ ( Р ИНЕВЕ СОЬОВ = СОЬОВ ( 'Вер(' ) АМО ИЕ16НТ < ИЕ16НТ ( 50.0 ) ) ) о) СОИЯТВА1ИТ И СОНЕТ ( ( ( Я ИНЕВЕ С1ТУ = 'Ьопбоп' ) ЛОХИ БРЛ ) ( Р(] ) ) > СОНИТ ( ( ( Б ИНЕВЕ СХТУ = 'РагЬя' ) ЛОХМ ЯРЛ ] ( Р(] ) ) п) СОМЯТВАХМТ О БОМ ( ( ( Б ИНЕВЕ ОХТУ = 'Ьопбоп' ) 0018 ЯИ ), ()ТХ ) > БНМ ( ( ( Я ИНЕВЕ С1ТУ = 'РаНя' ) ЛОХИ ЯРЮ ), ОТХ ) р р) СОИЯТВАХИТ Р ХБ ЕМРТХ ( ( БРЛ ЛОХИ ( БРЮ' НЕМАНЕ ()ТХ АЯ ОТХ' ) ) ИНЕВЕ ()ТУ > 0.5 " ОТХ' ) р с) СОИЯТВАХИТ () ХБ ЕМРТХ ( ( Я ЯОХИ ( Б' ИНЕВЕ СХТХ = 'АЕАепя' ) ) ИНЕВЕ С1ТХ е 'Апррепя' АИО С1ТУ е 'Ьопбоп' АВО С1ТУ е 'РагХя' ] АИО 1Я ЕМРТУ ( ( Б ЛОХИ ( Б' ИНЕВЕ С1ТУ = 'Ьопс]оп' ) ) ИНЕВЕ С1ТУ е 'Ьопбоп' АИО СХТУ и 'РагХя' ) р В качестве вспомогательного упражнения можно попытаться сформулировать предыдущие ограничения в стиле реляционного исчисления, а не в стиле реляционной алгебры.
8.2. Первые два ограничения, безусловно, являются ограничениями типа. Среди оставшихся ограничений в — ж, к, л, и, р и с — это ограничения переменной-отношения, а все остальные — ограничения базы данных. 8.3. а) Обращение к оператору выбора значения типа С1ТУ. б) Обращение к оператору выбора значения типа Я(]. в) Операция вставки кортежа (1ИБЕВТ) в переменную-отношение Р, операция обновления (НРОАТЕ) значения атрибута веса детали ИЕ16НТ.
г) Операция во~анки (1ИБЕВТ) кортежа в переменную-отношение Ю, операция обновления (НРРАТЕ) значения атрибута С1ТУ вЂ” города, в котором выполняется проект. д) Операция вставки (1ИЯЕВТ) кортежа в переменную-отношение Я, операция обновления (НРОАТЕ) значения атрибута города, в котором находится поставщик С1ТУ. Глава 8. Целостность данных 339 е) Операция вставки (1НЯЕВТ) или удаления (0ЕЬЕТЕ) кортежа из переменной- отношения ЯРЮ, операция обновления (НРНАТЕ) значения атрибута размера поставки ЯТУ.
ж) Операция вставки (1НЯЕВТ) или удаления (0ЕЬЕТЕ) кортежа из переменной- отношения Я, операция обновления (НРОАТЕ) значения атрибута статуса постав- шика ЯТАТНЯ. з) Операция вставки (1НБЕВТ) кортежа в переменную-отношение Л, операция удаления (0ЕЬЕТЕ) кортежа из переменной-отношения Я, операция обновления (НРНАТЕ) значения атрибута города, в котором находится поставщик или в котором выполняется проект С1ТУ. и) Операция вставки (1ИЯЕВТ) кортежа в переменную-отношение Л, операция улаления (0ЕЬЕТЕ) кортежа из переменной-отношения ЯРЮ, операция обновления (НРНАТЕ) значения атрибута номера поставщика или номера проекта.
к) Операция вставки (1НЯЕВТ) или удаления (0ЕЬЕТЕ) кортежа из переменной- отношения Р, операция обновления (НРОАТЕ) значения атрибута цвета детали СОЬСВ. л) Операция вставки (1НЯЕВТ) или удаления (0ЕЬЕТЕ) кортежа из переменной- отношения Я, операция обновления (НРНАТЕ) значения атрибута статуса поставщика ЯТАТНЯ. м) Операция вставки (1НЯЕВТ) кортежа в переменную-отношение Я, операция улаления (0ЕЬЕТЕ) кортежа из переменной-отношения ЯРЛ, операция обновления (НРОАТЕ) значения атрибутов С1ТТ вЂ” города, в котором находится поставщик, номера поставщика БЕ или номера детали Р)). н) Операция вставки (1НЯЕВТ) или улаления (0ЕЬЕТЕ) кортежа из переменной-отношения Р, операция обновления (НРОАТЕ) значения атрибута веса детали ИЕ?БНТ.
о) Операция вставки (1НБЕВТ) или удаления (0ЕЬЕТЕ) кортежа из переменной- отношения Я или переменной-отношения БРЛ, операция обновления (НРНАТЕ) значения атрибута С1ТТ вЂ” города, в котором находится поставщик, номера поставщика Я4 или номера детали Р().
п) Операция вставки (1НЯЕВТ) или удаления (0ЕЬЕТЕ) кортежа из переменной- отношения Б или переменной-отношения ЯРЛ, операция обновления (0РОАТЕ) значения атрибута С1ТУ вЂ” города, в котором находится поставщик, номера поставщика Я)), номера детали Р)) или размера поставки ()ТТ, р) Операция обновления (НРНАТЕ) значения атрибута размера нос~анки 0ТТ. с) Операция обновления (НРНАТЕ) значения атрибута С1ТХ вЂ” города. в котором находится поставщик. 8.4.
Один тип. Уточнения "(5)" и "(3)" лучше рассматрива~ь как ограничения целосглнослпс Как отмечалось в [3.3], первое желательное следствие такого подхода состоит в том, что если переменные Х и У определены, как, скажем, СНАВ(5) и СНАВ(3) соответственно, то сравнение Х и У допустимо, поскольку в этом случае не нарушается условие, требующее, чтобы участвующие в сравнении операнды были одного и того же типа. 340 Часть |1. Реляционная модель 8.5. Мы предлагаем в качестве "чернового" следующий перечень ответов (см.
замечание в конце ответов к этому упражнению). а) Любая операция выборки из переменной-отношения А наследует все потенциальные ключи этой переменной-отношения. б) Если операция проекции включает любой потенциальный ключ К переменной- отношения А, то К будет потенциальным ключом и для результирующего отношения. В противном случае единственный потенциальный ключ результирующего отношения — это комбинация из всех атрибутов данной проекции (в общем случае).