Jump to content

Просмотр (SQL)

(Перенаправлено из View (база данных) )

В базе данных представление это набор результатов хранимого запроса , который представляет пользователю ограниченную перспективу базы данных. [1] Эта заранее установленная команда запроса хранится в словаре данных . В отличие от обычных базовых таблиц в реляционной базе данных , представление не является частью физической схемы : в результате набора результатов оно представляет собой виртуальную таблицу. [1] вычисляется или сопоставляется динамически на основе данных в базе данных, когда запрашивается доступ к этому представлению. Изменения, примененные к данным в соответствующей базовой таблице, отражаются в данных, отображаемых при последующих вызовах представления.

Представления могут иметь преимущества перед таблицами:

  • Представления могут представлять подмножество данных, содержащихся в таблице. Следовательно, представление может ограничить степень воздействия базовых таблиц на внешний мир: данный пользователь может иметь разрешение на запрос представления, но при этом ему будет отказано в доступе к остальной части базовой таблицы. [2]
  • Представления могут объединять и упрощать несколько таблиц в одну виртуальную таблицу. [2]
  • Представления могут действовать как агрегированные таблицы, в которых механизм базы данных агрегирует данные ( сумма , среднее значение и т. д.) и представляет рассчитанные результаты как часть данных.
  • Представления могут скрыть сложность данных. Например, представление может выглядеть как Sales2020 или Sales2021, прозрачно разделяя фактическую базовую таблицу.
  • Представления занимают очень мало места для хранения; база данных содержит только определение представления, а не копию всех данных, которые оно представляет.
  • Структурирует данные таким образом, чтобы классы пользователей находили их естественными и интуитивно понятными. [2]

Точно так же, как функция (в программировании) может обеспечивать абстракцию , то же самое может делать и представление базы данных. Другая параллель с функциями заключается в том, что пользователи базы данных могут манипулировать вложенными представлениями, таким образом, одно представление может объединять данные из других представлений. Без использования представлений нормализация баз данных выше второй нормальной формы стала бы намного сложнее. Представления могут упростить создание декомпозиции соединения без потерь.

Точно так же, как строки в базовой таблице не имеют определенного порядка, строки, доступные через представление, не отображаются с какой-либо сортировкой по умолчанию. Представление — это реляционная таблица, а реляционная модель определяет таблицу как набор строк. Поскольку множества по определению не упорядочены, то и строки представления не упорядочены. Следовательно, предложение ORDER BY в определении представления бессмысленно; стандарт SQL ( SQL:2003 ) не допускает использование предложения ORDER BY в подзапросе команды CREATE VIEW, так же как оно запрещено в операторе CREATE TABLE. Однако отсортированные данные можно получить из представления так же, как и из любой другой таблицы — как часть оператора запроса к этому представлению. Тем не менее, некоторые СУБД (например, Oracle Database ) не соблюдают это ограничение стандарта SQL.

Представления только для чтения и обновляемые представления

[ редактировать ]

Представления могут быть определены как доступные только для чтения или обновляемые. Если система базы данных может определить обратное сопоставление схемы представления со схемой базовых таблиц, то представление является обновляемым. Операции INSERT , UPDATE и DELETE могут выполняться над обновляемыми представлениями. Представления только для чтения не поддерживают такие операции, поскольку СУБД не может сопоставить изменения с базовыми таблицами. Обновление представления выполняется путем сохранения ключа.

Некоторые системы поддерживают определение триггеров INSTEAD OF в представлениях. Этот метод позволяет определять другую логику для выполнения вместо операций вставки, обновления или удаления в представлениях. Таким образом, системы баз данных могут реализовывать модификации данных на основе представлений, доступных только для чтения. Однако триггер INSTEAD OF не меняет свойство «только для чтения» или «обновляемое» самого представления.

Материализованные представления

[ редактировать ]

Различные системы управления базами данных расширили представления из подмножеств данных , доступных только для чтения, в частности, из материализованных представлений : заранее выполненных невиртуальных представлений, обычно используемых в хранилищах данных . Они предоставляют статический снимок данных и могут включать данные из удаленных источников. Точность материализованного представления зависит от частоты триггерных механизмов, лежащих в основе его обновлений.

Материализованные представления были представлены Oracle Database , а IBM Db2 предоставляет для той же цели так называемые «материализованные таблицы запросов» (MQT). Microsoft SQL Server представил в своей версии 2000 индексированные представления, которые хранят только отдельный индекс таблицы, но не все данные. PostgreSQL реализовал материализованные представления в своей версии 9.3.

Эквивалентность

[ редактировать ]

Представление эквивалентно исходному запросу. Когда запросы выполняются к представлениям, запрос изменяется. Например, если существует представление с именем account_view со следующим содержимым:

--accounts_view:  -------------  ВЫБЕРИТЕ   имя  ,         деньги_полученные  ,         деньги_отправленные  ,         (  деньги_полученные   -   деньги_отправленные  )   КАК   баланс  ,         адрес  , 	    ...    ОТ   table_customers   c     ПРИСОЕДИНЯЙТЕСЬ   к таблице_счетов   a       НА   a  .  customer_id   =   c  .  customer_id 

тогда приложение может выполнить простой запрос, например:

-- Простой запрос  ------------  ВЫБРАТЬ   имя  ,         баланс    ИЗ   account_view 

следующее Затем СУБД принимает простой запрос, заменяет эквивалентное представление, а затем отправляет оптимизатору запросов :

-- Предварительно обработанный запрос:  ------------------  ВЫБРАТЬ   имя  ,         баланс    FROM   (  ВЫБРАТЬ   имя  ,                 деньги_полученные  ,                 деньги_отправленные  ,                 (  деньги_полученные   -   деньги_отправленные  )   КАК   баланс  ,                 адрес  , 			     ...            ОТ   table_customers   c   ПРИСОЕДИНЯЙТЕСЬ   таблице_аккаунтов   a                 ON   a  .  customer_id   =   c  .          к 

Затем оптимизатор удаляет ненужные поля и сложность (например, нет необходимости читать адрес, поскольку родительский вызов его не использует), а затем отправляет запрос механизму SQL для обработки.

См. также

[ редактировать ]
  1. ^ Перейти обратно: а б «25.5 Использование представлений» . MySQL . Оракул. 2023-12-12. Архивировано из оригинала 23 ноября 2023 г. Проверено 12 декабря 2023 г. Представления — это хранимые запросы, которые при вызове создают набор результатов. Представление действует как виртуальная таблица.
  2. ^ Перейти обратно: а б с Грофф, Джеймс Р.; Вайнберг, Пол Н. (1999). SQL: Полный справочник (PDF) . Осборн/МакГроу-Хилл. стр. 291–292. ISBN  0072118458 .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: cc055efec721bcbaba011877ce769bde__1722289560
URL1:https://arc.ask3.ru/arc/aa/cc/de/cc055efec721bcbaba011877ce769bde.html
Заголовок, (Title) документа по адресу, URL1:
View (SQL) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)