ДОДАТКОВІ ОПЕРАЦІЇ

З тих пір, як Кодд визначив свої вісім оригінальних операцій, численні автори запропонували нові алгебраїчні операції У даному розділі досить докладно розглядаються декілька таких операцій – SEMIJOIN, SEMIMINUS, EXTEND, SUMMARIZE і TCLOSE У термінах застосовуваного в даній книзі синтаксису мови Tutorial D ці операції охоплюють пять нових форм вираження &ltnonproject&gt, які визначені, як показано нижче

&ltsemijoin&gt                                         ::= &ltrelation exp&gt

SEMIJOIN &ltrelation exp&gt

&ltsemiminus&gt

::= &ltrelation exp&gt SEMIMINUS &ltrelation exp&gt

&ltextend&gt                                        ::= EXTEND &ltrelation exp&gt ADD ( &ltextend add commalist&gt )

Якщо розділений комами список commalist містить тільки один вираз

&ltextend add&gt, круглі дужки можна опустити

&ltextend add&gt

<Ехр> AS&ltattribute

name&gt

&ltsummarize&gt

::=     SUMMARIZE  &ltrelation  exp&gt   PER

&ltrelation exp&gt ADD  (    &ltsummarize add commalist&gt   )

Якщо розділений комами список commalist містить тільки один вираз

&ltsummarize add&gt, круглі дужки можна опустити

&ltsummarize add&gt

::= &ltsummary type&gt [ ( &ltscalar exp&gt

) ] AS &ltattribute

name&gt

&lt summary type&gt

::= COUNT | SUM | AVG | MAX | MIN | ALL | ANY | COUNTD | SUMD | AVGD | ..

&lttclose&gt

: : =   TCLOSE &ltrelation  exp&gt

Різні реляційні вирази &ltrelation exp>, згадані в наведених вище правилах виведення у формі Бекуса-Наура, не повинні ставитися до типу

&ltnonproject&gt.

6 До речі, слід зазначити, що термін універсальне відношення зазвичай використовується в літературі в багатьох різних сенсах (див, наприклад, [1320])

Полусоедіненіе

Припустимо, що а, b, X і Y відповідають вимогам, які вказані в підрозділі Зєднання розділу 74 У такому випадку операція полусоедіненія відносин а і b (у зазначеному порядку), a SEMIJOIN b, визначена як еквівалентна наступної операції

(  a JOIN b  )   {  X,  Y  }

Іншими словами, полусоедіненіе а і b являє собою зєднання а і b, до якого застосована операція проекції по атрибутах а Тому, неформально висловлюючись, тіло результату містить ті кортежі відносини а, які мають аналоги відносно b

Приклад Отримати атрибути s #, SNAME, STATUS І CITY постачальників, які постачають деталь Р2

S SEMIJOIN (SP WHERE P # = Р # (Р2))

До речі, слід зазначити, що багато практично застосовувані запити, які засновані на використанні операції зєднання, фактично вимагають застосування полусоедіненія це означає, що на практиці було б бажано забезпечити безпосередню підтримку оператора SEMIJOIN Аналогічне зауваження стосується і до оператору SEMIMINUS (див наступний підрозділ)

Полуразность

Операція полуразность між а і b (у зазначеному порядку), a SEMIMINUS b, визначена як еквівалентна наступної операції

a MINUS   (   a  SEMIJOIN b   )

Тому, неформально висловлюючись, тілом результату є ті кортежі відношення а,

які не мають аналогів у відношенні b

Приклад Отримати атрибути S #, SNAME, STATUS і CITY постачальників, які не поставляють деталь Р2

S SEMIMINUS (SP WHERE Р # = Р # (Р2))

Розширення

Читач міг помітити, що описана досі алгебра не має обчислювальних можливостей в тому сенсі, який під цим зазвичай мається на увазі Але на практиці, безумовно, бажано мати такі можливості Наприклад, може знадобитися, щоб була можливість виконати вибірку значення арифметичного вираження, такого як WEIGHT * 454, або звернутися до подібного значенням в конструкції WHERE (тут подразумевается7, без обліку відомостей про одиницях виміру, наведених у розділі 54, що вага деталі заданий у фунтах, а 1 фунт = 454 грама) Призначення операції розширення EXTEND полягає в підтримці таких можливостей Якщо бути точніше, то операція EXTEND приймає одне ставлення і повертає інше, ідентичне заданому, якщо не

Тут також передбачається, що * являє собою допустиму операцію між вагами і цілими числами

Контрольне питання Який тип результату подібної операції

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

EXTEND P ADD ( WEIGHT * 454 ) AS GMWT

Даний вираз (слід підкреслити, що це – вираз, а не команда або оператор і тому може вкладатися в інші вирази) призводить до отримання відносини з таким же заголовком, як Р, що не Крім того, що воно містить додатковий атрибут з імям GMWT Кожен кортеж цього відношення збігається з відповідним кортежем відносини Р, за винятком того, що він додатково містить значення ваги в грамах GMWT, обчисленого за допомогою заданого арифметичного виразу WEIGHT * 454 (рис 79)

Рис 79 Приклад застосування операції EXTEND

Важливе зауваження Слід враховувати, що цей вираз EXTEND не змінило в базі даних змінну відносини деталей це – просто вираз і, як будь-яке інше вираження, воно просто представляє деяке значення Як виявилося, це значення в даному конкретному випадку вельми нагадує поточне значення змінної відносини деталей (Іншими словами, операція EXTEND не може розглядатися як аналог операції ALTER TABLE .. ADD COLUMN мови SQL в реляційної алгебри)

Тепер атрибут GMWT може використовуватися в проекціях, скороченнях і тд, наприклад,

як показано нижче

( ( EXTEND P ADD ( WEIGHT * 454 ) AS GMWT )

WHERE GMWT &gt WEIGHT ( 100000 ) ) { ALL BUT GMWT }

Примітка Безумовно, в більш дружньому мові може бути дозволено включати такі обчислювальні вирази безпосередньо в конструкцію WHERE приблизно таким чином

Р WHERE (WEIGHT * 454)> WEIGHT (100000)

(Див опис операції скорочення, наведене в розділі 74) Але даний засіб фактично являє собою просто зручне синтаксичне додаток У такому випадку, взагалі кажучи, значенням наступній операції розширення

EXTEND a ADD exp AS Z

є ставлення, яке визначено, як описано нижче

■ Тема результату складається з заголовка а, доповненого атрибутом Z

■ Тіло результату складається з усіх кортежів t, таких що t являє собою кортеж відносини а, доповнений значенням атрибута z, яке отримано шляхом обчислення виразу ехр на даному кортежі відносини а

Ставлення а не повинне мати атрибута з імям Z, а вираз ехр не повинно посилатися на z Слід зазначити, що результат має кардинальність, рівну кардинальності відносини а, і ступінь, рівну ступеня відносини а плюс один У цьому результаті типом атрибута z є тип вираження ехр

Нижче наведені додаткові приклади

1&nbsp EXTEND S ADD Supplier AS TAG

Це вираз фактично ставить відмітку на кожному кортежі поточного значення змінної відносини S у вигляді символьного рядка Supplier (Літерал, або, взагалі кажучи, виклик селектора, – це, безумовно, допустиме обчислювальний вираз)

2 EXTEND (Р JOIN SP) ADD (WEIGHT * QTY) AS SHIPWT

У даному прикладі ілюструється застосування операції EXTEND До результату реляційного вираження, яке є більш складним, ніж просто згадування імені змінної відносини

3&nbsp ( EXTEND S ADD CITY AS SCITY ) { ALL BUT CITY }

Імя атрибута, таке як CITY, також є допустимим обчислювальним виразом Слід зазначити, що даний конкретний приклад еквівалентний наступному

S  RENAME  CITY AS   SCITY

Іншими словами, операція RENAME не є примітивною Як виявилося, вона може бути визначена в термінах операції EXTEND (і операції проекції) Безумовно, ми не збираємося відкидати таку корисну операцію, як RENAME, просто цікаво відзначити, що фактично вона являє собою всього лише скорочену форму

4&nbsp EXTEND P ADD {WEIGHT * 454 AS GMWT, WEIGHT * 16 AS OZWT)

У даному прикладі ілюструється застосування множинної операції

EXTEND&quot.

5&nbsp EXTEND  S ADD COUNT   (    (   SP  RENAME   Si  AS  X   )   WHERE X  = S#   )   AS NP

Результат цього виразу показаний на рис 710

Пояснення до цього виразу наведено нижче

а) Для зазначеного постачальника вираз ((SP RENAME s # AS X) WHERE x = s #) дозволяє визначити безліч поставок, виконаних цим по чальником

б) Потім до цього безлічі поставок застосовується агрегує операція COUNT і повертає відповідні дані про кардинальності безлічі (скалярний значення)

Таким чином, атрибут NP в отриманих результатах позначає кількість деталей, що поставляються постачальником, який вказаний за допомогою відповідного значення S # Тут заслуговує на особливу увагу значення NP для постачальника S5 безліч поставок для постачальника S5 є порожнім і тому виклик оператора COUNT повертає нуль

Рис 710 Ще один приклад застосування операції EXTEND

У цьому звязку коротко розглянемо агрегує операції Призначення кожної такої операції, взагалі кажучи, полягає в отриманні єдиного скалярного значення з усіх значень, присутніх в деякому зазначеному атрибуті деякого зазначеного відношення (зазвичай похідного відносини) Типовими прикладами є операції COUNT, SUM, AVG, MAX, MIN, ALL і ANY У мові Tutorial D виклик агрегує оператора&ltagg  op  inv&gt  являє собою особливий вид скалярного вираження

&ltscalar exp>, оскільки він повертає скалярний значення Цей виклик приймає таку загальну форму

&ltagg op name&gt   (   &ltrelation exp&gt   [,   &ltattribute name&gt  ]   )

Якщо в якості імені агрегує операції <Адд ор паті> зазначено COUNT, то параметр з позначенням імені атрибута &ltattribute name&gt не має сенсу і повинен бути виключений в іншому випадку він може бути виключений тоді і тільки тоді, коли реляционное вираз &ltrelation exp&gt позначає відношення ступеня один, і в цьому випадку за замовчуванням мається на увазі використання єдиного атрибута результату цього виразу &ltrelation exp&gt. Нижче наведено кілька прикладів

SUM    (    SP WHERE    S#    =    S#     ( S 1 ) ,     QTY SUM (     (    SP  WHERE    S#    =    S#     ( S 1 )                                        )     {   QTY    }

)|

Зверніть увагу на відмінність між цими двома виразами: перше з них дозволяє отримати суму кількостей всіх поставок постачальника S1, а друге – суму кількостей всіх різних поставок постачальника S1

Якщо виявилося, що фактичний параметр агрегує оператора являє собою порожній безліч, то операція COUNT (як уже було сказано) повертає нуль і таке ж значення повертає операція SUM операції МАХ і MIN повертають, відповідно, найменше та найбільше значення застосовного типу операції ALL і ANY, відповідно, повертають TRUE і FALSE, а операція AVG активізує виняток

272 Частина II Реляційна модель

Джерело: Дейт К Дж, Введення в системи баз даних, 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>

*

*