Введение
Набор результатов запроса, хранящегося в базе данных
In a database, a view is the result set of a stored query, which can be queried in the same manner as a persistent database collection object. This pre established query command is kept in the data dictionary. Unlike ordinary base tables in a relational database, a view does not form part of the physical schema: as a result set, it is a virtual table
Views can join and simplify multiple tables into a single virtual table. Views can act as aggregated tables, where the database engine aggregates data (sum, average, etc.) and presents the calculated results as part of the data. Views can hide the complexity of data. For example, a view could appear as Sales2020 or Sales2021, transparently partitioning the actual underlying table. Views take very little space to store; the database contains only the definition of a view, not a copy of all the data that it presents. Structures data in a way that classes of users find natural and intuitive. Just as a function (in programming) can provide abstraction, so can a database view. In another parallel with functions, database users can manipulate nested views, thus one view can aggregate data from other views. Without the use of views, the normalization of databases above second normal form would become much more difficult. Views can make it easier to create lossless join decomposition. Just as rows in a base table lack any defined ordering, rows available through a view do not appear with any default sorting. A view is a relational table, and the relational model defines a table as a set of rows. Since sets are not ordered — by definition — neither are the rows of a view. Therefore, an ORDER BY clause in the view definition is meaningless; the SQL standard (SQL:2003) does not allow an ORDER BY clause in the subquery of a CREATE VIEW command, just as it is refused in a CREATE TABLE statement. However, sorted data can be obtained from a view, in the same way as any other table — as part of a query statement on that view. Nevertheless, some DBMS (such as Oracle Database) do not abide by this SQL standard restriction.
В базе данных, представление (вид) – это набор результатов сохраненного запроса, который может быть запрошен таким же образом, как объект коллекции постоянной базы данных. Эта предварительно установленная команда запроса хранится в словаре данных. В отличие от обычных базовых таблиц в реляционной базе данных, представление не является частью физической схемы: как набор результатов, это виртуальная таблица.
In a database, a view is the result set of a stored query, which can be queried in the same manner as a persistent database collection object. This pre established query command is kept in the data dictionary. Unlike ordinary base tables in a relational database, a view does not form part of the physical schema: as a result set, it is a virtual table
Views can join and simplify multiple tables into a single virtual table. Views can act as aggregated tables, where the database engine aggregates data (sum, average, etc.) and presents the calculated results as part of the data. Views can hide the complexity of data. For example, a view could appear as Sales2020 or Sales2021, transparently partitioning the actual underlying table. Views take very little space to store; the database contains only the definition of a view, not a copy of all the data that it presents. Structures data in a way that classes of users find natural and intuitive. Just as a function (in programming) can provide abstraction, so can a database view. In another parallel with functions, database users can manipulate nested views, thus one view can aggregate data from other views. Without the use of views, the normalization of databases above second normal form would become much more difficult. Views can make it easier to create lossless join decomposition. Just as rows in a base table lack any defined ordering, rows available through a view do not appear with any default sorting. A view is a relational table, and the relational model defines a table as a set of rows. Since sets are not ordered — by definition — neither are the rows of a view. Therefore, an ORDER BY clause in the view definition is meaningless; the SQL standard (SQL:2003) does not allow an ORDER BY clause in the subquery of a CREATE VIEW command, just as it is refused in a CREATE TABLE statement. However, sorted data can be obtained from a view, in the same way as any other table — as part of a query statement on that view. Nevertheless, some DBMS (such as Oracle Database) do not abide by this SQL standard restriction.
Представления могут объединять и упрощать несколько таблиц в одну виртуальную таблицу. Представления могут выступать в качестве агрегированных таблиц, где движок базы данных агрегирует данные (сумма, среднее значение и т. д.) и представляет вычисленные результаты как часть данных. Представления могут скрывать сложность данных. Например, представление может отображаться как Sales2020 или Sales2021, прозрачно разделяя фактическую базовую таблицу. Представления занимают очень мало места для хранения; база данных содержит только определение представления, а не копию всех данных, которые оно представляет. Представления структурируют данные таким образом, чтобы пользователи находили их естественными и интуитивно понятными. Подобно тому, как функция (в программировании) может обеспечить абстракцию, так же может поступить и представление базы данных. В аналогии с функциями, пользователи баз данных могут манипулировать вложенными представлениями, таким образом, одно представление может агрегировать данные из других представлений. Без использования представлений нормализация баз данных выше второй нормальной формы стала бы гораздо сложнее. Представления могут облегчить создание безпотерьного разложения соединений. Так же, как строки в базовой таблице не имеют определенного порядка, строки, доступные через представление, не отображаются с какой-либо сортировкой по умолчанию. Представление – это реляционная таблица, а реляционная модель определяет таблицу как набор строк. Поскольку множества не упорядочены по определению, то и строки представления не упорядочены. Поэтому предложение ORDER BY в определении представления не имеет смысла; стандарт SQL (SQL:2003) не допускает предложение ORDER BY в подзапросе команды CREATE VIEW, так же как оно не допускается в инструкции CREATE TABLE. Однако отсортированные данные можно получить из представления так же, как и из любой другой таблицы, – как часть запроса к этому представлению. Тем не менее, некоторые СУБД (например, Oracle Database) не соблюдают это ограничение стандарта SQL.
In a database, a view is the result set of a stored query, which can be queried in the same manner as a persistent database collection object. This pre established query command is kept in the data dictionary. Unlike ordinary base tables in a relational database, a view does not form part of the physical schema: as a result set, it is a virtual table
Views can join and simplify multiple tables into a single virtual table. Views can act as aggregated tables, where the database engine aggregates data (sum, average, etc.) and presents the calculated results as part of the data. Views can hide the complexity of data. For example, a view could appear as Sales2020 or Sales2021, transparently partitioning the actual underlying table. Views take very little space to store; the database contains only the definition of a view, not a copy of all the data that it presents. Structures data in a way that classes of users find natural and intuitive. Just as a function (in programming) can provide abstraction, so can a database view. In another parallel with functions, database users can manipulate nested views, thus one view can aggregate data from other views. Without the use of views, the normalization of databases above second normal form would become much more difficult. Views can make it easier to create lossless join decomposition. Just as rows in a base table lack any defined ordering, rows available through a view do not appear with any default sorting. A view is a relational table, and the relational model defines a table as a set of rows. Since sets are not ordered — by definition — neither are the rows of a view. Therefore, an ORDER BY clause in the view definition is meaningless; the SQL standard (SQL:2003) does not allow an ORDER BY clause in the subquery of a CREATE VIEW command, just as it is refused in a CREATE TABLE statement. However, sorted data can be obtained from a view, in the same way as any other table — as part of a query statement on that view. Nevertheless, some DBMS (such as Oracle Database) do not abide by this SQL standard restriction.
Просмотры только для чтения против обновляемых
Виды могут быть определены как только для чтения или обновляемые. Если система управления базами данных (СУБД) может определить обратное отображение от схемы вида к схеме базовых таблиц, то вид является обновляемым. Операции INSERT, UPDATE и DELETE могут выполняться над обновляемыми видами. Виды, предназначенные только для чтения, не поддерживают такие операции, поскольку СУБД не может сопоставить изменения базовым таблицам. Обновление вида выполняется с сохранением ключей. Некоторые системы поддерживают определение триггеров INSTEAD OF для видов. Эта техника позволяет определить другую логику для выполнения вместо операций вставки, обновления или удаления в видах. Таким образом, системы управления базами данных могут реализовывать изменение данных на основе видов, предназначенных только для чтения. Однако, триггер INSTEAD OF не изменяет свойство вида – только для чтения или обновляемый.
Материализованные взгляды
Различные системы управления базами данных расширили возможности представлений, изначально предназначенных для работы с подмножествами данных только для чтения, особенно материализованные представления: предварительно вычисленные, не виртуальные представления, широко используемые в хранилищах данных. Они предоставляют статический снимок данных и могут включать данные из удаленных источников. Точность материализованного представления зависит от частоты срабатывания механизмов, отвечающих за его обновление. Материализованные представления были впервые внедрены в Oracle Database, а IBM Db2 предоставляет так называемые "материализованные таблицы запросов" (MQT) для решения той же задачи. Microsoft SQL Server представил в версии 2000 года индексированные представления, которые хранят только отдельный индекс для таблицы, но не сами данные. PostgreSQL реализовал материализованные представления в версии 9.3.