Численні доменів

Як було зазначено в розділі 81, обчислення доменів відрізняється від обчислення кортежів тим, що в ньому змінні області значень визначені на доменах (Типах), а не на відносинах З точки зору синтаксису найбільш очевидна відмінність між обчисленням доменів і обчисленням кортежів полягає в тому, що перше підтримує додаткову форму параметра , який ми будемо називати умовою приналежності (Membership condition) У загальному вигляді умова приналежності можна записати наступним чином

R   {   &ltpair commalist&gt }

Тут R – імя змінної відносини, а кожен параметр &ltpair&gt має вигляд А х, де А – імя атрибута змінної відношення R, а х – імя змінної області значень або виклик селектора (найчастіше літерал) В цілому, це умова приймає значення TRUE тоді і тільки тоді, коли в поточному значенні змінної відносини R існує такий кортеж, що для кожного заданого виразу &ltpair&gt А х порівняння А = х має значення TRUE ДЛЯ даного кортежу Наприклад, розглянемо результат обчислення наступного виразу

SP {S # S # (S 1), Р # Р # (P 1)}

Це вираз є умовою приналежності, яке приймає значення TRUE тоді і тільки тоді, коли виявляється, що в даний час існує кортеж з даними про постачання, в якому значення s # одно si, а значення Р # одно Р1 Аналогічним чином, умова приналежності

SP {S # SX, Р # РХ}

приймає значення TRUE тоді і тільки тоді, коли виявляється, що в даний час існує кортеж з даними про постачання, в якому значення атрибута S # одно поточному значенню змінної області значень SX (яким би воно не було), а значення атрибута р # одно поточному значенню змінної домену РХ (знову ж, яким би воно не було)

До кінця даного розділу мається на увазі, що існують змінні області значень, показані в табл 81

Таблиця 81 Змінні області значень, що застосовуються в прикладах даного

Нижче наведено кілька прикладів виразів обчислення доменів

розділу

SX

SX WHERE S { S# SX }

SX WHERE S { S# SX, CITY London }

{ SX, CITYX } WHERE S { S# SX, CITY CITYX } AND  SP { S# SX, P# P#(P2) }

{ SX, PX } WHERE S { S# SX, CITY CITYX } AND P  {  P# PX, CITY CITYY } AND   CITYX

✓&nbsp CITYY

Неформально перший вираз позначає безліч всіх номерів постачальників, друге – безліч всіх номерів постачальників у змінній відносини S, третє – підмножина номерів постачальників з Лондона Наступне вираз – це представлений в термінах обчислення доменів запит Визначити номери постачальників і назви міст, в яких знаходяться постачальники деталі з номером Р2 (Згадайте, що для формулювання цього запиту в термінах обчислення кортежів був потрібний квантор існування) І останній вираз – це представлений в термінах обчислення доменів запит Шукати всі такі пари номерів постачальників і номерів деталей, що постачальники знаходяться в тому ж місті, де зберігається деталь .

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

871Определіть номера постачальників з Парижа зі статусом більше 20 (спрощена версія прикладу 831)

SX WHERE EXISTS STATUSX

{ STATUSX &gt 20 AND

S { S# SX, STATUS STATUSX, CITY Paris } )

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

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

{ SX AS SA, SY AS SB } WHERE EXISTS CITYZ

( S { S# SX, CITY CITYZ } AND S { S# SY, CITY CITYZ

} AND SX &lt SY )

873Определіть імена постачальників принаймні однієї деталі червоного кольору (див

приклад 834)

NAMEX WHERE EXISTS SX EXISTS PX ( S { S# SX, SNAME

NAMEX }   AND SP { S# SX, P# PX }

AND P { P# PX, COLOR COLOR(Red) } 1

874 Визначити імена постачальників, які постачають хоча б один тип деталей, що поставляються постачальником з номером S2 (див приклад 835)

NAMEX WHERE EXISTS    SX EXISTS PX ( S { S#SX, SNAME NAMEX }

AND SP    { S# SX, P# PX } AND SP { S# S#(S2), P# PX } )

875 Визначити імена постачальників, які постачають деталі всіх типів

(Див приклад 836)

NAMEX WHERE EXISTS SX ( S { S# SX, SNAME NAMEX } AND FORALL PX ( IF P { P# PX }

THEN SP { S# SX, P# PX

} END IF )

876 Визначити імена постачальників, які не поставляють деталь з номером Р2 (див приклад 837)

NAMEX WHERE EXISTS SX ( S { S# SX, SNAME NAMEX } AND NOT SP { S# SX, P# P#(P2) } )

877 Визначити номери постачальників, які постачають, щонайменше,

деталі всіх типів, що поставляються постачальником з номером S2 (див приклад 838)

SX WHERE FORALL PX ( IF SP { S# S#(S2), P# PX } THEN SP { S# SX, P# PX } END IF )

878 Отримати номери деталей, які або важать більше 16 фунтів, або поставляються постачальником з номером S2, або відповідають і тому, й іншому умові (див приклад 839)

PX WHERE EXISTS WEIGHTX

(Р {Р # PX, WEIGHT WEIGHTX} AND WEIGHTX> WEIGHT (160)

) OR SP { S# S#(S2), P# PX }

Обчислення доменів, як і літочислення кортежів, формально еквівалентно реляційної алгебрі (тобто воно є реляційно повним) Доказ цього твердження можна знайти, наприклад, у статті Ульмана (Ullman) [813]

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

*

*