Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Розділ 6.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
453.63 Кб
Скачать
  1. Уявлення (View)

Однією з таких можливостей є поява так званих уявлень(Уіе\Уз). їх ідея полягає створенні віртуальних таблиць з можливостю маніпулювання ними як із реальними. Це знижує ризик небажаних змін даних від помилок та спростити виконання запитів.

Визначення:

Уявлення (view) - це таблиця, значення якої береться з інших таблиць за допомогою запиту. При цьому нові копії даних не створюються. Коли вміст базових таблиць змінюється, СУБД автоматично перевиконує

запити, які створюють View, що приводить до відповідних змін в уявленнях.

Уявлення створюється за допомогою команди:

CREATE VIEW <ім’я_Уявлення> [<ім'я_колоики>...]

AS <запит>

При цьому повинні дотримуватися наступні обмеження:

уявлення повинне базуватися на єдиному запиті (використання UNION не допускається)

вихідні дані запиту, що формує уявлення, мають бути не впорядковані (використання ORDER BY не допускається)

Створимо уявлення, що в якому міститься інформація про студентів, здані ними екзамени та отримані оцінки :

CREATE VIEW studentНМ AS

SELECT stud, name, mark, mark, course, coursetitle, course, annotation FROM stud, exam, mark, course

WHERE stud.stud_id=mark.stud_id AND exam.exam_id=mark.exam id AND course, course jd-exam. course_id

Тепер будь-який користувач, чиїх прав на доступ до даного уявлення дос­татньо, може здійснювати вибірку даних studentHM. Наприклад:

SELECT name, annotation FROM studentHM WHERE mark = ’A'

SELECT name, count(courset itle) FROM studentHM GROUP BY name (Права користувачів на доступ до уявлення призначаються також, за допо­могою команд GRANT/ REVOKE.)

Із приведеного вище прикладу досить зрозуміло показують переваги використання уявлень. Якщо запити типу «вибрати всі екзамени даного студента із вказанням назви предмета» виконуються досить часто, то створення таблиці studentHM, що представляється, значно скоротить ресурсні витрати на виконання з’єднання чотирьох базових таблиць stud, exam, mark, course. Крім того, в уявленні може бути представлена інформація, що явно не зберігається жодній із базових таблиць. Наприклад, одна із колонок уявлення, може бути обчислювана:

CREATE VIEW amount (name, av_mark) AS SELECT stud, name, avarage (mark, mark)

FROM stud, mark

WHERE stud.stud_id-mark.stud_id GROUP BY name;

Тут використана ще одна, раніше не описана, можливість SQL - при­своєння нових імен колонкам уявлення. У приведеному прикладі середній

бал кожного студента буде зберігаетися в колонці з ім'ям сп>_тагк. Заува­жимо, що якщо ми хочемо привласнити нові імена колонкам уявлення, по­трібно вказувати імена для всіх колонок. Тип даних колонки уявлення та його нульовий статус завжди залежать від того, як він був визначений в базовій таблиці (таблицях). Запит на вибірку даних до уявлення виглядає абсолютно аналогічно запиту до будь-якої іншої таблиці. Однак на зміну даних в уявленні накладаються обмеження. Стисло про них можна сказати таке:

Якщо уявлення береться з однієї таблиці, зміни даних в ньому допускаються. При цьому змінюються дані в пов'язаній з ним таблиці.

Якщо уявлення береться з більш ніж однієї таблиці, то зміни даних в ньому не допускаються, оскільки в більшості випадків СУБД не може правильно відновити схему базових таблиць із схеми уявлення(характерний приклад зворотньої задачі).

Видалення уявлення проводиться за допомогою оператора:

DROP VIEW <ім’я_представлення>