Почему используется представление базы данных? - PullRequest
9 голосов
/ 16 марта 2010

Использует ли "view" в db design правильный метод, или мы должны обрабатывать его на стороне кода? Каковы преимущества или недостатки?

Ответы [ 4 ]

15 голосов
/ 16 марта 2010

Я вижу несколько причин для использования представлений:

  • Обеспечьте более простой интерфейс: просто запросите представление, а не дюжину таблиц, сделайте соединения и все
  • Предоставить интерфейс, который не изменяется (или реже) :
    • Даже если вы измените структуру таблиц, вы можете изменить свое представление, чтобы оно по-прежнему возвращало то же самое
    • Это означает, что в коде вашего приложения не требуется никаких изменений: оно все равно будет работать, поскольку оно использует представление и не имеет прямого доступа к таблицам
  • Предоставляет интерфейс только для некоторых полей таблиц.
    • Пользователям не нужно просматривать некоторые данные, которые они не будут использовать
    • Или для доступа к некоторым данным они не должны использовать
  • С некоторыми механизмами баз данных (я думаю, что MS SQL Server поддерживает это) , некоторые типы представлений могут иметь индексы
    • Что хорошо для производительности: если у вас есть какой-то сложный запрос, сохраните его как представление и определите необходимые индексы для этого представления
5 голосов
/ 16 марта 2010

Два типичных сценария для представлений в нашем случае:

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

Надеюсь, это поможет.

2 голосов
/ 16 марта 2010

Зависит. Я использую их иногда, но не так часто. Они ОЧЕНЬ полезны для объяснения декодированных представлений данных для использования конечным пользователем (инструментами), например, приложениями для создания отчетов. Таким образом, вы можете предоставить конечному пользователю упрощенную версию часто запрашиваемой информации, скрывая некоторые технические детали.

0 голосов
/ 21 октября 2018

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

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

...