У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент


відношення. Якщо ж ім'я змінної використано відразу після квантора при побудові WFF вигляду EXISTS var (form) або FORALL var (form), то в цієї WFF і у всіх WFF, побудованих з її участю, var - це пов'язана змінна. Це означає, що така змінна не видна за межами мінімальної WFF, що зв'язала цю змінну. При обчисленні значення такий WFF використовується не одне значення пов'язаною змінною, а вся її область визначення.

Нехай СПІВР1 і СПІВР2 - дві кортежні змінні, певні на відношенні СПІВРОБІТНИКИ. Тоді, WFF EXISTS СПІВР2 (СПІВР1.СПІВР_ЗАРП > СПІВР2.СПІВР_ЗАРП) для поточного кортежу змінної СПІВР1 приймає значення true в тому і тільки в тому випадку, якщо у всьому відношенні СПІВРОБІТНИКИ знайдеться кортеж (пов'язаний із змінної СПІВР2) такий, що значення його атрибута СПІВР_ЗАРП задовольняє внутрішній умові порівняння. WFF FORALL СПІВР2 (СПІВР1.СПІВР_ЗАРП > СПІВР2.СПІВР_ЗАРП) для поточного кортежу змінної СПІВР1 приймає значення true в тому і тільки в тому випадку, якщо для всіх кортежів відношення СПІВРОБІТНИКИ (пов'язаних із змінної СПІВР2) значення атрибута СПІВР_ЗАРП задовольняють умові порівняння.

Насправді, правильніше говорити не про вільні і пов'язані змінних, а про вільні і зв'язаних входженнях змінних. Легко бачити, що якщо змінна var є пов'язаною в WFF form, то у всіх WFF, що включають дану, може використовуватися ім'я змінної var, яка може бути вільною або пов'язаною, але в будь-якому випадку не має ніякого відношення до входження змінної var в WFF form. Ось приклад:

EXISTS СПІВР2 (СПІВР1.СПІВР_ВІД_НОМ = СПІВР2.СПІВР_ВІД_НОМ) AND

FORALL СПІВР2 (СПІВР1.СПІВР_ЗАРП > СПІВР2.СПІВР_ЗАРП)

Тут ми маємо два зв’язаних входження змінної СПІВР2 з абсолютно різним значенням.

5.2.2. Цільові списки і вирази реляційного числення

Отже, WFF забезпечують засоби формулювання умови вибірки з відносин БД. Щоб можна було використати числення для реальної роботи з БД, потрібний ще один компонент, який визначає набір і імена стовпців результуючого відношення. Цей компонент називається цільовим списком (target_list).

Цільовий список будується з цільових елементів, кожний з яких може мати наступний вигляд:

var.attr, де var - ім'я вільної змінної відповідної WFF, а attr - ім'я атрибута відношення, на якому визначена змінна var; var, що еквівалентно наявності підсписку var.attr1, var.attr2,. .., var.attrn, де attr1, attr2,. .., attrn включає імена всіх атрибутів визначального відношення; new_name = var.attr; new_name - нове ім'я відповідного атрибута результуючого відношення.

Останній варіант потрібно в тих випадках, коли в WFF використовуються декілька вільних змінних з однаковою областю визначення.

Вираженням реляційного числення кортежів називається конструкція вигляду target_list WHERE wff. Значенням вираження є відношення, тіло якого визначається WFF, а набір атрибутів і їх імена - цільовим списком.

5.2.3. Реляційне числення доменів

У численні доменів областю визначення змінних є не відносини, а домени. Стосовно до бази даних СПІВРОБІТНИКИ-ВІДДІЛИ можна говорити, наприклад, про доменні змінних ІМ'Я (значення - допустимі імена) або НОСОТР (значення - допустимі номери співробітників).

Основною формальною відмінністю числення доменів від числення кортежів є наявність додаткового набору предикатів, що дозволяють виражати так звані умови членства. Якщо R - це n-арне відносини з атрибутами a1, a2,..., an, то умова членства має вигляд

R (ai1:vi1, ai2:vi2,..., aim:vim) (m <= n),

де vij - це або константа, що літерально задається, або ім'я кортежної змінної. Умова членства приймає значення true в тому і тільки в тому випадку, якщо у відношенні R існує кортеж, що містить вказані значення вказаних атрибутів. Якщо vij - константа, то на атрибут aij задається жорстка умова, що не залежить від поточних значень доменних змінних; якщо ж vij - ім'я доменної змінної, то умова членства може приймати різні значення при різних значеннях цієї змінної.

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

Для прикладу сформулюємо з використанням числення доменів запит "Видати номери і імена співробітників, що не одержують мінімальну заробітну плату" (будемо вважати для простоти, що ми визначили доменні змінні, імена яких співпадають з іменами атрибутів відношення СПІВРОБІТНИКИ, а у випадку, коли потрібно декілька доменних змінних, визначених на одному домені, ми будемо додавати в кінці імені цифри):

СПІВР_НОМ, СПІВР_ІМ’Я WHERE EXISTS СПІВР_ЗАРП1

(СПІВРОБІТНИКИ (СПІВР_ЗАРП1) AND

СПІВРОБІТНИКИ (СПІВР_НОМ, СПІВР_ІМ’Я, СПІВР_ЗАРП) AND

СПІВР_ЗАРП > СПІВР_ЗАРП1)

Реляційне числення доменів є основою більшості мов запитів, заснованих на використанні форм. Зокрема, на цьому численні базувалася відома мова Query-by-Example, яка була першою (і найбільш цікавим) мовою в сімействі мов, заснованих на табличних формах.


Сторінки: 1 2 3 4 5