Перегляди

 

Основною структурною одиницею в реляційних базах даних є таблиці. Однак мова запитів SQL надає ще один спосіб організації даних - перегляди. Перегляд - це запит на вибірку (select), якому присвоюється унікальне ім'я і який можна зберігати або видаляти з бази даних як звичайну процедуру. Перегляди дозволяють побачити результати збереженого запиту, таким чином, начебто це повноцінна таблиця бази даних.

Зауваження:

  • Перегляди та всі пов'язані з ними оператори доступні в СУБД MySQL, починаючи з версії 5.0.1.

 

Коли СУБД MySQL зустрічає в запиті посилання на перегляд, він відшукує його визначення, збережене в базі даних. Потім відбувається перетворення користувальницького запиту за участю перегляду в еквівалентний запит до вхідних таблиць. Після чого відбувається виконання запиту. Таким чином, клієнт може працювати з переглядами так, як би вони існували незалежно від таблиць. Якщо тіло перегляду просте, то кожен рядок перегляду формується "на льоту". Якщо тіло складне, СУБД MySQL "матеріалізує" представлення у вигляді тимчасової таблиці в оперативній пам'яті або на жорсткому диску.

Клієнт, звертаючись до перегляду, буде бачити лише стовпці результуючої таблиці. При цьому не має значення, скільки стовпців у вихідній таблиці і чи є select-запит, що лежить в основі перегляду, одно-або багатотабличним. Крім того, клієнту можна заборонити звертатися до вхідних таблиць, але забезпечити привілегіями звернення до переглядів. Таким чином, на одному і тому ж наборі таблиць можна створити гнучкі системи доступу до таблиць бази даних.

Враховуючи все вищесказане, можна виділити наступні переваги переглядів:

  1. безпека - кожному користувачу можна дозволити доступ до невеликого числа переглядів, що містять тільки ту інформацію, яку йому дозволено знати;
  2. простота запитів - за допомогою перегляду можна витягти дані з декількох таблиць і представити їх як одну таблицю, замінюючи запит до багатьох таблиць в однотабличний запит до подання;
  3. простота структури - перегляди дозволяють створити для кожного користувача власну "структуру" бази даних, відображаючи лише ті дані, які йому потрібні, і "не засмічуючи" результати допоміжними стовпцями, які користувачу свідомо не знадобляться;

 

Крім переваг, описаних вище, перегляди мають ряд недоліків:

 

  1. продуктивність-перегляди створюють лише видимість існування відповідної таблиці, і СУБД MySQL доводиться перетворювати запит до перегляду в запит до вхідних таблиць. Якщо подання відображає багатотабличний запит, то простий запит до перегляду стає складним об'єднанням і на його виконання може знадобитися багато часу;
  2. обмеження на оновлення - коли користувач намагається оновити рядки перегляду, СКБД MySQL необхідно оновити рядки у вихідних таблицях. Це можливо тільки для простих переглядів; складні перегляди оновити не можна, вони доступні тільки для вибірки.

 

Зазначені недоліки означають, що не варто без аналізу застосовувати перегляди замість вихідних таблиць. У кожному конкретному випадку необхідно враховувати перераховані переваги та недоліки.