Что серьезное основание состоит в том, чтобы использовать представления SQL?

Я прочитываю библию SQL Server 2008 года, и я покрываю раздел представлений. Но автор действительно не объясняет цель представлений. Что такое хорошее использование для представлений? Я должен использовать их в своем веб-сайте и каковы преимущества их?

88
задан Jens 10 September 2011 в 15:18
поделиться

8 ответов

Другое использование, о котором, похоже, не упоминалось ни в одном из предыдущих ответов, - это более простое развертывание изменений структуры таблицы.

Допустим, вы хотите удалить таблицу ( T_OLD ), содержащую данные для активных пользователей, и вместо этого использовать новую таблицу с аналогичными данными (с именем T_NEW ), но с данными. как для активных, так и для неактивных пользователей, с одним дополнительным столбцом активным .

Если в вашей системе (-ах) миллионы запросов, выполняющих SELECT something FROM T_OLD WHERE any , у вас есть два варианта развертывания:

1) Cold Turkey - Измените БД и в то же время измените, протестируйте и выпустите многочисленные фрагменты кода, содержащие указанный запрос. ОЧЕНЬ сложно сделать (или даже согласовать), очень рискованно. Плохой.

2) Постепенный - измените БД, создав таблицу T_NEW , удалив таблицу T_OLD и вместо этого создав VIEW , вызываемый T_OLD , который имитирует таблицу T_OLD на 100% (например, запрос представления: SELECT all_fields_except_active FROM T_NEW WHERE active = 1 ).

Это позволит вам не выпускать ЛЮБОЙ код, который в настоящее время выбирается из T_OLD , и вносить изменения для переноса кода из T_OLD в T_NEW в свободное время.

Это простой пример, есть и другие, гораздо более сложные.

P.S. С другой стороны, вам, вероятно, следовало бы иметь API хранимых процедур вместо прямых запросов из T_OLD , но это не всегда так.

76
ответ дан 24 November 2019 в 07:33
поделиться

Некоторые причины из Википедии :

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

  1. Представления могут представлять подмножество данных содержащиеся в таблице
  2. Представления могут объединять и упрощать несколько таблиц в единую виртуальную таблицу
  3. Представления могут действовать как агрегированные таблицы , в которых ядро ​​базы данных объединяет данные ( сумма, среднее и т. д.) и представляет результаты вычислений как часть данных
  4. Представления могут скрыть сложность данных ; например, представление может отображаться как Sales2000 или Sales2001, прозрачно разделяя фактическую базовую таблицу
  5. Представления занимают очень мало места для хранения ; база данных содержит только определение представления, а не копию всех данных, которые оно представляет
  6. В зависимости от используемого механизма SQL представления могут обеспечивать дополнительную безопасность
  7. Представления могут ограничить степень воздействия стола или таблиц на внешний мир
15
ответ дан 24 November 2019 в 07:33
поделиться

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

Это интерфейс.

9
ответ дан 24 November 2019 в 07:33
поделиться

ПРОСМОТРЫ могут использоваться как повторно используемые разделы SELECT / CODE, которые могут быть включены в другие выборки / запросы, которые необходимо объединить, и использовать различные различные фильтры, без необходимости каждый раз воссоздавать весь SELECT.

Это также размещает логику в одном месте, так что вам не нужно менять ее во всей базе кода.

Взгляните на

Выбор между хранимыми процедурами, функциями, представлениями, триггерами, встроенным SQL.

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

14
ответ дан 24 November 2019 в 07:33
поделиться

Вот один очень распространенный способ использования представлений для ограничения объекта некоторыми критериями.

Таблица: USERS содержит всех пользователей

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

Таким образом, вы можете использовать таблицу на своих страницах управления пользователями, но остальная часть приложения может использовать ACTIVE_USERS, поскольку они могут быть единственными пользователями, которые должны иметь возможность выполнять процессы и получать доступ / изменять данные.

3
ответ дан 24 November 2019 в 07:33
поделиться

Небольшой список общих причин / использования:

  • используйте их для изменения формата или "внешнего вида" данных (т. Е. Вы можете объединить имя и фамилию вместе)

    выполнять вычисления или другие поисковые запросы на data

    денормализует данные (извлекает данные из нескольких таблиц в одно место)

1
ответ дан 24 November 2019 в 07:33
поделиться

(Скопировано из первого руководства, появившегося в поиске Google (ссылка теперь мертва), но в нем есть все преимущества, которые я бы сам набрал вручную .)

Представления имеют следующие преимущества:

  • Безопасность - Представления можно сделать доступными для пользователей, в то время как базовые таблицы недоступны напрямую. Это позволяет администратору баз данных предоставлять пользователям только те данные, которые им нужны, одновременно защищая другие данные в той же таблице.
  • Простота - представления можно использовать для скрытия и повторного использования сложных запросов.
  • Упрощение или уточнение имени столбца - представления могут использоваться для предоставления псевдонимов имен столбцов, чтобы сделать их более запоминающимися и / или значимыми.
  • Ступенька - представления могут служить отправной точкой в ​​«многоуровневом» запросе. Например, вы можете создать представление запроса, в котором подсчитывается количество продаж, совершенных каждым продавцом. Затем вы можете запросить это представление, чтобы сгруппировать продавцов по количеству совершенных ими продаж.
42
ответ дан 24 November 2019 в 07:33
поделиться

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

2
ответ дан 24 November 2019 в 07:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: