Представление и таблица в базе данных: что хранится, а что вычисляется

Чем обычное представление отличается от таблицы, почему оно выглядит как таблица и когда удобен каждый вариант.

Картотека с данными и прозрачная рамка с выбранными карточками — различие таблицы и представления.

Один и тот же отчёт каждый день

Представим условную команду продаж. Сведения о заказах хранятся в одной таблице, названия товаров — в другой. Сотрудникам нужен привычный список, где рядом видны заказ и товар. Можно каждый раз заново формулировать правило объединения, а можно дать этому правилу имя и обращаться к нему как к готовому представлению.

Таблица и представление внешне могут быть похожи: оба показывают строки и столбцы. Но при разговоре о хранении важно различать сам набор записей и способ увидеть их через сохранённое правило. Речь здесь об обычном представлении; материализованные варианты устроены иначе и требуют отдельного объяснения.

Таблица хранит записи

В обычной таблице база данных хранит строки: условный номер заказа, дату и сумму. Столбцы описывают, какие сведения ожидаются. Записи могут добавляться и меняться по правилам системы. Если источник ошибся в сумме, ошибка окажется в таблице; одно лишь удобное отображение её не исправит.

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

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

Обычное представление задаёт именованный способ получить нужные строки и столбцы из одной или нескольких таблиц. Пользователь может обращаться к нему почти как к таблице, но видимый набор строится по определению представления. Документация PostgreSQL показывает такой приём для повторяющегося объединения данных и отмечает, что представление скрывает от потребителя детали структуры исходных таблиц.

В нашем условном случае представление может показывать заказ вместе с названием товара. Если название исправили в исходной таблице, следующий просмотр обычного представления опирается на актуальные исходные данные. Это не самостоятельная копия списка, которую кто-то обязан вручную переписать.

Когда различие важно

Представление удобно, когда многим людям нужен один согласованный способ видеть данные. Например, команда может договориться показывать только завершённые заказы и одинаково трактовать отмены. Но определение представления тоже нужно поддерживать: изменение исходной таблицы или смысла статуса может повлиять на результат.

Не стоит считать обычное представление автоматически быстрым или безопасным. Сложный способ получения данных способен работать медленно, а доступ к чувствительным сведениям зависит от настроенных прав и определения. Если результат нужно хранить отдельно для повторного чтения, рассматривают другие варианты, включая подготовленные таблицы или материализованные представления.

Как объяснить выбор коллеге

Спросите, что должно оставаться сохранённым: сами записи или правило их просмотра. Если требуется записывать новые заказы, нужна таблица. Если нужно многократно показывать согласованный срез уже существующих данных, может подойти представление. Для устойчивого отчёта дополнительно уточните частоту обновления исходных таблиц и допустимую задержку.

Полезно записать определение результата человеческими словами: какие заказы попадают в список и почему. Тогда даже без знания устройства базы люди смогут проверить, отвечает ли представление их задаче. Название объекта не заменяет описание бизнес-смысла.

Проверка на условном примере

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

Путаница возникает, когда словом «представление» называют и экран приложения, и объект базы данных. В этой статье речь только об объекте базы. Его правила стоит документировать, чтобы коллеги не принимали видимый список за независимый источник истины.

По теме

Следующий шаг

Если хотите развить навыки в этой области, посмотрите SQL инженер и сопоставьте программу со своими задачами. Материал помогает понять отдельный вопрос, но не заменяет практику и обсуждение конкретной ситуации с вашей командой.

SQL инженер
Курс
Доступ сразу
SQL инженер

SQL инженер — это специалист, который работает с базами данных, разрабатывает запросы, оптимизирует хранение данных и обеспечивает эффективную работу с информацией в компаниях.

С нуля до junior
Теория и практика
Диплом по окончании
500
₽/мес
УЗНАТЬ ПОДРОБНЕЕ

Источники

Читайте также

Обучить команду или нанять специалиста по данным: как выбрать
47

Обучить команду или нанять специалиста по данным: как выбрать

Как руководителю определить, какие навыки развивать внутри команды, когда нужна новая роль и почему обучение и найм часто дополняют друг друга.
Вертикальное и горизонтальное масштабирование данных: в чём разница
46

Вертикальное и горизонтальное масштабирование данных: в чём разница

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

Журнал изменений данных: как выяснить, кто и когда изменил набор

Что можно узнать из журнала действий с данными, как он помогает разбирать ошибки и почему его записи не показывают всю историю сами по себе.

Занятия проходят
в Нова Дата СДО

Вебинары, практика и общение с преподавателем — в одном окне браузера.

Посмотреть интерфейс платформы
Календарь обучения в Нова Дата СДО
Курсы студента в Нова Дата СДО
Редактор кода для практики в Нова Дата СДО
Вебинары и расписание Ваши курсы Код в браузере
Нова Дата СДО — в реестре российского ПОРеестровая запись № 34931
Заявка отправлена
Отправим вам подборку курсов в течение 5 минут. С вами также свяжется наш специалист и даст карьерную консультацию.
Персональный промокод
На курс «Инженер по парсингу данных»
Введите код при оплате, чтобы применить скидку к программе.