ВИБІРКА ДАНИХ ІЗ ВИСТАВ

У попередніх розділах коротко описувалася процедура перетворення операцій вибірки з уявлень в еквівалентні операції вибірки з однієї або декількох базових змінних відносини У даному розділі наводиться більш формальний опис цього перетворення

Насамперед, слід зазначити (як вказано наприкінці розділу 64 глави 6), що будь-який заданий реляционное вираз можна розглядати як функцію на безлічі відносин Іншими словами, поточні значення різних змінних відносини, що згадуються в вираженні, являють собою фактичні параметри даного виклику цієї функції, а результатом її обчислення є інша змінна відносини Нехай D – це база даних (яка буде представлена ​​в даному випадку як безліч змінних відносини), а V-це подання, визначене на множині D, тобто уявлення, визначення якого є функцією х на безлічі D, як показано

нижче

V   =   X   (   D   )

А тепер припустимо, що RO – операція вибірки з уявлення V Тоді очевидно, що RO також є функцією на множині відносин, а результат вибірки буде мати наступний вигляд

RO   (   V   )    =   RO   (   X   (   D   )    )

Таким чином, результат операції вибірки з визначення збігається з результатом обчислення функції X на множині D, тобто з результатом матеріалізації копії відносини, що є поточним значенням уявлення V, з подальшим застосуванням операції RO до цієї матеріалізованої копії Але на практиці звичайно ефективніше замість цієї операції використовувати описану вище процедуру підстановки (див розділ 101)

Ця процедура рівносильна формуванню функції з (..), що є композицією RO (х (..)) функцій х і RO (саме в цьому порядку), і обчисленню результату застосування функції з безпосередньо до безлічі D Але як би то не було, все-таки зручніше, принаймні, концептуально, дати визначення семантики операції вибірки з уявлень в термінах матеріалізації, а не підстановки Іншими словами, підстановка допустима лише остільки, оскільки вона гарантує отримання того ж результату, який міг бути отриманий при використанні матеріалізації (і це, безумовно, гарантується)

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

причин

■ По-перше, вони створюють основу для аналогічного (але більш глибокого) обгово ня операцій оновлення в наступному розділі

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

■ По-третє, хоча, в принципі, процедура заміни представлення його визначенням цілком зрозуміла і теоретично повністю обгрунтована, вельми засмучує той факт, що в деяких програмних продуктах SQL (до часу написання даної книги) цей процес практично НЕ діє успішно Інакше кажучи, в подібних продуктах вибірка даних з уявлень може абсолютно несподівано за вершать невдачею Процедура підстановки визначення не реалізована в верси ях стандарту SQL, що передують версії SQL: 1992 А причиною, по якій в додатках і попередніх версіях стандарту SQL операції вибірки з пред ставлений не діють належним чином, є неповна підтримка ними ре ляційними властивості замкненості (див упр 1015, частина а)

Джерело: Дейт К Дж, Введення в системи баз даних, 8-е видання: Пер з англ – М: Видавничий дім «Вільямс», 2005 – 1328 с: Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*