Введение в системы БД (542480), страница 41
Текст из файла (страница 41)
В частности, возможно существование типа, значениями которого будут отношения, и, следовательно, существование отношения с атрибутами, значениями которых также являются отношения, Другими словами, возможно существование отношений, в которые вложены другие отношения. Рассмотрим, например, отношение Я ЯР, показанное на рис. 5Э.
Здесь значением атрибута РО является отношение. Заметьте, в частности, что пустому множеству деталей, поставляемых поставщиком с номером 'Я5', соответствует пустое множество (а точнее, пустое отношение). Рис. 5.3. Отношение с атрибутом, значениями которого являются отношения Обратите внимание на то, что все значения столбцов атомарные... Это значит, что на каждом месте в столбце или строке всегда находится ровно одно значение, а не группа из нескольких значений.
Поэтому, например, в таблице ЕИРмы имеем ВЕРТ№ ЕМР№ Е1 Е2 вместо ЕМР№ Е1,Е2 )ЗЕРТ№ 168 Часть 11. Реляционная модель Основной причиной того, что здесь явно рассматривается возможность использования отношений с атрибутами, принимающими в качестве значений отношения, является то, что исторически в большинстве публикаций по базам данных (включая предыдущие издания настоящей книги) это считалось недопустимым (а в большинстве изданий считается таковым и поныне), Вот, например, несколько отредактированная цитата из предыдущего издания этой книги. Столбец Енуэ второй таблицы является примером так наэываачой ловтаряюи(ейся группы.
Повторяющаяся группа — это столбец, ...содержащий по нескольку значений в каждой строке (в общем случае — различное количество значений в разных строках). В реляционных базах данных повторяющиеся группы недопустимы, поэтому использование второго варианта таблицы в рачках реляционной модели запрещено. Вот еще одна цитата из той же книги. [Домены) состоят только иэ атомарных значений...
[Поэтому) отношения не содержат повторяющихся групп. Отношение, отвечающее этим условиям, называется нормализованным или, что равносильно, отношением в первой нор.мальной форме... Под термином отношение в контексте реляционной модели всегда будет подразумеваться нормализованное отношение.
Однако, по крайней мере в целом, эти высказывания неверны. Они являются следствием ошибочного понимания автором истинной природы типов и предикатов. По причинам, которые будут рассмотрены в главе 11 (раздел 11.6), маловероятно, чтобы эти заблуждения привели к серьезным ошибкам на практике. Тем не менее мы приносим свои извинения всем, кто был введен нами в заблуждение. Во всяком случае в предыдущем издании утверждение о том, что в реляционной модели все отношения всегда нормализованы, соответствует действительности.
Дальнейшее обсуждение этого вопроса будет продолжено в главе 11. Отношения и их интерпретация В заключение этого раздела напомним, что, как сказано в разделе 3.4 главы 3, заголовок отношения можно считать предикатом, а любой кортеж — истинным высказыванием, полученным из этого предиката в результате подстановки значения соответствующего типа вместо параметров (или местодвржателей) в этом предикате ("конкретизация предиката").
В действительности допущение замкнутости мира (известное также как интерпретация замкнутости мира) гласит; если какой-то другой допустимый кортеж (т.е. согласованный с заголовком отношения) не содержится в теле отношения, можно предположить, что соответствующее ему утверждение ложно. Другими словами, тело отношения содержит все такие и только такие кортежи, которым соответствуют истинные утверждения. 5.4. Переменные-отношения Как уже говорилось в главе 3, существует две разновидности переменных-отношений (ге[агюп чапаЫе или кратко — ге1чаг): базовые переменные-отношения и представления (которые иногда называют реальными и виртуальными переменными-отношениями соответственно). В этом разделе рассматриваются только базовые переменные-отношения. Представления будут обсуждаться в главе 9. Определение базовых переменных-отношений Базовые переменные-отношения определяются следующим образом.
Чдй <иня переменной-отношения > ВйВВ <шип оглашения> <перечеиь определений поюенциапьннх ключей> [ <перечеиь определений внешних ключей> ) Глава 5. Домены, отношения и базовые переменные-отношения 169 Параметр <тип отноиенин> имеет следующий вид. КЕЬАТ103 ( <список атрибутов> ) Здесь каждое значение <атрибут> в параметре <список атрибутов>, в свою очередь, является упорядоченной парой следующего вида. <ния атрибута> <ния типа> Смысл выражения <перечень определений потенциальннх ключей> и необязательного выражения <перечень определений внеюних ключей> раскрывается ниже.
Замечание. Термин <спясок ...> (список, разделенный запятыми) был определен в главе 4 (раздел 4.3), а термин <перечень ...> имеет следующее определение. Если <хуг> — это некоторая синтаксическая категория (т.е. что-либо, что записывается слева в ВХР-нотации), то <перечень хуг> обозначает последовательность категорий <хуг>, количество которых больше нуля либо равно нулю, причем каждая соседняя пара зтих определений разделяется по крайней мере одним пробелом. В качестве примера рассмотрим несколько определений базовых отношений лля базы данных поставщиков и деталей.
РАК 3 БАБЕ КЕЬАТХОМ ( 33 3), БИАИЕ ИАИЕ, ЯТАТОЯ 1ИТЕОЕВ> С1ТХ СНАК ) РВХИАВХ ЕЕХ ( Яч ) УАВ Р ВАЯЕ КЕЬАТ103 ( РМ Рч, РИВКЕ ИАИЕ, СОЬОК СОЬОК, ИЕ16НТ ИЕ16НТ, С1ТХ СКАК ) РЙ1КАВх кех ( Рг Пояснения 1. Эти три базовые переменные-отношения относятся к следующим типам (отношений), ВЕЬАТ10И ( 3$ 3$, ЯИАМЕ ИАИЕ, ЯТАТОЯ 1ИТЕОЕВ, С1ТХ СВАЙ ) КЕЬАТ10Б ( РФ Р(), РИАИЕ ИАИЕ, СОЬОК СОЬОК, ИЕ16НТ ИЕ16НТ, С1ТХ СНАЙ ) КЕЬАТ10И ( Б() 3$, Р) Р), ОТХ ОТХ ) 170 Часть П. Реляционная модель ЧАК БР ВАЯЕ ( 3$ Р( ЦТХ РК1ИАК1 РОКЕ16Н РОКЕ16И КЕЬАТ10И Яй, Р$, ОТХ ] КЕХ( Я(), Р() ) КЕХ( 3$ ) КЕРЕКЕИСЕЯ Б КЕХ( Р) ) ВЕРЕКЕИСЕЯ Р Очевидно, что все эти типы (отношений) действительно являются типами и могут использоваться любым обычным способом; в частности, как тип атрибута некоторого отношения.
(Фактически тип 881АТ108 является генератором типов, позволяющим определять сколько угодно различных типов отношений, подобно тому как тип аггау является генератором типов массивов в общепринятых языках программирования.) 2. Все возможные значения переменной-отношения принадлежат одному типу (а именно, тому типу, который прямо или косвенно был задан при определении этой переменной-отношения) и, следовательно, имеют одинаковые заголовки. В частности, начальным значением любой переменной-отношения является пустое отношение соответствующего типа. 3. Термины заголовок', глело, атрибугл, кормеж, кардинальность и степень, уже определенные для значений отношений, очевидным образом переносятся на переменные-отношення (на все переменные-отношения„а не только на базовые переменные-отношения).
4. При определении новой базовой переменной-отношения система делает в каталоге запись — описание этой переменной-отношения. 5. Определение потенциальных ключей будет дано в главе 8. До этого времени мы просто будем считать, что в каждом определении базовой переменной-отношения есть ровно одно такое определение, записанное в следующем виде.
РЕ1ИМУ КЕ1 1<список шмен атршбутов>) Определение внешних ключей также приводится в главе 8. б. Наконец, любую существующую базовую переменную-отношение можно удалить. РЕОР ЧУЯ <ямя переменной-отношелшюг В результате выполнения этой операции сначала значение базовой переменной- отношения устанавливается равным пустому отношению (т.е. из базовой переменной- отношения удаляются все кортежи), а затем из каталога удаляются записи, соответствующие этой переменной-отношению.
По завершении указанных действий данная базовая переменная-отношение перестает быть известной системе. Замечание. Для простоты предполагается, что выполнение оператора РЕОР приведет к ошибке, если удаляемая переменная-отношение где-либо используется, например если на нее имеется ссылка в определении какого-либо представления.
Представления будут рассмотрены в главе 9. Обновление переменных-отношений Присвоение значений переменным-отношениям, т.е. их обновление, в реляционной модели осуществляется с помощью оператора реляционного присвоения. На языке Тп1она! 0 это делается следующим образом. <лмя переменной-отношения : <реляцноннов вмрвшеяив>; После вычисления реляционного выражения, заданного параметром <реляционное вмрвяеншв>, полученное значение присваивается переменной-отношению с именем, которое указано параметром <ямя переменной-отношения>, заменяя ее прежнее значение.
Разумеется, переменная-отношение и полученное в результате вычислений отношение должны быть одного типа, т.е, иметь одинаковые заголовки. Глава 5. Домены, отношения и базовые переменные-отношения 171 Предположим, к примеру, что задана некоторая переменная-отношение В, принадлежащая тому же типу, что и переменная-отношение поставщиков Б. ЧАВ В ВАЯЕ ВЕЬАТ10К ( Я0 Я(), ЯКАМЕ КАМЕ, БТАТОЯ ХКТЕОЕВ, СХТУ СНАМ ) ...; Ниже приведено несколько примеров правильного реляционного присвоения. ° В хы Б; т В : Я ИНЕВЕ СХТХ = 'Ьопбоп' ° В := Я МХКОЯ ( Б ИНЕВЕ С1ТХ = 'РатЬв' ) ; Заметьте, что каждый из этих примеров можно рассматривать и как пример выборки данных из отношения, заданного в правой части выражения, и как пример обновления значения переменной-отношения, расположенной слева от оператора присвоения.