Введение в системы БД (542480), страница 60
Текст из файла (страница 60)
<ссылка на атрибут кортежа> <имя переиеааой кортежа>. <ссылка ва атрибут> ( КН <имя атрибута> ) Параметр <ссылка ва атрибут кортежа> может использоваться как параметр <выражение>, но только в определенном контексте, а именно: ° как операнд параметра <логическое выражение>; ° как параметр <лрототвл кортежа> илн как (операнд) подпараметр <выражение> в параметре <лрототил кортежа>. <логическое вмрахенве> ::= ... все обычные возможности вместе с: <логическое вираженве с квавторон> Ссылки на переменные кортежей в значении параметра <логическое выражение> могут быть свободными в пределах этого параметра тогда и только тогда, когда выполнены два следующих условия. ° Параметр <логическое выражеляе> расположен непосредственно после параметра <реляцвонвая операция> (т.е.
параметр <логическое выражение> следует сразу за ключевым словом ИНЕКЕ). ° Ссылка (обязательно свободная) именно на эту переменную кортежа непосредственно присутствует в значении параметра <лрототвл кортежа>, непосредственно содержащегося в том же выражении <реляционная операция> (т.е. параметр <прототип кортежа> располагается непосредственно перед ключевым словом ЯНЕКЕ). Заиечание по терминологии. В контексте реляционного исчисления (в версии исчисления доменов нлн исчисления кортежей) логические выражения часто называют правильно построенными формулами (ччеН-Уоппед Гоппп)аз — 'чч'Гг, что произносится как "вэфф"), Далее мы также будем часто пользоваться этой терминологией.
<логическое выражевве с квантором> ЕХТБТЯ <имя леремелвой кортежа> ( <логическое выражение> ) ) ЕОККЬЬ <имя переменной «ортежа> ( <логическое выражение> ) 3 Как и в главе б, мы не приводим здесь подробного описания параметра <выражеиие кортежа>, надеясь, что общая идея его построения будет понятна из примеров 246 Часть зз. Реляционная модель <реляциоииая операция> <прототип кортежа> ( ЯНЕКЕ <логическое виражеиие> ) В реляционной алгебре, рассмотренной в главе б, параметр <реляциоииая операция> представлял собой одну из форм параметра <реляциоииое виражеиие>, однако здесь он определяется иначе.
Другие формы параметра <реляционное виражеиие> (в основном, имена переменных-отношений и обращение к операторам выбора) допустимы, как и ранее. <лрототип «артека> <виражеиие кортежа> Все ссылки на переменные кортежа, помещенные непосредственно в значение параметра <лрототил кортежа>, должны быть свободными в пределах данного параметра <прототип кортежа>. Замечание.
Прототип кортежа — термин удачный, но не стандартный. Переменные кортежей Приведем несколько примеров определения переменных кортежей (выраженных, как обычно, в контексте базы данных поставщиков и деталей). КАНСЕЧЛК БХ ВАНСЕН ОЧЕР Я КАНСЕЧЛК Яу ВАНСЕН ОЧЕК Б КЛНСЕЧЛК БРХ ВАНСЕН ОЧЕК ЯР ВАМСЕЧАК ЯРУ ВАНСЕН ОЧЕК ЯР ) КАНСЕЧЛК РХ ВАНСЕН ОЧЕК Р КАНСЕЧЛК БО ВАНСЕН ОЧЕК ( ЯХ ЯНЕКЕ БХ.С1ТУ = 'Ьопг(оп' ) ( БХ ИНЕКЕ ЕХ1ЯТЯ ЯРХ ( ЯРХ.Я№ = БХ.Я№ ЛНО БРХ.Р№ ЯРХ = Р№ ( 'Р1' ) ) ) ; Переменная кортежа ЯО из последнего примера определена на объединении множества кортежей поставщиков, находящихся в Лондоне, и множества кортежей поставщиков детали с номером 'Р1'.
Обратите внимание, что в определении переменной кортежа БО используются переменные кортежей БХ и БРХ. Также обратите внимание на то, что в подобных определениях переменных, построенных на объединении отношений, объединяемые отношения, безусловно, должны быть совместимы по типу. Замечание. Переменные кортежей не являются переменными в обычном смысле (как в языках программирования); они являются переменными в логическом смысле. В действительности они в значительной мере аналогичны местодержателям или параметрам предикатов, обсуждавшихся в главе 3. (Различие состоит в том, что на место параметров предикатов, обсуждавшихся в этой главе, подставляются значения из некоторого домена, а на место переменных кортежей подставляются кортежи.) Далее в этой главе предполагается, что приведенные выше определения переменных кортежей остаются в силе.
Следует отметить, что в реальном языке должны быть определенные правила относительно области действия таких определений. В настоящей главе этот вопрос не рассматривается. 247 Глава 7. Реляционное исчисление Свободные и связанные переменные кортежей Каждая ссылка на переменную кортежа (в некотором контексте, в частности в формуле %ГГ) является или свободной, или связанной. Сначала поясним зто утверждение в чисто синтаксических терминах, а затем перейдем к обсуждению его смысла. Пусть ч — переменная кортежа.
Тогда имеем следующее. ° Ссылки на переменную Ч в формулах %ГГ типа ЯОТ р свободны или связаны в пределах этой формулы в зависимости от того, свободны ли они в формуле р. Ссылки на переменную Ч в формулах %ГГ типа (р ййО и) и (р Ой и) свободны или связаны в зависимости от того, свободны лн они в формулах р и и. ° Ссылки на переменную Ч, которые свободны в формуле %ГГ р, связаны в формулах %ГГ типа ЕХ1ЯТЯ Ч(р) и РОВАЬЬ Ч(р). Другие ссылки на переменные кортежей в формуле р будут свободны или связаны в формулах %ГГ типа ЕХ1БТЯ Ч(р) и РОВАЬЬ Ч(р) в соответствии с тем, свободны ли они в формуле р. Для полноты необходимо добавить следующие замечания. ° Единственная ссылка на переменную Ч в значении параметра <имя переменной кортежа> является свободной в пределах этого параметра <имя переменной кортежа >.
° Единственная ссылка на переменную Ч в значении параметра <ссылка иа атрибут «артека> Ч.й является свободной в пределах этого параметра <ссылка иа атрибут кортежа>. ° Если ссылка на переменную Ч является свободной в некотором выражении вхр, то эта ссылка будет также свободной в любом выражении ехр', непосредственно содержащем выражение вхр как подвыражение, если только в выражении ехр' не вводится квантор, связывающий переменную Ч. Приведем несколько примеров формул %ГГ, содержащих переменные кортежей. ° Простые сравнения БХ.Я() = Я() ( 'Я1' ) БХ.Я() = ЯРХ.Б() ЯРХ.Р() Ф РХ.Р() Здесь все ссылки на переменные БХ, РХ и БРХ являются свободными.
° Логические выражения из простых сравнений РХ ЕЕ16НТ < ИЕ16НТ ( 15.5 ) Ой РХ.С1ТХ = 'йопе' НОТ ( БХ.С1ТХ = 'Ьопбоп' ) ЯХ.Б() = БРХ.Я() йЕО БРХ.Р() Ф РХ.Р() РХ.СОЬОВ = СОЬОЕ ( 'йеб' ) Ой РХ.С1ТХ = 'Ьопбоп' Здесь также все ссылки на переменные БХ, РХ и БРХ являются свободными.
г~з Часть П. Реляционная модель ° Формулы )УГГ с кванторами ЕХ1ЯТЯ ЯРХ ( ЯРХ.Б() = ЯХ.Я() АБО ЯРХ.Р() = Р() ( 'Р2' ) ) РОЕАЬЬ РХ ( РХ.СОЬОЕ = СОЬОЕ ( 'Ееб' ) ) В этих примерах ссылки на переменные ЯРХ и РХ являются связанными, а ссылка на переменную БХ является свободной. Подробнее данные примеры объясняются ниже. Кванторы Существует два квантора: ЕХ1ЯТЯ и РОЕАЬЬ. Квантор ЕХ1ЯТБ является квантором существования, а РОЕАЬЬ вЂ” квантором всеобщности. По сути, если выражение р — форму- ла %ГГ, в которой переменная Ч свободна, то выражения ЕХ1ЯТЯ Ч ( Р ) РОЕАЬЬ Ч ( Р ) также являются допустимыми формулами %ГГ, но переменная Ч в них обеих будет связанной. Первая формула означает следующее: "Существует по крайней мере одно значение переменной Ч, такое, что вычисление формулы р дает для него значение истина".
Вторая формула означает следующее: '"Для всех значений переменной Ч вычисление формулы р дает значение истина". Предположим, например, что переменная У изменяется на множестве "Члены сената США в 1999 году", и предположим также, что выражение р — следующая формула %ГГ; "Ч вЂ” женщина" (разумеется, мы не пытаемся использовать здесь формальный синтаксис). Тогда выражение ЕХ1ЯТБ Ч(р) будет допустимой формулой %ГГ, имеющей значение истина (ггое); выражение РОЕАЬЬ Ч(р) также будет допустимой формулой %ГГ, но вычисление его значения будет давать значение лажа (га(зе). Теперь рассмотрим квантор существования ЕХ1ЯТЯ более внимательно. Еще раз обратимся к примеру из предыдущего раздела.
ЕХ1ЯТЯ ЯРХ ( ЯРХ.Я() = ЯХ.Б() АБО ЯРХ.Р() = Р() ( 'Р2' ) ) Из приведенных ранее рассуждений следует, что эта формула %ГГ может быть прочитана следующим образом. В тез9лаем значении переменной-отношения ЯР гзляествует кортеж (скажем, ЯРХ), такой, для каторага значение атрибута ЯР в это.и кортеже равно значению атрибу та ЯХ. ЯР (какое бы она ни было), а значение атрибута РР в кортеже ЯРХ равна 'Р2 '. Каждая ссылка на переменную БРХ в этом примере является связанной. Единственная ссылка на переменную БХ свободна. Формально квантор существования ЕХ1БТЯ определяется как повторение операции Ой (ИЛИ).
Другими словами, если г — это отношение с кортежами с1, с2, ..., Тзв, Ч вЂ” это переменная кортежа, изменяющаяся на данном отношении, и р(Ч) — это формула %ГГ, в которой переменная Ч используется как свободная переменная, то формула %ГГ вида ЕХ1ЯТЯ Ч ( р ( Ч ) ) 249 Глава 7. Реляционное исчисление равносильна следующей формуле ЧЧГГ. Са1ве Ой р ( С1 ) Ой ... Ой р ( Ся ) В частности, обратите внимание, что если отношение й пустое (т.е. я=о), то результатом вычисления данного выражения будет значение ложь. Рассмотрим в качестве примера отношение г, содержащее следующие кортежи.
Для простоты предположим, что три атрибута, идущие по порядку слева направо, имеют имена А, В и С соответственно и каждый из этих атрибутов имеет тип 1НТЕОЕВ. Тогда приведенные ниже выражения будут иметь указанные значения. Теперь рассмотрим квантор общности РОВАЬЬ, для чего вернемся к соответствующему примеру из предыдущего раздела. РойАЬЬ РХ ( РХ.СОЬОй = СОЬОВ ( 'йед' ) ) Эта формула %ГГ может быть прочитана следующим образом. 8 текущем значении переменной-отнаиченил Р длл всех кортежей (скажем, РХ) значение их атрибута СОЬОВ равно Чед'. Обе ссылки на переменную РХ в этом примере связаны. Подобно тому, как квантор ЕХ1ЯТЯ был определен как повторение операции Ой, квантор существования РОВАЬЬ определяется как повторяющаяся операция АНО (И). Другими словами, если обозначения г, Ч и р(Ч) имеют тот же смысл, что и в приведенном выше определении квантора ЕХ1ЯТБ, то формула ЧЧГГ вида РОВАЬЬЧ(р(Ч)) равносильна следующей формуле ЧЧГГ.