Перегляди
Основною структурною одиницею в реляційних базах даних є таблиці. Однак мова запитів SQL надає ще один спосіб організації даних - перегляди. Перегляд - це запит на вибірку (select), якому присвоюється унікальне ім'я і який можна зберігати або видаляти з бази даних як звичайну процедуру. Перегляди дозволяють побачити результати збереженого запиту, таким чином, начебто це повноцінна таблиця бази даних.
Зауваження:
- Перегляди та всі пов'язані з ними оператори доступні в СУБД MySQL, починаючи з версії 5.0.1.
Коли СУБД MySQL зустрічає в запиті посилання на перегляд, він відшукує його визначення, збережене в базі даних. Потім відбувається перетворення користувальницького запиту за участю перегляду в еквівалентний запит до вхідних таблиць. Після чого відбувається виконання запиту. Таким чином, клієнт може працювати з переглядами так, як би вони існували незалежно від таблиць. Якщо тіло перегляду просте, то кожен рядок перегляду формується "на льоту". Якщо тіло складне, СУБД MySQL "матеріалізує" представлення у вигляді тимчасової таблиці в оперативній пам'яті або на жорсткому диску.
Клієнт, звертаючись до перегляду, буде бачити лише стовпці результуючої таблиці. При цьому не має значення, скільки стовпців у вихідній таблиці і чи є select-запит, що лежить в основі перегляду, одно-або багатотабличним. Крім того, клієнту можна заборонити звертатися до вхідних таблиць, але забезпечити привілегіями звернення до переглядів. Таким чином, на одному і тому ж наборі таблиць можна створити гнучкі системи доступу до таблиць бази даних.
Враховуючи все вищесказане, можна виділити наступні переваги переглядів:
- безпека - кожному користувачу можна дозволити доступ до невеликого числа переглядів, що містять тільки ту інформацію, яку йому дозволено знати;
- простота запитів - за допомогою перегляду можна витягти дані з декількох таблиць і представити їх як одну таблицю, замінюючи запит до багатьох таблиць в однотабличний запит до подання;
- простота структури - перегляди дозволяють створити для кожного користувача власну "структуру" бази даних, відображаючи лише ті дані, які йому потрібні, і "не засмічуючи" результати допоміжними стовпцями, які користувачу свідомо не знадобляться;
Крім переваг, описаних вище, перегляди мають ряд недоліків:
- продуктивність-перегляди створюють лише видимість існування відповідної таблиці, і СУБД MySQL доводиться перетворювати запит до перегляду в запит до вхідних таблиць. Якщо подання відображає багатотабличний запит, то простий запит до перегляду стає складним об'єднанням і на його виконання може знадобитися багато часу;
- обмеження на оновлення - коли користувач намагається оновити рядки перегляду, СКБД MySQL необхідно оновити рядки у вихідних таблицях. Це можливо тільки для простих переглядів; складні перегляди оновити не можна, вони доступні тільки для вибірки.
Зазначені недоліки означають, що не варто без аналізу застосовувати перегляди замість вихідних таблиць. У кожному конкретному випадку необхідно враховувати перераховані переваги та недоліки.