ПЗ №1 "Обчислення кортежів"
Практичне заняття №1. Обчислення кортежів.
Мета: придбання практичних навичок побудови кортежів.
Теоретичні відомості.
Будь-який вираз обчислення кортежів може бути представлений у такому вигляді:
{ t / f(t) }
де t – єдина вільна змінна – кортеж, яка позначає кортеж фіксованої довжини; f(t) – деякий предикат над змінною t.
Формули в реляційному обчисленні кортежів будують з атомів і сукупності операторів (арифметичних і логічних). Вираз в реляційному обчисленні кортежів будують над множиною відношень. Типи можливих атомів подані в табл. 3.5.
Для побудови формули (запиту) використовуються логічні зв'язки (∧,∨,¬), а також квантори загальності ∀x і квантори існування ∃x. Квантори зв'язують певні змінні. Зв'язана змінна відповідає локальній змінній у мові програмування, а вільна змінна (змінна, яка не зв'язана кванторами) відповідає глобальній змінній.
Таблиця 3.5
Правила побудови атомів формул
Номер типу атому |
Правила побудови атомів |
1 |
R(t), де R - ім'я відношення; цей атом означає, що t є кортеж у відношенні R |
2 |
(s[i]θu[j]), де s і u - змінні кортежі; θ - арифметичний оператор відношення; i і j - номери або імена компонентів (стовпчиків) у відповідних кортежах; s[i] - позначення i-го компонента в кортежі-змінній s; u[j] - позначення j-го компонента в кортежі- змінній u |
3 |
(s[i]θa) або (aθs[i]), де a - константа |
Формули будуються за певними правилами. Правила побудови формул наведені у наступній таблиці.
Таблиця 3.6
Правила побудови формул
Номер правила |
Правила побудови формул |
1 |
Кожен атом є формула |
2 |
Якщо f1 і f2 - формули, то вирази: – f1 ∧ f2; – f1 ∨ f2; – ¬ f1 ; також є формулами |
3 |
Якщо f - формула, то вирази: – ∀t f(t); – ∃t f(t); також є формулами |
4 |
Якщо f - формула, то (f) – також є формулою |
5 |
Ніщо інше не є формулою |
Приклад.
- Вираз {t/R1-R2} означає, що в якості формули виступає запис R1-R2 і що тут визначається множина кортежів, яка одночасно належить відношенням R1 і R2. Цей вираз є еквівалентним до виразу реляційної алгебри R1 перетин R2.
- Визначити всіх студентів спеціальності ІУСТ.
{t(прізвище)/ ∃tСтудент(t) ∧ t(спеціальність)="ІУСТ"}
3. Визначити всіх студентів, для яких у 7 семестрі викладач Гавриш проводить заняття.
{t(прізвище) /∃t Студент(t) ∧ ∃s Дисципліна(s) ∧
s(семестр)=7∧ s(викладач)="Гавриш"∧ t(курс, спеціальність) =
s(курс, спеціальність) }