Подтвердить что ты не робот

Преимущество использования представлений в MySQL

Я узнал, что представления могут использоваться для создания пользовательских "представлений таблиц" (так сказать), которые объединяют связанные данные из нескольких таблиц.

Мой вопрос: каковы преимущества взглядов? В частности, скажем, у меня есть две таблицы:

event | eid, typeid, name
eventtype | typeid, max_team_members

Теперь я создаю представление:

eventdetails | event.eid, event.name, eventtype.max_team_members 
             | where event.typeid=eventtype.typeid

Теперь, если я хочу, чтобы максимальное число членов было разрешено в команде для некоторого event, я мог:

  • используйте представление
  • выполните запрос соединения (или, возможно, хранимую процедуру).

Какими будут мои преимущества/недостатки в каждом методе?

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

4b9b3361

Ответ 1

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

В дополнение к указанной выше функции безопасности:

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

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

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

Вы можете добавить новые столбцы в таблицу (таблицы) и изменить представление, чтобы исключить новые столбцы, чтобы некоторые старые запросы с использованием "select *" не прерывались при изменении определений таблиц.

Ответ 2

Вы можете ограничить пользователей представлением вместо базовой таблицы (таблиц), тем самым повышая безопасность.