Лекція Тема: Реляційна алгебра. План 1. Реляційна алгебра. Основні операції реляційної алгебри 2. Приклади застосування реляційної алгебри 3. Властивості операцій реляційної алгебри. Еквівалентні перетворення 4. Оптимізація обчислення виразів реляційної алгебри 5. Реляційне числення Кодда. 1. Реляційна алгебра. Основні операції реляційної алгебри. До складу реляційної моделі даних, крім структури даних, мають входити операції маніпулювання даними. З усіх таких операцій складається мова запитів. Найбільш відомими мовами запитів у реляційній моделі, є реляційна алгебра та реляційне числення. Ці теоретичні мови запитів мають математичну основу і запропоновані Э.Коддом. У класичному розумінні алгебра визначається як пара, що складається з основної множини і множини операцій (сигнатури), при цьому аргументи й результат кожної операції належать основній множині. Реляційна алгебра є алгеброю в строгому класичному розумінні її визначення. Елементами основної множини є реляційні відношення. У зв’язку з цим операції алгебри можуть вкладатися одна в одну, тобто аргументом певної операції може бути результат виконання іншої операції. Це дає можливість записувати запити довільного рівня складності у вигляді виразів, що містять вкладені одна в одну операції. Операції реляційної алгебри Реляційні відношення R1(A1,…An) і R2(B1,…Bk) називаються сумісними, якщо: 1) у них однакова кількість атрибутів, тобто k=n; 2) можна встановити взаємно однозначну відповідність між доменами атрибутів першої та другої реляцій, тобто існує таке бієктивне відображення S:{1,…,k}{1,…,k} що N(Ai)=N(BS(i)),i=1,…k, тобто домени зіставлених атрибутів однакові. Для зручності вважатимемо, що зіставлені атрибути сумісних відношень повинні мати однакові імена. Властивості бінарних операцій: • операція f є комутативною, якщо A f B=B f A; • операція f є асоціативною, якщо (A f B) f C=A f (B f C); • операція f є дистрибутивною з операцією q, якщо A f (B q C)=(A f B) q (A f C). Оскільки різні відношення можуть містити атрибути з однаковими іменами, то під час виконання бінарних операцій у кінцевому відношенні можуть повторюватися імена атрибутів. Для забезпечення унікальності імен атрибутів вони уточнюються іменами відповідних відношень згідно з таким синтаксисом: < ім’я відношення >.< ім’я атрибута >. Під час розгляду операцій реляційної алгебри атрибути позначатимемо великими літерами з початку латинського алфавіту: А, В, …, а множини атрибутів – великими літерами з середини латинського алфавіту: L, M, …. Операція об’єднання Нехай L – певна множина атрибутів. Об’єднанням сумісних реляційних відношень R1 і R2 зі схемами R1(L) і R2(L) (позначається як R1R2) називається таке реляційне відношення R зі схемою R(L), що містить кортежі обох поєднуваних відношень, але без повторень: R(L)= R1(L)R2(L)={r | rR1 rR2} Операція комутативна, асоціативна й дистрибутивна щодо перетину. R1 R2 A B a1 b1 a1 b2 a2 b3 R1R2 A B a1 b1 A B a1 b1 a2 b1 a1 b2 a2 b1 a2 b3 Перетин Припустимо, що L – певна множина атрибутів. Перетином сумісних реляційних відношень R1 і R2 зі схемами R1(L) і R2(L) (позначається як R1R2) називається таке реляційне відношення R зі схемою R(L), яке містить кортежі, що входять до складу обох операндів: R(L)= R1(L) R2(L)={r | rR1 rR2} Операція комутативна, асоціативна й дистрибутивна щодо об’єднання. R1 A a1 B b1 a1 b2 a2 b3 R2 R1 R2 A B a1 b 1 A a1 a2 b 1 B b1 Операція різниця Нехай L – певна множина атрибутів. Різницею сумісних реляційних відношень R1 і R2 зі схемами R1(L) і R2(L) (позначається як R1-R2) називається реляційне відношення R зі схемою R(L), що містить ті кортежі з першого операнда R1, яких немає у другому операнді R2: R(L)= R1(L)- R2(L)={r | rR1 rR2} Операція не комутативна, не асоціативна й не дистрибутивна з іншими операціями. R1 R2 A a1 B b1 a1 b2 a2 b3 A B a1 b1 a2 b1 R1- R2 A a1 B b2 a2 b3 RS=R-(R-S) Деякі особливості теоретико-множинних операцій. - у реляційній алгебрі, на відміну від алгебри множин, не використовується операція доповнення, оскільки певні домени можуть бути нескінченними або містити дуже багато значень і в результаті операції доповнення можна отримати або нескінченне відношення, або відношення з дуже великою кількістю кортежів. - вимога сумісності операндів зумовлена тим, що без цього обмеження результатом теоретико-множинних операцій могли б бути різноструктурні кортежі, а не реляційні відношення. Проекція Проекцією реляційного відношення R зі схемою R(A1,…, Ak) за атрибутами Ai1,…, Ain, де {Ai1,…, Ain}{A1,…, Ak}, що позначається R[Ai1,…, Ain], називається таке відношення S зі схемою S(Ai1,…, Ain), кортежі якого отримані з кортежів відношення R шляхом видалення значень, що не належать атрибутам, за якими виконується проекція. При цьому в кінцевому відношенні повторні екземпляри кортежів видаляються. Якщо r є кортежем відношення R, то записом r[L], де L– підмножина атрибутів відношення R, позначимо множину тих елементів кортежу r, що відповідають значенням атрибутів з L. Тоді наведене вище визначення проекції може бути записане у такий спосіб: S= R[Ai1,…, Ain]={ r[Ai1,…, Ain] | rR}. Операція проекції також записується як Ai1,…, Ain (R). З теоретичної точки зору операція проекції не є „чистою”, оскільки список атрибутів не належить основній множині (тобто не є реляційним відношенням), а тому не може бути операндом. За „чистого” теоретичного підходу операцію проекції слід вважати бінарною, а на практиці вона розглядається як унарна з параметрами. Такі ж самі проблеми мають місце в усіх операціях, де операндами є списки атрибутів. R A a1 a1 a2 a2 B b1 b2 b3 b4 R[A,C] C c1 c1 c1 c2 A a1 a2 a2 C c1 c1 c2 Обмеження (селекція) Спочатку дамо означення q-порівняності атрибутів. Нехай q є одним з операторів порівняння: =, , , >, , < (набір операторів можна розширити). Атрибути A і B одного й того самого чи різних відношень називаються q-порівнянними, якщо для будь-яких значень aA i bB результат операції aqb є визначеним (істинним або хибним). Інакше кажучи, ця операція визначена на відповідних атрибутах. Набори атрибутів L=(A1,…, Ak) та M=(B1,…, Bn) називаються q-порівнянними, якщо k=n і Ai q-порівнянне з Bi (i=1,2,…k). Тоді вираз L q M розуміють так: L q M =(A1 q B1)… (Ak q Bk). Обмеження (селекція) Нехай L і M – набори q-порівнянних атрибутів схеми відношення R. Тоді обмеженням реляційного відношення R за умовою L q M, що позначається R[L q M], називається реляційне відношення, кортежі якого відповідають умові L q M : S= R[L q M]={r | rR r[L] q r[M]} Множина М може складатися як з атрибутів, так і з констант. Операція обмеження також записується як L q M (R). R R[A=a2] A a1 B b1 C c1 a1 b2 c1 a2 b3 c1 a2 b4 c2 A a2 B b3 C c1 a2 b4 c2 Декартовий добуток Декартовим добутком реляційних відношень R і S зі схемами R(A1, A2,…An) та S(B1, B2,…Bm) відповідно, що позначається RS, називається відношення Q зі схемою Q(A1, A2,…An, B1, B2,…Bm), яке містить усі можливі з’єднання кортежів відношення R з кортежами відношення S: Q = RS = {(r, s) | rR sS}. Операція комутативна й асоціативна. R1 A a1 a1 a2 R=R1 R2 R1 B b1 b2 b3 C c1 c2 D d1 d1 A a1 a1 a1 a1 a2 a2 B b1 b1 b2 b2 b3 b3 C c1 c2 c1 c2 c1 c2 D d1 d1 d1 d1 d1 d1 Операції з’єднання Припустимо, що відношення R має схему R(L, M), а відношення S– схему S(N, P). Нехай множини атрибутів M і N– q-порівнянні. Тоді з’єднанням, або q-з’єднанням, відношень R і S за умовою M q N, що позначається як R[M q N]S, називається відношення Q зі схемою Q(L,M,N,P), кортежі якого можна отримати з’єднанням тих кортежів відношень R і S, на яких виконується умова M q N: Q= R[M q N]S={(r, s) | rR sS r[M] q s[N]}. Під час з’єднання атрибути, за якими виконується така операція, повторюються в кінцевому реляційному відношенні. Операція комутативна й асоціативна. Іноді операція з’єднання позначається як R F S , де F– умова з’єднання. З’єднання за умовою рівності називається еквіз’єднанням. Серед операцій q -з’єднання виділяють операцію напівз’єднання, за якої з результату видаляються всі атрибути одного з відношень, що з’єднуються. Вона записується як R[Mq NS і формально визначається так: Q= R[Mq NS ={r | rR sS r[M] q s[N]}. Операція напівз’єднання не розширює можливостей реляційної алгебри, оскільки вона виражається через з’єднання і проекцію в такий спосіб: R[Mq NS=( R[M q N]S)[L,M] Природне з’єднання З’єднання за умовою рівності, коли один з порівнюваних атрибутів (чи група порівнюваних атрибутів) видаляється з кінцевого відношення, називається природним з’єднанням; на його позначення використовується символ „*”. Наприклад, якщо задані відношення R(A,B,C,D) і S(C,D,E), то в результаті виконання операції Q=R*S отримаємо реляційне відношення Q(A,B,C,D,E). Нехай дано два відношення R(L) і S(M), де L, M – множини атрибутів (а не одиночні атрибути). Природним з’єднанням цих відношень R(L)*S(M) називається відношення Q(L M), що містить ті і тільки ті кортежі t, для яких виконуються одночасно такі дві умови: t [L] R(L); t [M] S(M). Операція природного з’єднання позначена символом(*). Операція природного з'єднання двох відношень може бути виражена через операції декартового добутку, проекції і перетину. Розглянемо три випадки. Множини атрибутів відношення R(L) і S(M) не рівні, але перетинаються (тобто L≠M, LM≠). В даному випадку: R(L)*S(M) = (R(L)хS(M- L)) (R (L- M)хS(M)). Множини атрибутів відношень не перетинаються (тобто LM =). В даному випадку природне з’єднання рівне декартовому добутку вихідних відношень: R(L)*S(M) = R( L)хS(M). Множини атрибутів відношень рівні (тобто L=M). тоді природне з'єднання рівне перетину вихідних відношень: R(L)*S(M) =R(L) S(M). Приклади операцій з’єднання R A a1 a1 a1 a2 a2 S B b1 b1 b2 b3 b4 C c1 c2 c1 c1 c2 D d1 d1 d1 d1 d3 C c1 c2 c2 R[C,D=C,D]S D d1 d1 d1 E e2 e3 e1 A a1 a1 a2 a1 a1 a1 a1 B b1 b2 b3 b1 b2 b1 b2 C c1 c1 c1 c2 c2 c2 c2 D d1 d1 d1 d1 d1 d1 d1 R*S C c1 c1 c1 c2 c2 c2 c2 D d1 d1 d1 d1 d1 d1 d1 E e2 e2 e2 e3 e3 e1 e1 A a1 a1 a2 a1 a1 a1 a1 B b1 b2 b3 b1 b2 b1 b2 C c1 c1 c1 c2 c2 c2 c2 D d1 d1 d1 d1 d1 d1 d1 E e2 e2 e2 e3 e3 e1 e1 Природне з’єднання R: таблиця S: таблиця А a1 a1 а2 B b1 b1 b2 B b1 b2 b1 C c1 c2 c1 Rx S : запит на вибірку ⱱ ⱱ ⱱ ⱱ ⱱ А a1 a1 а2 a1 a1 а2 a1 a1 а2 R.B b1 b2 b1 b1 b2 b1 b1 b2 b1 S.B b1 b1 b1 b1 b1 b1 b2 b2 b2 C c1 c1 c1 c2 c2 c2 c1 c1 c1 R*S : запит на вибірку А a1 а2 a1 а2 a1 B b1 b1 b1 b1 b2 C c1 c1 c2 c2 c1 Образ реляційного відношення. Нехай задано відношення зі схемою R(M,N). Образом реляційного відношення R за кортежем t1R[M] називається така множина кортежів t2R[N], для яких зчеплення (t1, t2) належить відношенню R. Образ R за кортежем t1 позначається IR(t1) і формально визначається у такий спосіб: IR(t1)={ t2 | t2R[N] (t1, t2) R}. R A a1 a1 a1 a2 IR(a1) B b1 b1 b3 b1 C c1 c2 c2 c4 B b1 b1 b3 C c1 c2 c2 IR(a2) B C b1 c4 IR(a1,b1) C c1 c2 IR(c2) A B a1 b1 a1 b3 Ділення Нехай задано відношення R і S зі схемами R(M,N) та S(K,L), для яких проекції R[N] та S[K] є сумісними. Діленням відношення R на відношення S за наборами атрибутів N і K (позначається R[NK]S) називається операція, результатом якої є відношення Q зі схемою Q(M), що складається з таких кортежів tR[M], образи IR(t) яких містять усі кортежі проекції S[K], тобто: Q= R[NK]S={t | tR[M] IR(t) S[K]} Можна сказати, що операція ділення виражається через інші операції алгебри в такий спосіб: R[NK]S= R[M]-(( R[M] S[K])-R)[M] Операція не комутативна й не асоціативна. R A a1 a1 a1 a2 S B b1 b1 b3 b1 C c1 c2 c2 c4 C c1 c1 c2 c2 D d1 d2 d1 d3 S[C] R[CC]S C c1 c2 A B a1 b1 2. Приклади застосування реляційної алгебри Реляційна схема бази даних вищого навчального закладу: ФАКУЛЬТЕТ (#F, Назва, Декан, Корпус, Фонд) КАФЕДРА (#D, #F, Назва, #ЗАВІДУВАЧ, Корпус, Фонд) ВИКЛАДАЧ (#T, #D, Прізвище, Посада, Тел) ГРУПА (#G, #D, Курс, Номер, Кількість, #КУРАТОР) ПРЕДМЕТ (#S, Назва) АУДИТОРІЯ (#R, Номер, Корпус, Місткість) ЛЕКЦІЯ (#T, #G, #S, #R, Тип, День, Тиждень) Приклади застосування реляційної алгебри Проекція 1. Вивести список усіх викладачів вузу разом з їхніми телефонними номерами. ВИКЛАДАЧ [Прізвище, Тел] Обмеження 2.Хто є деканом факультету інформатики? (ФАКУЛЬТЕТ [Назва=”інформатики”]) [Декан] З’єднання, обмеження, проекція 3. Вивести назви факультетів разом із назвами відповідних кафедр. (ФАКУЛЬТЕТ[#F=#F]КАФЕДРА)[ФАКУЛЬТЕТ.Назва, КАФЕДРА.Назва] Теоретико-множинні операції 4. Вивести список усіх корпусів, де розташовуються кафедри факультету інформатики, а також корпус, де розміщений деканат. (ФАКУЛЬТЕТ [Назва=”інформатики”])[Корпус] ((ФАКУЛЬТЕТ [#F=#F] КАФЕДРА) [ФАКУЛЬТЕТ. Назва=”інформатики”])[Кафедра. Корпус] Приклади застосування реляційної алгебри 5. Хто з викладачів кафедри АСУ не читає лекцій? Цей запит доцільно будувати за методом „від супротивного”, тобто від усієї множини викладачів (точніше їх прізвищ) віднімається множина тих, які читають хоча б одну лекцію. ((КАФЕДРА [#D=#D]ВИКЛАДАЧ) [КАФЕДРА. Назва =”АСУ”] ) [ВИКЛАДАЧ. Прізвище] – ((КАФЕДРА [#D=#D] ВИКЛАДАЧ) [#T=#T] ЛЕКЦІЯ) [КАФЕДРА. Назва=”АСУ”]) [ВИКЛАДАЧ. Прізвище] Операція ділення 6. Вивести номери тих викладачів, які викладають в усіх групах. ((ЛЕКЦІЯ[#T, #G]) [#G ÷ #G]ГРУПА) [#T] Необхідність використання операції ділення у цьому запиті зумовлена тим, що тут має місце множинне порівняння. Для кожного викладача (#T) потрібно сформувати його образ, тобто множину груп, у яких він викладає, а потім перевірити, чи збігається цей образ із множиною всіх груп, тобто з другим операндом. Зауважимо, що для дільника і діленого потрібно детально продумувати список атрибутів, оскільки це може вплинути на результат виконання запиту. 3. Властивості операцій реляційної алгебри. Еквівалентні перетворення Два вирази реляційної алгебри називаються еквівалентними, якщо за будь-яких значень реляційних відношень, що входять до їхнього складу, результати обчислення виразів збігаються. Правила еквівалентних перетворень дають змогу вирішувати проблему оптимізації виконання запитів реляційної алгебри. 1. Комутативність, асоціативність та дистрибутивність теоретико-множинних операцій об’єднання, перетину і різниці. 2. Ідемпотентність проекцій. Нехай L і M – множини атрибутів деякого реляційного відношення R. Якщо LM, то L(MR)= LR. 3. Дистрибутивність проекції з теоретико-множинними операціями, декартовим добутком, з’єднанням, селекцією. Нехай K– певна підмножина атрибутів реляційного відношення R, P– підмножина атрибутів реляційного відношення S і N=KP. Тоді: 𝐹 𝐹 а) N(RS)= NRNS; д) N(𝑅⋈ S)= K𝑅⋈ PS (якщо в умові F в б) N(RS)= NRNS; икористовуються лише атрибути з множини N); в) N(R-S)= NR-NS; е) KFR=FKR (якщо в умові F використовуються лише атрибути з множини K ). г) N(RS)= KRPS; 4. Ідемпотентність (комутативність) селекцій: F(G(R))= G(F(R))= FG(R). 5. Комутативність селекції з декартовим добутком: а) F(RS)= F(R)S (якщо в умові F використовуються лише атрибути з множини R); б) F1F2(RS)= F2 (F1(RS))= F1(R) F2(S) (якщо всі атрибути з F1 містяться у відношенні R і всі атрибути з F2 міститься у відношенні S); в) F1F2F3 (RS)= F3 (F1(R) F2(S))n (якщо всі атрибути з F1 містяться у відношенні R і всі атрибути з F2 міститься у відношенні S). 6. Комбінування селекції з декартовим добутком та q-з’єднанням: KqP а) KqP ( R S ) R S F GqF S ) R S (атрибути з G належать відношенню R, атрибути з F– відношенню S). б) G ( R 7. Дистрибутивність селекції з теоретико-множинними операціями. Нехай атрибути з умови F входять до складу як реляційного відношення R, так і реляційного відношення S. Тоді: а) F(RS)= F(R) F(S); б) F(RS)= F(R) F(S); в)F(R-S)= F(R) - F(S); 8. Комутативність селекції і з’єднання: а) якщо всі атрибути з логічного виразу G містяться в реляційному відношенні R, то F F G ( R S ) G ( R) S б) якщо G=G1G2, всі атрибути з G1 містяться у реляційному відношенні R і всі атрибути з G2– у реляційному відношенніS, то ( R F S ) ( ( R) F (S )) G G1 G2 10. Комутативність та асоціативність з’єднання: F F а) R S S R – комутативність; F G F G ( S T ) ( R S ) T –асоціативність. б) R 11. Дистрибутивність з’єднання з теоретико-множинними операціями: F F F а) R (S T ) ( R S ) ( R T) ; F F F (S T ) ( R S ) ( R T) ; б) R F F F ( S T ) ( R S ) ( R T); в) R 4.Оптимізація обчислення виразів реляційної алгебри Під терміном логічна оптимізація ми маємо на увазі оптимізацію, що дає можливість прискорити обчислення реляційних виразів незалежно від способів реалізації реляційних відношень. На відміну від алгебри числових виразів, складність виконання формул реляційної алгебри залежить не лише від кількості операцій, але й від розміру операндів. Розглянемо приклад оптимізаційних перетворень реляційного виразу. Нехай задано вираз: A ( BC &D9 ( R( A, B) S (C, D))) Можливі шляхи послідовних еквівалентних перетворень, що оптимізують обчислення цього виразу Основні правила оптимізації виразів реляційної алгебри. 1. Кожна селекція yF1… Fn(E) згідно з властивістю 4 подається у вигляді послідовності селекцій yF1(…(yFn(E) …)). 2. Кожна селекція переміщується деревом виразу вниз наскільки це можливо (властивості 3е, 5, 7, 8). У такий спосіб зменшується кардинальність відношень. 3. Розташовані поруч селекції і Декартові добутки замінюються з’єднанням, якщо це допускається властивістю 6. 4. Кожна проекція переміщується деревом виразу вниз наскільки це можливо (властивості 2,3). У такий спосіб зменшується ступінь відношень. 5. Кожен каскад селекцій і проекцій перетворюється на одиничну селекцію, одиничну проекцію чи селекцію з наступною проекцією (властивості 2, 3е, 4). Перетворення може суперечити евристиці „роби проекцію якомога раніше”, однак ефективніше виконати всі можливі операції селекції і проекції за один перегляд відношення, ніж здійснювати кілька переглядів. 5. Реляційне числення Кодда Розрізняють реляційне числення кортежів і реляційне числення доменів. Реляційне числення кортежів є, по суті, формалізацією системи позначень, призначеної для утворення множин. В реляційному численні використовуються булеві операції (І, АБО, НЕ) над умовами, які можуть бути істинними або помилковими. Розглянемо реляційне відношення бази даних вищого навчального закладу: r – ФАКУЛЬТЕТ (#F, Назва, Декан, Корпус, Фонд) Запит: Які факультети знаходяться в корпусі №2? Результатом повинен бути вираз, який міститьнаступні операції: - операцію Вибір над відношенням r, результатом її застосування до відношення r є інше відношення, яке представляє собою підмножину кортежів відношення r зі значенням, рівним 2 в атрибуті Корпус; - проекція результату попередньої операції на атрибут Назва. {t.Назвa | t in r and t. Корпус = 2}, де t - це змінна, що позначає довільний рядок. "in r" яке означає, що t- рядок відношення. t.Назва - значення атрибута Назва в рядку r; символ (|) - розділяє цільової список і визначальний вираз. t.Назва – цільовий список; t in r and t. Корпус = 2 – визначальний вираз; t. Корпус = 2 означає, що значення атрибута Корпус в рядку t дорівнює 2. Фігурні дужки "{}", визначають результат запиту, як множину значень даних. Цільовий список і визначальний вираз Цільовий список може складатися з декількох атрибутів, розділених комами. {t.Назвa, t.Корпус, t.Декан | t in r and t. Корпус = 2}. Нехай дані два відношення: r – ВИКЛАДАЧ1 (#T, Прізвище, Посада, Тел) s – ВИКЛАДАЧ2 (#T, Прізвище, Посада, Тел) Нехай ми маємо алгебраїчний вираз посада(rs). t.посада – цільовий список; t in r and у in s and t.#T = у.#T and t.Прізвище = у.Прізвище and t.Посада = у.Посада and t.Тел = у.Тел визначальний вираз. { t.посада | t in r and у in s and t.#T = у.#T and t.Прізвище = у.Прізвище and t.Посада = у.Посада and t.Тел = у.Тел } Квантори існування Квантор існування означає, що існує хоча б один екземпляр певного типу об’єктів. Розглянемо відношення: КАФЕДРА (#D, #F, Назва, #ЗАВІДУВАЧ, Корпус, Фонд) ВИКЛАДАЧ (#T, #D, Прізвище, Посада, Тел) Запит: Вивести прізвища викладачів, якщо викладач прикріплений до якоїсь кафедри. {t.Прізвище | t in ВИКЛАДАЧ and exists y in КАФЕДРА (у.#D = t.#D)}. Квантор загальності Квантор загальності означає, що деяка умова застосовується до всіх рядків або до кожного рядка деякого типу. Розглянемо відношення: ВИКЛАДАЧ (#T, #D, Прізвище, Посада, Тел) ГРУПА (#G, #D, Курс, Номер, Кількість, #КУРАТОР) ЛЕКЦІЯ (#T, #S, #R, Тип, День, Тиждень) Запит: Вивести номери тих викладачів, які викладають в усіх групах. t.#T | t in ЛЕКЦІЯ and у in ГРУПА and FORALL у (t.#G = у.#G)}, де t - кортеж відношення ЛЕКЦІЯ; у - кортеж відношення ГРУПА.