Введение в системы БД (542480), страница 25
Текст из файла (страница 25)
Наоборот, представление — это, по сути, просто окно, через которое можно видеть часть значения базовой переменной-отношения ЕМР. Отсюда следует, что любые изменения в базовой переменной-отношении будут автоматически н немедленно 10Ь Часть ( Основные понятия видны в подобном окне (конечно, если эти изменения относятся к незатененной части реальной переменной-отношения).
Аналогично изменения, внесенные в переменную-отношение ТОРЕМР, будут автоматически и немедленно применены к реальной переменной-отношению ЕМР и, следовательно, станут видны через это окно (прнмеры будут приведены позднее), Ниже показан пример запроса, использующего представление ТОРЕМР.
( ТОРЕМР МНЕНЕ ЯАЬАНХ < 42К ) ( ЕМР4, ЯАЬАНХ ) Результат будет иметь следующий вид. С концептуальной точки зрения операции с представлениями, подобные рассмотренной выше, фактически реализуются посредством замены ссылки на имя представления выражением, которое определяет представление (т.е.
выражением, сохраненным в каталоге). Поэтому в рассмотренном примере исходное выражение ( ТОРЕМР МНЕНЕ ЯАЬАНХ < 42К ) ( ЕМРФ, ЯАЬАНХ ) модифицируется системой следующим образом. ( ( ЕМР ИРЕНЕ ЯАЬАНХ > ЗЗК ) ( ЕМРР, ЕМАМЕ, НАЬАНХ ) МНЕНЕ ЯАЬАНХ < 42К ) ( ЕМР4, ЯАЬАНХ ) Здесь курсивом выделено имя представления в исходном выражении и заменяющий текст в модифицированной версии. После определенного количества перегруппировок это выражение может быть упрощено (глава 17) и может принять следующий вид. ( ЕМР МНЕНЕ ЯАЬАНХ > ЗЗК АНО ЯАЬАНХ < 42К ) ( ЕМР$, ЯАЬАНХ ) Вычисление данного выражения приводит к результату, показанному выше. Иными словами, первоначальная операция над представлением просто конвертируется в эквивалентную операцию над соответствующей базовой переменной-отношением, после чего полученная эквивалентная операция выполняется обычным образом (точнее, оптимизируется и выполняется обычным образом).
В качестве другого примера рассмотрим операцию удаления ОЕЬЕТЕ. РЕЬЕТЕ ТОРЕМР МНЕНЕ ЯАЬАНХ < 42К 1 На самом деле будет выполнена следующая операция. ОЕЬЕТЕ ЕМР МНЕНЕ ЯАЬАНХ > ЗЗК АНО ЯАЬАНХ < 42К Наше представление ТОРЕМР— очень простое представление, состоящее из подмножества строк и столбцов единственной базовой переменной-отношения. Однако, в принципе, определение представления может быть произвольной сложности.
Например, вот представление, определение которого включает соединение двух базовых переменных-отношений, Глава 3. Введение в реляционные базы данных 107 ЕЕЕйТЕ Ч1ЕИ Ю01МЕХ ДЯ ( ( ЕМР Л01М ВЕРТ ] ИМЕЕЕ ВВВВЕТ > 7М ) [ ЕМР)), ВЕРУ)) ) 1 К вопросу определения и обработки представлений мы еше вернемся в главе 9. Между прочим, сейчас уже можно объяснить приведенное в конце раздела 2.2 замечание относительно того, что термин представление (ч)еж) в реляционном контексте имеет особое специфическое значение, не совпадающее со значением, приписанным ему в архитектуре АХБ1/БРАКС. На внешнем уровне этой архитектуры база данных воспринимается как "внешнее представление", определяемое внешней схелюй (и разные пользователи могут иметь разные внешние представления).
В реляционных системах, наоборот, представление, как пояснялось выше, является специально именованной производной виртуальной переменной-огпношеиием. Поэтому реляционным аналогом "внешнего представления" А)чБ1/БРАКС обычно служит множество из нескольких переменных-отношений, каждая из которых является представлением в реляционном смысле. "Внешняя схема" состоит из определений таких представлений.
(Отсюда следует, что представления в реляционном смысле являются способом обеспечения логической независимости данных, хотя еше раз следует отметить, что современные коммерческие продукты имеют серьезные недостатки в этом вопросе. (Подробности приводятся в главе 9.) Архитектура А) )Б1/БРАКС является достаточно обшей и допускает произвольные изменения между внешним и концептуальным уровнями. В принципе, даже типы структур данных, поддерживаемые на этих двух уровнях, могут быть различными; например, концептуальный уровень может быть реляционным, тогда как конкретному пользователю может быть предоставлено внешнее представление иерархического типа. Однако на практике большинство систем использует одинаковые типы структур в качестве базовых на обоих уровнях.
Реляционные продукты не являются исключением из этого обшего правила — представление по-прежнему остается переменной-отношением, как и базовые переменные-отношения. А поскольку на обоих уровнях поддерживаются одинаковые типы объектов, на этих уровнях применяется один и тот же подъязык данных (обычно это язык Б()Ь). Действительно, тот факт, что представление — это тоже переменная- отношение, так же важен для реляционных систем, как для математики важно то, что подмножество также является множеством.
Замечание. Однако реальные БЯЬ-продукты и сам стандарт языка БОЬ, похоже, часто игнорируют этот момент (глава 4), поскольку нередко ссылаются на "таблицы и представления" (в том смысле, что представление не является таблицей). Советуем не делать этой распространенной ошибки, используя термин "таблицы" (или "переменные-отношения") лишь для базовых таблиц (или "базовых переменных-отношений" ).
Есть еше один заслуживающий внимания вопрос, касающийся базовых переменных- отношений и представлений. Различие между базовой переменной-отношением и представлением часто характеризуется следующим образом. ° Базовые переменные-отношения "реально существуют" в том смысле, что оии представляют данные, которые действительно хранятся в базе данных. ° Представления, наоборот, "реально не существуют", а просто предоставляют различные способы просмотра "реальных" данных. 1ОЗ Часть 1. Основные поняп(ая Однако такая характеристика хотя и полезна в неформальном смысле, неточно отражает истинное положение дел.
Действительно, пользователи могут представлять базовые переменные-отношения как физически хранимые, поскольку фактически главная цель создания реляционных систем состоит в том, чтобы позволить пользователю работать с базовыми переменными-отношениями как с физически существующими, не заботясь о том, как в действительности эти переменные- отношения физически представлены в памяти. Но (и это весьма существенное "но"!) подобное представление пользователей нельзя толковать так, что базовая переменная-отношение — это непосредственно физически хранимая переменная-отношение (т.е.
как единственный хранимый файл)4. Как пояснялось в разделе 2.2, базовые переменные-отношения лучше всего представлять как абстракцию для некоторого набора хранимых данных — абстракцию, скрывающую все детали уровня хранения данных. В принципе, базовая переменная-отношение и ее хранимый эквивалент могут отличаться в произвольной степени. Простой пример поможет прояснить этот вопрос. Снова рассмотрим базу данных отделов и служащих.
Большинство сегодняшних реляционных систем, вероятно, реализовали бы ее в виде двух хранимых файлов, по одному для каждой переменной-отношения базы данных. Но нет абсолютно никаких аргументов против создания одного хранимого файла иерархически хранимых записей, каждая из которых состоит из номера отдела, названия и бюджета для некоторого отдела вместе с номером служащего, именем н зарплатой для каждого служащего, работающего в этом отделе.
Иначе говоря, для физического хранения данных может быть использован любой подходящий способ, но на логическом уровне данные всегда должны выглядеть одинаково. 3.8. Транзакции Замечание. Тему этого раздела нельзя отнести исключительно к теме реляционных систем. Твм не менее она здесь уместна, поскольку понимание основной идеи необходимо для усвоения некоторых аспектов материала и логичного перехода к части П. Однако здесь данная тема описывается лишь поверхностно.
В главе ! указывалось, что транзакция — это логическая единица работы, обычно включающая несколько операций над базой данных. Также отмечалось, что пользователь должен иметь возможность указать системе, что отдельные операции являются частью одной транзакции. Для этого используются операции ВЕ61И ТКАИЯАСТ10И, СОИИ1Т и КОЬЬВАСК. Как правило, транзакция начинается при выполнении операции ВЕ61И ТЯАИЯАСТ10И и прекращается при выполнении операции СОИИ1Т или ВОЬЬВАСК, как в следующем примере, написанном на псевдокоде. 4 Следующая цитата из одной недавна вышедшей книги демонстрирует некоторые недоразумения, обсуждаемые здесь, а также недоразумения, которые обсуждались в разделе З.З. "Важно различать «ранимые отношения, которые явлнютсн таблицачи, и виртуальные отношении, которые являются прелставлениями...