Представления приемлемы, когда вам нужно убедиться, что каждый раз соблюдается сложная логика. Например, у нас есть представление, которое создает необработанные данные, необходимые для всей финансовой отчетности. Если все отчеты используют это представление, все работают с одним и тем же набором данных, а не с одним отчетом, использующим один набор объединений, а другой забывает использовать тот, который дает разные результаты.
Представления приемлемы, если вы хотите ограничить пользователей определенным набором данных. Например, если вы не удаляете записи, а только помечаете текущую как активную, а более старые версии как неактивные, вы хотите, чтобы представление использовалось для выбора только активных записей. Это предохраняет людей от того, чтобы забыть поместить предложение where в запрос и получить плохие результаты.
Представления могут использоваться, чтобы гарантировать, что пользователи имеют доступ только к набору записей - например, представление таблиц для конкретного клиента и отсутствие прав безопасности для таблиц может означать, что пользователи для этого клиента могут когда-либо видеть только данные для этого клиента.
Представления очень полезны при рефакторинге баз данных.
Представления неприемлемы, когда вы используете представления для вызова представлений, что может привести к ужасной производительности (по крайней мере, в SQL Server). Мы почти потеряли многомиллионного клиента из-за того, что кто-то решил абстрагироваться от базы данных таким образом, и производительность была ужасной, а таймауты частыми. Нам тоже пришлось заплатить за исправление, а не за клиента, поскольку проблема с производительностью была полностью нашей ошибкой. Когда представления вызывают представления, они должны полностью генерировать базовое представление. Я видел это, когда представление вызывало представление, которое вызывало представление, и было сгенерировано столько миллионов записей, чтобы увидеть три, которые в конечном итоге понадобились пользователю. Я помню, что одному из этих представлений потребовалось 8 минут, чтобы произвести простой подсчет (*) записей. Представления, вызывающие представления - крайне плохая идея.
Представления часто являются плохой идеей для обновления записей, поскольку обычно вы можете обновлять только поля из той же таблицы (опять же, это SQL Server, другие базы данных могут отличаться). В этом случае имеет смысл в любом случае напрямую обновлять таблицы, чтобы вы знали, какие поля доступны.