ОРИГІНАЛЬНА АЛГЕБРА СИНТАКСИС

У даному розділі наведено конкретний синтаксис виразів реляційної алгебри, в яких використовуються оригінальні вісім операцій поряд з операцією перейменування RENAME Цей синтаксис заснований на застосуванні мови Tutorial D Він показаний тут в основному для використання в подальшому викладі Включено також кілька приміток про семантику

Примітка У більшості робіт по базах даних для позначення реляційних операторів застосовуються математичні символи або грецькі літери: σ позначає скорочення (вибірку), я – проекцію, п-перетин, х (краватка-метелик) – зєднання і тд Як показує наведений тут матеріал, автор вважає за краще використовувати ключові слова на зразок JOIN і WHERE Ключові слова вимагають більше місця, але автор вважає, що поряд з цим вони полегшують сприйняття матеріалу

::=  RELATION   {  &lttuple  exp commalist&gt  } |  &ltrelvar name&gt |

&ltrelation  op  inv&gt j  &ltwith exp&gt

|   &ltintroduced name&gt |   (

&ltrelation exp&gt  )

Тут &ltrelation exp&gt — це вираз, який позначає відношення (тобто значення відношення) Перший формат-це виклик селектора відносини (Див розділ 6) в цьому розділі синтаксис вираження кортежу < tuple exp&gt докладно не розглядається, оскільки для отримання загального уявлення про нього досить ознайомитися з декількома прикладами Формати із застосуванням імені відносини &ltrelvar name&gt і

Глава 7 Реляційна алгебра 247 вираження ставлення {&ltrelation  exp&gt) говорять самі за себе решта формати описані нижче

&ltrelation  op inv&gt

::=  &ltproject&gt  |  &ltnonproject&gt

Виклик реляційного оператора &ltrelation op inv&gt являє собою або оператор проекції, &ltproject&gt, або оператор, відмінний від проекції, &ltnonproject&gt.

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

&ltproject&gt

::= &ltrelation exp&gt

{ [ ALL BUT ] &ltattribute name comnalist&gt }

Тут вираз &ltrelation exp&gt не повинно належати до типу &ltnonproject&gt.

&ltnonproject&gt

::= &ltrename&gt  |  &ltunion&gt  \  &ltintersect&gt  \  &ltminus&gt  \

&lttimes&gt

|  &ltwhere&gt  |  &ltjoin&gt  \

&ltdivide&gt &ltrename&gt

: :   &ltrelation  exp&gt RENAME  (  &ltrenaming cowmalist&gt  )

Тут&ltrelation  exp&gt  також не повинно належати до типу&ltnonproject&gt. Окремі операції перейменування &ltrenaming&gt виконуються в тій послідовності, в якій вони записані (для ознайомлення з синтаксисом перейменування

&ltrenaming&gt перегляньте приклади, наведені в попередньому розділі) Якщо розділений комами список commalist містить тільки один оператор&ltrenaming&gt, круглі дужки можуть бути опущені

&ltunion &gt

::=   UNION &ltrelation  exp&gt

Тут вираження&ltrelation  exp&gt  також не повинні належати до типу

&ltnonproject&gt, за винятком того випадку, коли одне з них або обидва відносяться до іншого висловом <Ип ± оп>

&ltintersect&gt

::=   &ltrelation  exp&gt  INTERSECT  &ltrelation  exp&gt

Тут вираження&ltrelation  exp&gt  також не повинні належати до типу

&ltnonproject&gt, за винятком того випадку, коли одне з них або обидва відносяться до іншого висловом &ltintersect&gt.

&ltminus&gt

::= &ltrelation exp&gt MINUS &ltrelation exp&gt

Тут вираження&ltrelation    exp&gt   також не повинні належати до типу

&ltnonproject&gt.

&lttimes&gt

::= &ltrelation exp&gt TIMES &ltrelation exp&gt

Тут вираження&ltrelation   exp&gt   також не повинні належати до типу

&ltnonproject&gt, за винятком того випадку, коли одне з них або обидва відносяться до іншого висловом < times&gt.

&ltwhere&gt

::= &ltrelation exp&gt WHERE &ltbool exp&gt

Тут вираз &ltrelation exp&gt не повинно належати до типу &ltnonproject&gt. Вираз <'оо1 Ехр> може включати посилання на атрибути відносини, позначеного як &ltrelation exp&gt, з очевидною семантикою

&ltjoin&gt

::&ltrelation exp&gt JOIN &ltrelation exp&gt

Вирази <relation exp&gt не повинні належати до типу &ltnonproject&gt, якщо не рахувати того, що одне або обидва з них можуть представляти собою ще один вираз типу

&ltdivide&gt

::= &ltrelation exp&gt DIVIDEBY &ltrelation exp&gt PER &ltper&gt

Вираз &ltrelation exp&gt не повинно належати до типу<Попрrоjеct>

<Реr>

: : =    &ltrelation exp&gt  |    (   &ltrelation  exp&gt,  &ltrelation exp&gt  )

Вираз &ltrelation exp&gt не повинно належати до типу

&ltwith exp&gt

::= WITH &ltname intro commalist&gt : &ltexp&gt

Вирази з ключовим словом WITH, &ltwi th exp&gt, які в основному цікавлять нас в цій книзі, є саме реляційними виразами і тому вони обговорюються в цій главі Але підтримуються також скалярні вирази &ltwi th exp&gt і вирази з кортежами фактично будь-яка конкретна конструкція &ltwi th exp&gt являє собою &ltrelation exp&gt, &lttuple exp&gt  або &ltscalar exp&gt відповідно до того, чи відноситься, в свою чергу, вираз <Ехр>, стоїть після двокрапки, до типу

&ltrelation exp&gt, &lt tuple exp&gt або &ltscalar exp&gt. У всіх випадках окремі оператори введення імен &ltname intro&gt виконуються в тій послідовності, в якій вони записані, і семантика виразу &ltwith exp&gt визначається як збігається з тією версією <ехр>, де кожне входження кожного введеного імені замінюється посиланням на змінну, значення якої є результатом обчислення відповідного вираження

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

&ltname intrc»

::= <Ехр> AS &ltintroduced name&gt

Тут введене імя <introduced name&gt може використовуватися в містить його вираженні &ltwi th exp&gt скрізь, де допускається застосування виразу <ехр> (У разі необхідності укладеного в круглі дужки)

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

*

*