You are on page 1of 9

ЛАБОРАТОРНА РОБОТА 4

СТВОРЕННЯ УЯВЛЕНЬ

4.1 МЕТА РОБОТИ


Вивчення засобів захисту даних

4.2 ТЕОРЕТИЧНІ ВІДОМОСТІ

4.2.1 Створення уявлень


Уявлення (VIEW) – об’єкт даних, який не містить жодних даних його
власника. Це - тип таблиці, чий зміст вибирається з інших таблиць за
допомогою виконання запиту. Оскільки значення в цих таблицях змінюється, то
автоматично ці значення можуть бути показані уявленнями.
Уявлення працюють у запитах і операторах DML так само як і основній
таблиці, але не містять ніяких власних даних.
Уявлення створюється командою CREATE VIEW з синтаксисом:

CREATE VIEW name [(view_col [, view_col ...])]


AS <select> [WITH CHECK OPTION];

Опція view_col гарантує, що уявлення завжди містить ті ж самі стовпчики,


що і основна таблиця, і ці стовпчики мають ті ж самі, визначенні уявленнями,
імена. Імена стовпчиків уявлення відповідають порядку і кількості стовпчиків
перерахованих у <select>. Ім’я стовпчиків повинні бути унікальними серед усіх
імен стовпчиків в уявленні. Якщо уявлення містить стовпчики, які основані на
виразах, тоді потрібен view_col. По замовчуванню, імена стовпчиків беруться з
базової таблиці.
Визначення view_col може містити лише один чи більше стовпчиків, які
засновані на виразі, який комбінує результати двох стовпчиків. Вираз повинен
повертати поодиноке значення і не повинен повертати масив чи масив
елементів. Якщо уявлення включає вираз view_col, опція обов’язкова.
Оператор SELECT не повинен включати речення ORDER BY.
WITH CHECK OPTION запобігає операції INSERT чи UPDATE на
модифікуємому уявленні, якщо INSERT чи UPDATE порушує умови пошуку
визначені в реченні WHERE в <select>. WITH CHECK OPTION не
використовується в уявленнях, призначених тільки для читання.
Уявлення модифікуємо якщо:
 воно підмножина поодинокої таблиці чи іншого модифікуємого
уявлення;
 всі стовпчики базової таблиці, які виключенні із визначення
уявлення, допускають значення NULL;
 інструкція SELECT уявлення не містить підзапити, предикат
DISTINCT, речення HAVING, агреатні функції, об’єднання таблиць,
визначені користувачем функції чи збереженної процедури.
Уявлення тільки для читання може бути модифіковане при використанні
визначених користувачем довідкових обмежень, тригерів та унікальних
індексів.
Поля уявлень часто мають імена, які отримані прямо з імен полів основної
таблиці. Це зручно. Однак, іноді потрібно постачати ваші стовпчики новими
іменами:
- коли деякі стовпчики є вивідними, і тому не мають імен;
- коли два чи більше стовпчика під час об’єднання мають ті ж
імена, що і в їх базовій таблиці.
Імена, які можуть стати іменами полів, наводяться у круглих дужках ( ),
після імені таблиць. Вони не будуть запитані, якщо співпадають з іменами
полів запитуванної таблиці. Тип даних та розмір цих полів буде відрізнятися від
запитуваних полів, котрі "передаються" в них. Зазвичай, не вказують нові імена
полів, але якщо це зроблено, необхідно робити це для кожного поля в уявленні.
Наступний скрипт створює модифіковане уявлення:
CREATE VIEW SNOW_LINE (CITY, STATE, SNOW_ALTITUDE)
AS
SELECT CITY, STATE, ALTITUDE
FROM CITIES
WHERE ALTITUDE > 5000;

Наступний скрипт для створення уявлення використовують вкладені


запити:

CREATE VIEW RECENT_CITIES


AS
SELECT STATE, CITY, POPULATION
FROM CITIES
WHERE STATE IN
(SELECT STATE
FROM STATES
WHERE STATEHOOD > "1-JAN-1850");

В модифікованому уявленні WITH CHECK OPTION запобігає будь-яким


вставкам чи модифікацій через уявлення, котрі не задовольняють реченню
WHERE в інструкціїї CREATE VIEW SELECT:

CREATE VIEW HALF_MILE_CITIES


AS
SELECT CITY, STATE, ALTITUDE
FROM CITIES
WHERE ALTITUDE > 2500
WITH CHECK OPTION;
4.2.2 Модифікація уявлень

Речення WITH CHECK OPTION в попередньому уявленні, запобігло б


наступній вставці:

INSERT INTO HALF_MILE_CITIES (CITY, STATE, ALTITUDE)


VALUES ("Chicago", "Illinois", 250);

З іншого боку, наступний UPDATE був би вирішений:

INSERT INTO HALF_MILE_CITIES (CITY, STATE, ALTITUDE)


VALUES ("Truckee", "California", 2736);

Речення WITH CHECK OPTION не допускає модифікацій через уявлення,


котрі змінюють значення рядка, так що уявлення не зможе відшукати його:

UPDATE HALF_MILE_CITIES
SET ALTITUDE = 2000
WHERE STATE = "NY";

Також можна об’єднати уявлення з іншими таблицями, базовими


таблицями чи уявленнями.
Наступна інструкція створює уявлення, котре об’єднує дві таблиці і тому
використовується тільки для читання:

CREATE VIEW PHONE_LIST


AS
SELECT
EMP_NO, FIRST_NAME, LAST_NAME, PHONE_EXT, LOCATION,
PHONE_NO
FROM EMPLOYEE, DEPARTMENT
WHERE EMPLOYEE.DEPT_NO = DEPARTMENT.DEPT_NO;

4.2.3 Видалення уявлень


Інструкція DROP VIEW дозволяє розробнику уявлення видалити певні
уявлення із бази даних, якщо уявлення не використовується в інших уявленнях,
збереженних процедурах чи визначенні CHECK обмеження. Уявлення може
бути видалено його розробником чи користувачем SYSDBA. Синтаксис:

DROP VIEW name;


де name – ім’я існуючого уявлення.

4.3 ЗАВДАННЯ НА ЛАБОРАТОРНУ РОБОТУ


1. Створити уявлення для таблиць, створених у лабораторній роботі №1,
згідно варіанту.
2. Створити уявлення для двох таблиць, створених у лабораторній роботі
№1.
3. Модифікувати уявлення п 1.
4. Перевірити виконання модифікацій п. 3.
5. Згрупувати, об’єднати уявлення.
6. Створити уявлення_тільки_для читання, перевірити дію обмеження
“тільки для читання”.
7. Видалити уявлення, за вказівкою викладача.
4.4 МЕТОДИКА ВИКОНАННЯ

Після підключення до таблиці, натискаємо клавішу Инструменты на


панелі інструментів та вибираємо Query builder. З’являється вікно для
створення найпростіших запитів, малювання зв’язків між таблицями та
уявленнями.

У правій частині SQL builder знаходиться перелік таблиць та створених


уявлень. Зліва знаходиться вікно редагування, з якого перетягуємо необхідні
таблиці, виділяємо у віконечках лівою кнопкою миші потрібні стовпчики, які
потрібно вивести у запиті, потім малюємо зв’язки перетягуванням. При цьому
автоматично створюється відповідна вибірка та скрипт, який можна прочитати
у закладці EDIT.
Для створення уявлення натиснемо клавішу create view from select. У
заготовці уявлення, що з’явилось виправимо ім’я на необхідне, і зробимо
компіляцію. Для того щоб подивитися результат переходимо на закладку дані.
Якщо уявлення модифіковане, то саме тут (в закладці даних) можна
добавляти чи видаляти дані. Якщо ж перейти до основної таблиці, то можна
побачити що тут відбулись ті ж самі зміни, що і з уявленням.
4.5 ЗМІСТ ЗВІТУ
Розділ “Результати роботи” повинен містити скрипти і результати
створення і модифікації уявлень.

4.6 КОНТРОЛЬНІ ПИТАННЯ


1. Створіть уявлення, яке показує всіх замовників з самою високою
оцінкою.
2. Створіть уявлення, котре показує номер продавця в кожному місті.
3. Створіть уявлення, котре показує усередненний та загальний
порядки для кожного продавця після його імені. Пропонується, що всі імена
- унікальні.
4. Створіть уявлення, котре показує кожного продавця з
багаточисельними замовниками.
5. Чи можна видалити рядок даних із уявлення, створенного на
основі даних декількох таблиць?

You might also like