Введение в системы БД (542480), страница 84
Текст из файла (страница 84)
345 Глава 8. Целостность данньп 2. Переменная-отношение ОГРЕК1М6 в этом примере является одновременно ссылающейся и ссылочной: существует ссылочное ограничение к переменной- отношению ОГГЕК1К6 от переменной-отношения ЕМКОВВМЕМТ (на самом деле от переменной-отношения ТЕАСВЕК) и от переменной-отношения ОРГЕК1М6 к переменной-отношению СООКЯЕ. ЕИКОЫВМЕИТ вЂ” + ОГГЕК1М6 — + СООКЯЕ 3.
Обратите внимание, что существует два различных ссылочных пути от переменной-отношения ЕМКОЬЬМЕМТ к переменной-отношению СОВКБЕ: один непосредственный (внешний ключ (СОВКЯЕ1» в переменной-отношении ЕККОЬЬМЕМТ) и другой — непрямой, через переменную-отношение ОГРЕК1М6 (внешние ключи (СООКБЕ(,ОГР1) в переменной-отношении ЕМКОВЬМЕМТ и (СООКБЕ1) в переменной-отношении ОРРЕК1М6). ЕИК01ЬМЕМТ -+ ОРГЕК1М6 -+ СООКБЕ Однако в действительности эти пути не являются независимыми (верхний путь представляет собой комбинацию двух нижних).
Более подробное обсуждение этого вопроса можно найти в [8.10). 4. Также существует два различных ссылочных пути от переменной-отношения ГЕККЕЛЕ к переменной-отношению СООКЯЕ, но на этот раз они действительно независимы (и имеют совсем разный смысл). И вновь за подробным обсуждением обратитесь к (8.10). 8.11. Ссылочная диаграмма показана на рис. 8.2. Обратите внимание, что в базе данных имеется ссылочный цикл (т.е, существует ссылочный путь от каждой из двух переменных-отношений к самой себе). Поскольку определение базы данных для этого упраж- Рис. 8.2. Ссылочлал диаграима с пения несложное, мы его опускаем и не циклом вдаемся в подробности.
8.12. Ниже приведены только определения переменных-отношений (и лишь схематически). ЧАК ЕМР ВАЯЕ КЕ1АТ10М ( ЕМР1 / ЛОВ ... ) РК1МАКУ КЕУ ( ЕМР$ ) ЧАК РОМК ВАЯЕ КЕ1АТ10М ( ЕМР1 ВАНО ... РК1МАКУ КЕУ ( ЕМР) ) 346 Часть 11. Реляционная модель ГОКЕ16Н КЕУ ( ЕМР(( ) КЕГЕКЕНСЕЯ ЕМР ОН ПЕНЯЕТЕ САБСАПЕ ОН ПРПАТЕ САЯСАПЕ ) Пояснения 1. В этом примере иллюстрируется наше замечание о том, что внешний ключ может быть также потенциальным ключом содержащей его переменной отношения. В переменной-отношении ЕМР содержится список всех служащих, а в переменной-отношении РОМК вЂ” список тех служащих, которые работают программистами.
Поэтому каждый номер служащего, присутствующий в переменной-отношении РОМК, должен присутствовать и в переменной-отношении ЕМР (заметьте, что обратное утверждение неверно). Поэтому первичный ключ переменной-отношення РОМК также является внешним ключом, ссылающимся на первичный ключ переменной-отношения ЕМР. 2. Отметим, что в этом примере существует еше одно ограничение целостности, которое также необходимо поддерживать: служащий должен быть представлен в переменной-отношении РОМК тогда и только тогда, когда значение атрибута ЕМР.ЛОВ для этого служащего — 'Программист'.
Однако это, безусловно, не ссылочное ограничение. 8.14. Отметим, что приведенные ниже варианты решения для пп. а и б — зто лишь приближения к их аналогам, представленным в ответах к упр. 8.1. а) СКЕАТЕ ПОМА1Н С1ТТ СНАХ(15) ЧАК11НО СОНЯТКАТНТ ЧА1 10 С1ПЕЯ СНЕСК ( ЧА1ЛЕ 1Н ( 'Попбоп', 'Раг1в', 'Коме', 'Ас)зепв', 'Ов1о', 'ЯсосХЬо1п', 'Маг)гТБ', 'Амвгегг(ап' ) ) б) СКЕАТЕ ПОМА1Н Я() СМАК(5)ЧАК11НО СОНБТКА1НТ ЧАЫП Б() СНЕСК ( ЯПВЯТК1ЙО ( ЧАЫЕ РВОМ 1 ГОК 1 ) = 'Я' АНП САЯТ ( БПВБТВ1НО ( ЧА(ЛЕ ГНОМ 2 ) АЯ 1НТЕОЕК ) >= 0 АНП САЯТ ( БПВБТК1НО ( ЧАЬПЕ ГВОМ 2 ) АЯ 1НТЕОЕК ) <= 9999 ) 1 в) СКЕАТЕ АЯЯЕКПОН БОЬ С СНЕСК ( Р.СО(,ОК <> 'Квб' ОК Р.НЕ1ОНТ < 50.0 ) г) СКЕАТЕ АЯБЕКПОН БОБ 0 СНЕСК ( КОТ ЕХ1ЯТЯ ( БЕЗВЕСТ * ГНОМ Л ЮХ ИНЕКЕ ЕХ1ЯТБ ( БЕЬЕСТ " ГНОМ П ЛУ ИНЕКЕ ( ЮХ.П(( <> ЛУ.П() АНП ПХ.С1ТГ = Л.С1ТХ ) ) ) ) ; д) СКЕАТЕ АББЕКТ1ОН БОЬ Е СНЕСК ( ( БЕЗВЕСТ СОПНТ (*) ГНОМ Б ИНЕКЕ Б.С1ТУ = 'АГЬепв' ) < 2 ) е) СКЕАТЕ АЯЯЕКТ1ОН ЯОЬ Г СНЕСК ( НОТ ЕХ1БТБ ( БЕЗВЕСТ * ГНОМ БРЛ ЯРЛХ ННЕКЕ БРЮК.ОТУ > 2 " Глава 8.
Целостность данных 347 ( ЯЕЬЕСТ АЧЯ ( БРЛ.ОТГ ) РВОМ ЯРЛ ЯРЛУ ) ] ) ж) СКЕАТЕ АБЯЕКТ10М ЯОЬ 6 ( ЮТ ЕХ1ЯТБ ЕХ1ЯТБ СНЕСК ( БЕЬЕСТ Я РВОМ Б ЯХ ИНЕКЕ ( БЕЬЕСТ * ГЮМ Я ЯХ ИНЕКЕ ЯХ.БТАТОЯ = ( БЕЬЕСТ МАХ ( Я.ЯТАТНБ ) ГЮМ Я ) АМО ЯУ.ЯТАТОБ = ( ЯЕЬЕСТ МХМ ( Б.БТАТОБ ) ГЮМ Б ) АМО БХ.БАТОН <> БУ.БТАТОБ АМО ЯХ.СХТХ = БУ.ОХТУ ) ) ) СНЕСК ( ЯЕЬЕСТ * ГКОМ 1 ИНЕКЕ ( ЯЕЬЕСТ * ГКОМ Я ИНЕКЕ Я СХТХ т СХТХ ) ) ) ) СНЕСК ( ЯЕЬЕСТ * ГКОМ Л ИНЕКЕ ( БЕЬЕСТ " РВОМ Я ИНЕКЕ Б.СХТУ = Х.СХТУ АМО ЕХ1БТЯ ( ЯЕЬЕСТ * РЮМ БРЛ ИНЕКЕ БРХ.Б» = Я.Б» АМО ЯИ.Х» = Л.Л» ) ) ) ) з) СКЕАТЕ АЯЯЕКТХОМ ЯОЬ Н ( МОТ ЕХ1ЯТБ ЮТ ЕХ1ЯТБ и) СКЕАТЕ АББЕКТХОМ ЯОЬ 1 ( МОТ ЕХ1БТЯ МОТ ЕХ1ЯТБ 348 Часть 11. Реляг»ионная модель к) СКЕАТЕ АБЯЕКТ10М БОЬ д СНЕСК ( МОТ ЕХ1БТЯ ( БЕЬЕСТ * ГНОМ Р ) ОК ЕХ1БТЯ ( БЕЬЕСТ " ГНОМ Р ИНЕКЕ Р.СОЬОК = 'Кеб' ) ) л) СКЕАТЕ АЯЯЕКТ10М ЯОЬ К СНЕСК ( ( БЕЬЕСТ АЧО ( Б.ЯТАТОЯ ) ГНОМ Я ) > 18 ) ) Если таблица поставщиков пуста, 9"Н -оператор АЧЯ буде~ (ошибочно!) возвращать нулевое значение, результатом условного выражения будет значение неизвестно и ограничение не будет считаться нарушенным.
В главе )8 можно получить дополнительные сведения по атому вопросу. м) СКЕАТЕ АБЯЕКТХОМ ЯЦЬ Ь СНЕСК ( МОТ ЕХ1БТЯ ( ЯЕЬЕСТ * ГНОМ Б ИНЕКЕ Б.СХТУ = 'Ьопг)оп' АЮ МОТ ЕХ1БТБ ( ЯЕЬЕСТ * ГКОМ БРБ ИНЕКЕ ЯРЛ.Я» = Б.Я» йЮ ЯРЛ.Р» = 'Р2' ) ) ) н) СКЕАТЕ АЯЯЕКТ10М ЯОЬ М СНЕСК ( МОТ ЕХ1БТБ ( ЯЕЬЕСТ * ГЮМ Р ИНЕКЕ Р.СОЬОК = 'Кег)' ) ОК ЕХ1ЯТБ ( ЯЕЬЕСТ * ГЮМ Р ИНЕКЕ Р.СОЬОК = 'Кег)' АМО Р.ИЕХЯНТ < 50.0 ) ) ) Глава 9 Представления 9.1. Введение Как отмечалось в главе 3, представление, по сути, является именованным выражением реляционной алгебры (или чем-либо, что равносильно выражению реляционной алгебры).
Например: ЧАЕ 6000 ЯЧРРЫЕЕ Ч1Ен ( Я ИЕЕЕЕ БТ)ггйЯ > 15 ) ( Я)), ЯТМЧЯ, 01ТУ ) Когда данный оператор выполняется, выражение реляционной алгебры (т.е. выражение определения представления) не вычисляется, а просто запоминается системой посредством его записи в катало~ базы данных под указанным именем 6000 ЯЧРРЫЕЕ. Тем не менее со стороны пользователя это выглядит так, как будто в базе данных существует реальная переменная-отношение 6000 БЧРРЫЕЕ с собственными кортежами и атрибутами, показанными в незатененной части рис.
9.1 (имеется в виду, конечно, наш обычно используемый пример значений данных). Другими словами, имя 6000 ЯБРРЫЕЕБ обозначает производную (и виртуальную) переменную-отношение. Ее значение в любой момент представляет собой отношение, которое было бы получено в качестве результата в случае, если бы определяющее представление выражение было дейс~вительно вычислено в данный момент. Рнс. 9.1. Представление 6000 ЯЯРРЫЕЕ как заданный фра чент базовой нереченной- отнои~ении Я (незатененные части таблины) В главе 3 также было показано, что любое представление в некотором смысле можно считать просто окном для просмотра данных.
Любые изменения, вносимые в исходную базовую таблицу, будут автоматически н мгновенно отображаться в представлении (как в окне), конечно, если они попадут в область видимости данного представления. И наоборот, все изменения, вносимые в представление, будут автоматически переноситься в данные исходной базовой таблицы, в результате чего станут видимы и в самом представлении.
зло Часть 11. Реляг(ионная модель В реальной ситуации многие пользователи могут даже не предполагать, что 6000 БНРРЫЕК вЂ” это представление. Одни пользователи могут знать об этом, а также о том, что существует реальная переменная-отношение Б, тогда как другие могут искренне верить, что 6000 БУРРХХЕКЯ вЂ” настоящая переменная-отношение. Но в любом случае главное то, что с представлением можно работать так, как будто оно является настоящей переменной-отношением.
Приведем пример запроса к представлению 6000 БНРРьХЕК. 6000 ЯНРРНХЕК ННЕКЕ СХТУ ~ 'Ьодбол' Ниже показан результат выполнения этого запроса. Этот запрос, безусловно, похож на обычный запрос к обычной "реальной" переменной-отношению. Как отмечалось в главе 3, система обрабатывает запросы подобного типа путем их преобразования в запросы к базовой переменной-отношению (или базовым переменным-отношениям). Подобное преобразование осуществляется посредством замены в определении запроса всех вхождений имени предо гавления тем выражением, которое его определяет. В нашем примере после процедуры подстановки будет получен следующий запрос. ( ( Я ЯНЕКЕ БТКТНЯ > 15 ) ( Б(), ЯТКТНБ, С1ТУ ) ) ННЕКЕ СХТХ ~ 'Ьопбоп' Данное выражение можно легко преобразовать в более простую форму. ( Я ЯНЕКЕ БТКТНЯ > 15 ййй СХТУ я 'Ьопбол' ) ( Я(), ЯТКТЦБ, СХТХ ) ! Результат вычисления последнего выражения совпадает с приведенным выше результатом запроса к представлению.
В этой связи необходимо отметить, что процесс подстановки (т.е. процесс замены имени представления определяющим его выражением) выполняется корректно вследствие рсляиионного свойства заикнутости. Свойство замкнутости (кроме всего прочего) означает, что в любом месте выражения, где разрешено использовать имя переменной- отношения й, вместо него можно применять некоторое выражение Х (естественно, предполагается, что в результате вычисления выражения Х мы получим отношение того же типа, что и й). Другими словами, представления работают точно, поскольку для реляционной алгебры множество всех отношений замкнуто, и это еще один пример, подтверждающий фундаментальное значение свойства реляционной замкнутости. Операции обновления на представлениях обрабатываются аналогично.
Например, рассмотрим следующую операцию. НРРКТЕ 6000 ЯНРРьХЕК ЯНЕКЕ СХТУ = 'Раг1в' ЯТКТНЯ := БТКТНЯ + 10 При обработке она будет приведена к такому виду. зя Глава 9. Представления НРОАТЕ Я ИНЕВЕ ЯТАТОБ > 15 АКО С?ТУ = 'Раг1в' ЯТАТНЯ := ЯТАТНЯ + 10 Для операций 1ИЯЕВТ и ОЕЬЕТЕ применяется тот же подход. Дополнительные примеры В этом подразделе представлено несколько примеров, на которые в дальнейшем мы будем ссылаться.