|
Программирование >> Хронологические базы данных
Это соединение переменных-отношений S и Р по атрибуту CITY имеет тип многие ко многим . Пример содержимого данного представления показан на рис. 9.8.
Puc. 9.8. Соединение переменных-отношений S и P no атрибуту CITY Вставка в представление кортежа (S7, Bruce, 15, Oslo, P8, Wheel, White, 25) будет успешно завершена и приведет к вставке кортежа (S7, Bruce, 15, Oslo) в переменную-отношение S и кортежа (Р8, Wheel, White, 25, Oslo) в переменную-отношение Р (в результате указанный кортеж попадет в представление). Вставка в представление кортежа (S1, Smith, 20, London, Р7, Washer, Red, 5) будет успешно завершена и приведет к вставке кортежа (Р7, Washer, Red, 5, London) в переменную-отношение Р (в результате чего в представление попадут два кортежа- (sr, Smith, 20, London, Р7, Washer, Red, 5)и(54, Clark, 20, London, P7, Washer, Red, 5)). Вставка в представление кортежа (S6, Green, 20, London, P7, Washer, Red, 5) будет успешно завершена и приведет к вставке кортежа (S6, Green, 20, London) в переменную-отношение S и кортежа (Р7, Washer, Red, 5, London) в переменную-отношение Р (в результате в представление будет добавлено шесть новых кортежей). Удаление из представления кортежа (S1, Smith, 20, London, PI, Nut, Red, 12) будет успешно завершено и приведет к удалению кортежа (S1, Smith, 20, London) из переменной-отношения S и кортежа (Р1, Nut, Red, 12, London) из переменной-отношения Р (в результате из представления будут удалены четыре кортежа). Дополнительные примеры читателю предлагается подготовить самостоятельно в качестве упражнения. Прочие операции в этом разделе кратко описаны случаи использования в представлениях остальных операций реляционной алгебры. Прежде всего, отметим, что операции 0-соединения, полусоединения, полувычитания и деления не примитивные, поэтому правила для них могут быть производными от правил для тех операций, в терминах которых они определены. Относительно других операций можно сказать следующее. Переименование. Тривиальный случай. Декартово произведение. Как уже отмечалось в конце раздела 6.4 главы 6, декартово произведение является частным случаем естественного соединения (операция А JOIN В вырождается в операцию А TIMES В, если отношения А и В не имеют общих атрибутов). Поэтому правила обновления для операции декартова произведения (А TIMES В) являются частным случаем правил обновления для операции соединения (конечно, как и правила обновления для операции пересечения А INTERSECT В). Обобщение. Операция обобщения (SUMMARIZE) тоже не является примитивной и определяется в терминах операции расширения. Поэтому правила обновления для операции обобщения являются производными от правил обновления для операции расширения. Замечание. Для большинства представлений, определенных с использованием операции обобщения, подавляющая часть обновлений фактически неприменима. Однако причина заключается не в том, что такие представления не обновляемы по своей сути. Попытки их обновления обычно завершаются неудачно из-за противоречий с некоторыми установленными ограничениями целостности. Например, пусть для определения представления используется следующее выражение. SUMMARIZE SP PER SP { St } ADD SUM ( QTY ) AS TOTQTY Тогда попытка удаления кортежа, скажем, для поставщика с номером S1, будет вполне успешной. Однако попытка вставки кортежа, скажем, (S5, 500), приведет к ошибке, поскольку эта попытка нарушает ограничение, согласно которому значение атрибута TOTQTY должно быть равным сумме всех соответствующих отдельных значений QTY. Попытка вставить кортеж (S5, 0) тоже приведет к ошибке, но уже по другой причине (по какой?). Группирование и разгруппирование. Все замечания, которые были сделаны для операции подведения итогов, справедливы и для этих операций. Транзитивное замыкание. Почти такие же замечания применимы и в данном случае. 9.5. Моментальные снимки Здесь будет уместно, несколько отклонившись от основной темы, обсудить понятие моментальных снимков (snapshots) [9.2]. Моментальные снимки в действительности имеют много общего с представлениями, но не следует путать эти понятия. Как и представления, моментальные снимки - это производные переменные-отношения, но в отличие от представлений снимки реальны, а не виртуальны, т.е. снимки представляются в базе данных не только своими определениями в терминах других переменных-отношений, но и (по крайней мере, концептуально) собственной овеществленной копией данных, как, например, показано ниже. Моментальные снимки иногда иначе называют овеществленными представлениями [9.1], [9.3], [9.6], [9.14], [9.16]. Однако этот термин неудачен и его не рекомендуется использовать, поскольку овеществлены представления или нет - это вопрос реализации, а не модели. Что же касается модели, то в ее понимании представления не овеществляются по определению и термин овеществленное представление является логической несообразностью. VAR P2SC SNAPSHOT ( ( S JOIN SP ) WHERE PI = PI ( P2 ) ) { SI, CITY } REFRESH EVERY DAY ; Определение моментального снимка во многом подобно выполнению запроса, за исключением следующего. 1. Результат выполнения этого запроса хранится в базе данных под указанным именем (в приведенном выще примере это P2SC) как переменная-отношение, доступ к которой разрещен только для чтения (не считая операции периодического обновления; см. ниже). 2. Периодически (в нащем примере - каждый день, что устанавливается опцией EVERY DAY) содержание моментального снимка обновляется, т.е. текущие данные аннулируются и запрос выполняется повторно, после чего полученный результат запроса записывается в качестве нового значения моментального снимка. Таким образом, моментальный снимок P2SC всегда представляет состояние данных, которое они имели не более 24 часов назад (каким в этом случае должен быть предикат данного отнощения?). Суть идеи моментальных снимков состоит в том, что многие приложения (возможно, даже большинство) могут допускать или даже требовать для обработки данные в том состоянии, в котором они находились в определенный момент. В частности, в эту категорию приложений попадают многие приложения для создания отчетов и ведения бухгалтерского учета. Подобные приложения обычно требуют фиксации состояния данных в установленное время (например, в конце периода отчетности), и концепция моментальных снимков позволяет выполнить такую фиксацию, не влияя на работу других транзакций, обновляющих рассматриваемые данные в режиме реального времени. Аналогично может потребоваться зафиксировать состояние большого объема данных, которые используются для выполнения сложного запроса или приложения, не требующего модификации исходных данных, опять же, чтобы избежать блокирования обновления данных на время их выполнения. Замечание. Эта идея становится еще привлекательнее в среде распределенных баз данных или приложений поддержки принятия решений (подробности приводятся в главах 20 и 21 соответственно). Отметим также, что моментальные снимки представляют важный частный случай контролируемой избыточности (см. главу 1), а процедура обновление снимка - это соответствующий процесс распространения обновления (снова см. главу 1). в общем случае определение моментального снимка имеет следующий синтаксис. VAR <имя переменной-отношениуО SNAPSHOT <реляционное выражение> <список определений потенциальных ключей> REFRESH EVERY <период> ; В этом определении для указания периода обновления моментального снимка используется параметр <период>, который может принимать, например, следующие значения: MONTH (месяц), WEEK (неделя), HOUR (час), л MINUTES (л минут), MONDAY (понедельник), WEEKDAY (день недели) и т.п. Ниже приведен синтаксис выражения для удаления определения моментального снимка. DROP VAR <имя переменной-отношении ; Здесь параметр <имя переменной-отношении задает имя удаляемого моментального снимка.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |