Изменения

Перейти к: навигация, поиск

Представления и их обновление

450 байт добавлено, 20:56, 29 декабря 2021
м
Больше текста богу текста
== Синтаксис ==
Объявление представления с именем <code><font color = red>имя</font color = black></code> для представления запроса <code><font color = red>запрос</font color = black></code>: <font color = blue>create view <font color = red>имя<font color = blue> as <font color = red>запрос<font color = greenblack> -- объявление  Удаление представления по имени <code><font color = red>имя</fontcolor = black></code>: <font color = blue>drop view <font color = red>имя<font color = green> -- удаление представления по его имени</fontblack>
==== Примеры ====
<font color = green> -- Представление для подсчета текущих средних баллов студентовцен в магазинах: </font> <font color = blue>create view <font color = black>AveragePointsAveragePrice(SIdShopId, AvgPointsAvgPrice) <font color = blue>as select <font color = black>SIdShopId, avg(PointsPrice) <font color = blue>from <font color = black>PointsPrices</fontcolor = black>
<font color = green> -- Представление для получения имени и фамилии студента </font> <font color = green> -- названия магазина с текущим количеством балловтекущими ценами, полученных им на каждом курсеиз товаров: </font> <font color = blue>create view <font color = black>StudentCourseShopItem(FNSN, LN, NPN, P) <font color = blue>as select <font color = black>s.FirstName, s.LastNameName, ci.Name, p.PointsPrice</font> <font color = blue>from <font color = black>Students Shops s <font color = blue>natural join <font color = black>Points Prices p <font color = blue>natural join <font color = black>Courses cItems i<font color = black></font>
Данный пример, в частности, демонстрирует удобство использования представлений {{---}} без их использования указанное выше выражение с тремя <code>join</code> пришлось бы писать каждый раз. Также, если бы таблицы <tex>StudentsShops, PointsPrices</tex> и <tex>CoursesItems</tex> являлись бы результатом декомпозиции таблицы <tex>StudentCourseShopItem</tex>, создание данного представления позволяет избежать необходимости изменять код взаимодействия с ней.
== Обновление представлений ==
==== Разность ====
Для [[Реляционная алгебра: операции над множествами | разности]] <tex>R_1 \setminus R_2</tex> вставка производится в <tex>R_1</tex>.
Удаление также производится из <tex>R_1</tex>.
{{Определение
|id=def2
|definition='''Материализованное представление''' (МП) {{---}} в отличие от [[#def1 | представления]], является «слепком» данных на определенный момент времени, который хранящимся физически в виде отдельной таблицы и не изменяется при изменении базовой версии.
}}
Преимущества:
* быстрота выборки: МП материализованное представление может быть сформировано на основе сложного подзапроса, и, из-за того, что данные будут сохранены, этот запрос не будет пересчитываться повторно;
* возможность «фиксации» данных;
Недостатки:
* для работы с актуальными данными, появляется необходимость обновления МПматериализованное представление;
* физически хранимые данные могут занимать большие объемы памяти;
<font color=red>[</font>
<font color=blue> refresh <font color=red>[{<font color=blue>fast<font color=grey>|<font color=blue>complete<font color=red>}] [<font color=blue>on <font color=red>{<font color=blue>commit<font color=grey>|<font color=blue>demand<font color=red>}]</font>
<font color=red> [<font color=blue>start with <font color=red>время] [<font color=blue>next <font color=red>время] <font color=green> -- в некоторых БД</font>
<font color=red>]</font>
<font color=blue>as <font color=red>запрос<font color = black>
 
Некоторые БД поддерживают указание времени первого и последующих обновлений:
<font color=red>[<font color=blue>start with <font color=red>время] [<font color=blue>next <font color=red>время]<font color=black>
Режимы обновления:
* <code>demand</code>: при вызове команды <code>refresh materialized view</code>;
<font color=blue>refresh materialized view <font color=red>имя</fontcolor = black>
==== Пример ====
<font color = green> -- МП Материализованное представление для подсчета текущих средних баллов студентовцен в магазинах, обновляемое раз в день:</font> <font color=blue>create materialized view <font color=black>AveragePointsAveragePrice</font>
<font color=blue>refresh next <font color=black>dateadd(day, now(), 1)</font>
<font color=blue>as select <font color=black>SIdShopId, avg(PointsPrice) <font color=blue>from <font color=black>Points Prices <font color=blue>group by <font color=black>SIdShopId<font color=black>
== См. также ==
== Литература ==
# https://www.kgeorgiy.info/courses/dbms/
# Введение в системы баз данных, 8-е издание.: Пер. с англ. — М.: Издательскийдом "Вильяме", 2005. — 1328 с.
# Gulutzan P., Pelzer T.(1999) SQL-99 complete, really. Gilroy,CA:CMP Books
[[Категория: Базы данных]]
436
правок

Навигация