logo
Проектування та розробка бази даних "Виставка собак"

3.3.1 Розробка уявлень для відображення результатів вибірки

Уявлення іноді називають "віртуальними таблицями". Така назва повязана з тим, що подання доступно для користувача як таблиця, але саме воно не містить даних, а витягує їх з таблиць в момент звертання до нього. Якщо дані змінені в базовій таблиці, то користувач отримає актуальні дані при зверненні до подання, що використовує дану таблицю; хешування результатів вибірки з таблиці при роботі уявлень не проводиться. При цьому, механізм хешування запитів (query cache) працює на рівні запитів користувача безвідносно до того, чи звертається користувач до таблиць або уявленням [29].

Уявлення (VIEW) - обєкт бази даних, що є результатом виконання запиту до бази даних, визначеного за допомогою оператора SELECT, у момент звернення до поданням.

Уявлення можуть ґрунтуватися як на таблицях, так і на інших уявленнях, тобто можуть бути вкладеними (до 32 рівнів вкладеності).

Переваги використання уявлень:

1. Дає можливість гнучкого налаштування прав доступу до даних за рахунок того, що права даються не на таблицю, а на виставу. Це дуже зручно у випадку якщо користувачеві потрібно дати права на окремі рядки таблиці або можливість отримання не самих даних, а результату якихось дій над ними.

2. Дозволяє розділити логіку зберігання даних та програмного забезпечення. Можна міняти структуру даних, не зачіпаючи програмний код, потрібно лише створити уявлення, аналогічні таблицями, до яких раніше зверталися додатки. Це дуже зручно коли немає можливості змінити програмний код або до однієї бази даних звертаються кілька додатків з різними вимогами до структури даних.

3. Зручність у використанні за рахунок автоматичного виконання таких дій як доступ до певної частини рядків і / або стовпців, отримання даних з декількох таблиць і їх перетворення за допомогою різних функцій.

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

select

`r`.`first_Name_reader` AS `first_Name_reader`,

`r`.`last_Name_reader` AS `last_Name_reader`,

`r`.`telephone_reader` AS `telephone_reader`,

`r`.`adress_reader` AS `adress_reader`

from

`reader` `r`

where

(`r`.`Biblarian_id` = 1)

Результат виконання даного уявлення представлено на рисунку 3.1.

Рисунок 3.1 - Результат виконання уявлення "r"

Також було розроблено уявлення "b", яке містить назви книжок з серії "Гаррі Поттер".

CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost`

SQL SECURITY DEFINER VIEW `b` AS

select

`b`.`Name_book` AS `Name_book`

from

`book` `b`

where

(`b`.`Series_id` = _utf82);

Результат виконання даного уявлення представлено на рисунку 3.2.

Рисунок 3.2 - Результат виконання уявлення "b"

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