Что такое VIEW (Представление) в базе данных?

«Что такое VIEW (Представление) в базе данных?» — вопрос из категории Базы данных, который задают на 26% собеседований Node.js Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

VIEW (Представление) — это виртуальная таблица, результат сохранённого SQL-запроса. Она не хранит данные физически, а каждый раз при обращении выполняет запрос к базовым таблицам.

Основные преимущества использования:

  • Абстракция и безопасность: Можно скрыть сложность запросов (JOIN, агрегатные функции) и ограничить доступ пользователей только к определённым столбцам или строкам.
  • Согласованность: Если структура базовых таблиц изменится, можно обновить VIEW, и клиентские приложения, работающие с ней, могут не потребовать изменений.
  • Упрощение: Сложную бизнес-логику выборки данных можно инкапсулировать в VIEW.

Пример создания и использования в SQL:

-- Создание VIEW, показывающей только активных пользователей и их заказы
CREATE VIEW active_user_orders AS
SELECT 
    u.id AS user_id,
    u.username,
    u.email,
    o.id AS order_id,
    o.total_amount,
    o.created_at
FROM users u
INNER JOIN orders o ON u.id = o.user_id
WHERE u.is_active = TRUE AND o.status = 'completed';

-- Использование VIEW как обычной таблицы
SELECT username, COUNT(order_id) as total_orders 
FROM active_user_orders 
GROUP BY username 
ORDER BY total_orders DESC;

Важные ограничения:

  • Не все VIEW являются обновляемыми (updatable). Как правило, нельзя выполнять INSERT/UPDATE/DELETE для VIEW, созданных на основе JOIN, агрегатных функций или DISTINCT.
  • Производительность зависит от производительности базового запроса. Для сложных VIEW может потребоваться индексация базовых таблиц или использование материализованных представлений (Materialized Views), которые кэшируют результат (не все СУБД поддерживают).