Числення кортежів

Як і при описі реляційної алгебри в главі 7, спочатку введемо для реляційного числення конкретний синтаксис, взявши за зразок (хоча навмисне не зовсім точний) версію обчислення мови Tutorial D, визначеного в додатку А книги [33], а потім перейдемо до обговорення семантики У наступному підрозділі обговорюється синтаксис, а в інших – семантика

Синтаксис

Примітка Багато з наведених тут синтаксичних правил, сформульованих на умовному мовою, чи не будуть зрозумілі до тих пір, поки ви не вивчите семантичний матеріал, який слід далі Однак автор все ж вирішив зібрати всі правила разом для зручності використання в подальшій роботі

Почнемо з повторення синтаксису параметра &ltrela tion exp&gt, наведеного в розділі 7

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

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

&ltintroduced name&gt j    (   &ltrelation exp&gt    )

Іншими словами, синтаксис параметра &ltrelation exp&gt залишається колишнім, однак один з найбільш важливих його подпараметров, &ltrelation op inv&gt,  який є єдиним що розглядаються в даній главі у всіх подробицях, тепер матиме зовсім інше визначення

&ltrange  var  def&gt

::=  RANGEVAR &ltrange   var name&gt

RANGES   OVER  &ltrelation   exp   commalist&gt     

Параметр &ltrange  var name&gt може іспользоваться1 як < tupleexp&gt, але лише в певному контексті, а саме:

■ перед точкою в уточнюючому вираженні &ltrange attribute ref>

■ відразу після квантора в параметрі &ltquantified bool  exp>

■ як операнд в параметрі <Ьоо1 ехр>

■ як параметр &ltproto  tuple&gt або як вираження <ехр> (Або операнд з висловлю ням <ехр>) в параметрі &ltproto  tuple&gt.

&ltrange attribute ref&gt

::=   &ltrange var  name&gt     &ltattribute name&gt

AS   &ltttribute name&gt  ]

Параметр &ltrange attribute ref&gt може використовуватися як параметр <ехр>, але тільки в певних контекстах, а саме:

■ як операнд параметра

як параметр &ltproto  tuple&gt або як вираз <Ехр> (Або операнд з виразом <ехр>) в параметрі &ltproto  tuple&gt.

&ltbool   exp&gt

::= .. всі звичайні варіанти,

поряд з | &ltquantified bool exp&gt

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

1 Ми не наводимо тут докладного опису параметра < tuple exp&gt, вважаючи, що загальне уявлення про нього можна отримати, вивчаючи приклади Але з причин, які в даному випадку не мають великого значення, тут використовується трохи інший синтаксис в порівнянні з попередніми главами

■ Параметр присутній безпосередньо у вираженні &ltrelation op inv&gt (Тобто параметр слід відразу за ключовим словом WHERE)

■ Посилання (обовязково вільна) саме на ту ж саму змінну області зна чений безпосередньо присутня в значенні виразу &ltproto   tuple&gt, безпосередньо міститься в тому ж вираженні &ltrelation    op   inv&gt (Тобто параметр &ltproto   tuple&gt знаходиться безпосередньо перед ключовим сло вом WHERE)

Примітка по термінології У контексті реляційного числення (у версії обчислення доменів або обчислення кортежів) логічні вирази <'оо1 Ехр> часто називають правильно побудованими формулами (Well-Formed Formula – WFF, що вимовляється як вефф) Далі ми також будемо часто користуватися цією термінологією

&ltquantified bool   exp&gt

::= &ltquantifier&gt  &ltrange var name&gt  (  &ltbool  exp&gt  )

&ltquantifier&gt

::= EXISTS | FORALL

&ltrelation  op inv&gt

::=   &ltproto  tuple&gt  [  WHERE  &ltbool  exp&gt  ]   

У реляційній алгебрі, розглянутої в главі 7, параметр &ltrelation  op  inv&gt представляв собою одну з форм параметра &ltrelation exp&gt, однак тут, як вже було зазначено, він визначається інакше

&ltproto   tuple&gt

::  ..   визначення див в тексті даної глави

Всі номери змінні області значень, поміщені безпосередньо в значення параметра &ltproto tuple&gt, повинні бути вільними в межах даного параметра

&ltproto   tuple&gt.

Примітка Вираз &ltproto tuple&gt є скороченням від prototype tuple

{Кортеж-прототип) Цей термін – вдалий, але не стандартний

Змінні області значень

Наведемо кілька прикладів визначення змінних області значень (які виражені, як звичайно, в контексті бази даних постачальників і деталей)

RANGEVAR SX RANGES OVER S

; RANGEVAR SY RANGES OVER S RANGEVAR SPX RANGES OVER SP RANGEVAR SPY RANGES OVER SP RANGEVAR PX RANGES OVER P

RANGEVAR SU RANGES OVER

( SX WHERE SXCITY = London ) ,

( SX WHERE EXISTS SPX ( SPXS# = SXS# AND SPXP# = P# (P1) ) )

В останньому прикладі змінна області значень SU приймає значення з обєднання безлічі кортежів постачальників, що знаходяться в Лондоні, і безлічі кортежів постачальників деталі з номером Р1 Зверніть увагу, що у визначенні змінної області значень SU використовуються змінні області значень sx і SPX Слід також зазначити, що в подібних визначеннях змінних, заснованих на обєднанні відносин, що обєднуються відносини, безумовно, повинні бути сумісними за типом

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

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

представляють саме кортежі

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

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

*

*