- •7.7.6. Определить общее количество поставщиков
- •7.7.7. Определить в поставках максимальное
- •7.7.8. Для каждой поставляемой детали указать номер и общий объем поставки в штуках
- •7.7.9. Указать номера всех типов деталей, поставляемых более чем одним поставщиком
- •7.7.10. Определить имена поставщиков детали с номером т2'
- •7.7.11. Определить имена поставщиков по крайней мере одной красной детали
- •7.7.12. Указать номера поставщиков, статус которых меньше текущего максимального статуса
- •7.7.13. Указать имена поставщиков детали с номером 'р2'
- •7.7.14. Выбрать имена поставщиков, которые не поставляют деталь с номером 'р2'
- •7.7.15. Определить имена поставщиков всех типов деталей
- •7.7.16. Определить номера деталей, которые либо весят более 16 фунтов, либо поставляются поставщиком с номером 's2', либо и то, и другое
- •7.8. Резюме
- •8.2. Ограничения типа
- •8.3. Ограничения атрибута
- •8.4. Ограничения переменной-отношения
- •8.5. Ограничения баз данных
- •8.6. "Золотое правило"
- •8.7. Ограничения состояния и ограничения перехода
- •8.8. Ключи
- •3. Пусть r1 и r2 — ссылающаяся и ссылочная переменные-отношения соответственно.
- •8.9. Средства языка sql
- •8.10. Резюме
- •9.1. Введение
- •9.2. Для чего нужны представления
- •9.3. Выборка данных из представлений
- •9.4. Обновление данных в представлениях
- •9.5. Моментальные снимки
- •9.6. Поддержка представлений в языке sql
- •9.7. Резюме
- •Часть III
- •10.1. Введение
- •10.2. Основные определения
- •10.3. Тривиальные и нетривиальные зависимости
- •10.4. Замыкание множества зависимостей
- •10.5. Замыкание множества атрибутов
- •10.6. Неприводимые множества зависимостей
- •10.7. Резюме
- •Глава 1 1
- •I Переменные-отношения в знф I
- •11.2. Декомпозиция без потерь
- •11.3. Первая, вторая и третья нормальные формы
- •11.4. Сохранение зависимостей
- •11.5. Нормальная форма Бойса-Кодда
- •11.6. Замечание по поводу атрибутов, содержащих в качестве значений отношения
- •11.7. Резюме
- •12.1. Введение
- •12.2. Многозначные зависимости и четвертая нормальная форма
- •12.3. Зависимости соединения и пятая нормальная форма
- •Соединение по комбинации атрибутов j#,s#
- •Исходное состояние spj
- •12.4. Общая схема процедуры нормализации
- •12.5. Денормализация
- •12.6. Ортогональное проектирование (небольшое отступление от темы)
- •12.7. Другие нормальные формы
- •12.8. Резюме
- •12.3. Brosda V., Vossen g. Update and Retrieval Through a Universal Schema Interface // acm tods. — December, 1988. — 13, № 4.
- •12.5. Date c.J. Will the Real Fourth Normal Form Please Stand Up? // c. J. Date and Hugh Darwen. Relational Database Writings 1989-1991.— Reading, Mass.: Addison-Wesley, 1992.
- •12.20.Kent w. The Universal Relation Revisited // acm tods. — December, 1983. — 8, № 4.
- •12.22.Maier d., Ullman j.D. Fragments of Relations // Proc. 1983 sigmod Intern. Conf. On Management of Data. — San Jose, Calif. — May, 1983.
- •12.24.Maier d., Ullman j.D. Maximal Objects and the Semantics of Universal Relation Databases // acm tods. — March, 1983. — 8, № 1.
- •Глава 13
- •13.1. Введение
- •13.2. Общий подход
- •Каждыи экземпляр сущности ности «Произведение"
- •13.3. Модель "сущность/связь"
- •13.5. Проектирование базы данных с помощью метода er-моделирования
- •13.6. Краткий анализ er-модели
- •13.7. Резюме
9.5. Моментальные снимки
*
Моментальные снимки иногда иначе
называют овеществленными представлениями
[9.1], [9.3], [9.6], [9.14], [9.16]. Однако этот термин
неудачен и его не рекомендуется
использовать, поскольку овеществлены
представления или нет — это вопрос
реализации, а не модели. Что же касается
модели, то в ее понимании представления
не овеществляются по определению и
термин "овеществленное представление"
является логической несообразностью.
VM P2SC SNAPSHOT
( ( S JOIN SP ) WHERE Pi = PI ( 'P2' ) ) {Si, CITY } REFRESH EVERY DAY ;
Определение моментального снимка во многом подобно выполнению запроса, за исключением следующего.
Результат выполнения этого запроса хранится в базе данных под указанным именем (в приведенном выше примере это P2SC) как переменная-отношение, доступ к которой разрешен только для чтения (не считая операции периодического обновления; см. ниже).
Периодически (в нашем примере — каждый день, что устанавливается опцией EVERY DAY) содержание моментального снимка обновляется, т.е. текущие данные аннулируются и запрос выполняется повторно, после чего полученный результат запроса записывается в качестве нового значения моментального снимка.
Таким образом, моментальный снимок P2SC всегда представляет состояние данных, которое они имели не более 24 часов назад (каким в этом случае должен быть предикат данного отношения?).
Суть идеи моментальных снимков состоит в том, что многие приложения (возможно, даже большинство) могут допускать или даже требовать для обработки данные в том состоянии, в котором они находились в определенный момент. В частности, в эту категорию приложений попадают многие приложения для создания отчетов и ведения бухгалтерского учета. Подобные приложения обычно требуют фиксации состояния данных в установленное время (например, в конце периода отчетности), и концепция моментальных снимков позволяет выполнить такую фиксацию, не влияя на работу других транзакций, обновляющих рассматриваемые данные в режиме реального времени. Аналогично может потребоваться зафиксировать состояние большого объема данных, которые используются для выполнения сложного запроса или приложения, не требующего модификации исходных данных, опять же, чтобы избежать блокирования обновления данных на время их выполнения.
Замечание. Эта идея становится еще привлекательнее в среде распределенных баз данных или приложений поддержки принятия решений (подробности приводятся в главах 20 и 21 соответственно). Отметим также, что моментальные снимки представляют важный частный случай контролируемой избыточности (см. главу 1), а процедура "обновление снимка" — это соответствующий процесс распространения обновления (снова см. главу 1).
В общем случае определение моментального снимка имеет следующий синтаксис.
VAR <имя переменной-отношения> SNAPSHOT реляционное выражениё> <список определений потенциальных ключей> REFRESH EVERY <период> ;
В этом определении для указания периода обновления моментального снимка используется параметр <период>, который может принимать, например, следующие значения: MONTH (месяц), WEEK (неделя), H0DR (час), л MINUTES (я минут), MONDAY (понедельник), WEEKDAY (день недели) и т.п. Ниже приведен синтаксис выражения для удаления определения моментального снимка.
DROP VAR <имя переменной-отношения> ;
Здесь параметр <имя переменной-отношения> задает имя удаляемого моментального снимка.
Замечание. Мы подразумеваем, что операция DROP завершится неудачно, если какая-либо переменная-отношение в данный момент ссылается на удаляемый моментальный снимок. Альтернативным решением может быть расширение приведенного выше определения моментального снимка за счет включения опций RESTRICT и CASCADE. Здесь мы не будем обсуждать эту возможность.