Lab 12
back
Algebra relacji
Zakładamy jakiś schemat danych składający się z pewnych relacji.
- Wyrażenia atomowe: {(a1,a2,…,an}, R, gdzie R jest relacją w schemacie
- Selection:
- σi=j(S)={(a1,…,an)∣(a1,…,an)∈S,ai=aj}
- σi=c(S)={(a1,…,an)∣(a1,…,an)∈S,ai=c} dla pewnej wartości (stałej) c
- Projection: πi1,…,ik(S)={(ai1,…,aik)∣(a1,…,an)∈S}
- Cartesian product: S×T={(a1,…,an,b1,…,bm)∣(a1,…,an)∈S,(b1,…,bm)∈T}
- Union: S∪T={(a1,…,an)∣(a1,…,an)∈S∨(a1,…,an)∈T}
- Difference:
S∖T={(a1,…,an)∣(a1,…,an)∈S∨(a1,…,an)∈T}
Zadanie 1
Schemat bazy:
Film(Tytuł, Reżyser, Aktor)
Kino(Nazwa, Adres)
Seans(Kino, Film, Godzina)
Napisz zapytania w FOL i w algebrze relacji:
- Wypisz nazwy i adresy kin wyświetlających filmy Bergmana
φ(k,adr)=∃f,g,aktSeans(k,f,g)∧Film(f,’Bergman’,akt)∧Kino(k,adr)
π1,8σ1=7,2=4,5=’Bergman’(Seans×Film×Kino)
- Czy grają gdzieś Bergmana?
φ=∃k,f,g,akt,adrSeans(k,f,g)∧Film(f,’Bergman’,akt)∧Kino(k,adr)
π1σ5=’Bergman’(Seans×Film×Kino)
- Wypisz takie pary osób, że pierwsza reżyserowała drugą i odwrotnie.
φ(r1,r2)=∃t1,t2Film(t1,r1,r2)∧Film(t2,r2,r1)
π2,3σ2=6σ3=5(Film×Film)
- Wypisz reżyserów, którzy grali w swoim filmie.
φ(r)=∃fFilm(f,r,r)
π2σ2=3Film
- Wypisz krotkę (’Czas apokalipsy’,’Copolla’).
φ(f,r)=(’Czas apokalipsy’,’Copolla’)
σ1=’Czas apokalipsy’σ2=’Copolla’{(f,r)}
Zadanie 2
Napisz wyrażenie algebry relacji wykorzystujące tylko selekcję, rzutowanie i produkt (SPC), które wylicza przecięcie dwóch relacji.
Rozwiązanie
π1,…nσ1=n+1,2=n+2,…,n=2n(R×S)
Zadanie 3
Udowodnij, że różnicy dwóch relacji nie daje się wyliczyć wyrażeniem algebry relacji używającym jedynie selekcji, rzutowania, produktu i sumy (algebra SPCU).
Rozwiązanie
Możemy udowodnić nawet więcej: każdy z operatorów algebry relacji jest niezależny od pozostałych.
Lemat 1: Jedyne operacje zwiększające kardynalność wyniku to suma i produkt kartezjański.
Lemat 2: Jedyna operacja zmniejszająca arność krotek wynikowych to projekcja.
Lemat 3: Jedyna operacja zwiększająca arność krotek wynikowych to produkt kartezjański.
Lemat 4: Jedyne operacje pomniejszające kardynalność wyniku to selekcja i różnica, poza trywialnym przypadkiem R×∅.
Suma jest niezależna na mocy Lematu 1, bo tylko ona pozwala uzyskać większą kardynalność bez zmiany arności.
Projekcja jest niezależna na mocy Lematu 2.
Produkt kartezjański jest niezależny na mocy Lematu 3.
Różnica
Wszystkie operatory za wyjątkiem różnicy mają są monotoniczne, t.j. dodając krotki do źródłowych relacji możemy jedynie zwiększyć rozmiar wyniku.
Innymi słowy, jeśli mamy schemat z S i T oraz zapytanie algebry relacji E składające się jedynie z operacji SPCU to
S⊆S′∧T⊆T′⟹E(S,T)⊆E(S′,T′)
To oczywiście nie zachodzi dla różnicy: przy S∖T możemy zmniejszyć wynik dodając krotki do T.
Selekcja jest niezależna, bo tylko ona zmniejsza kardynalność wyniku jednocześnie będąc monotoniczna.
Zadanie 3.1
Zdefiniuj operator
S⋈i1=j1,…,ik=jkT={(a1,…,an,b1,…,bm)∣(a1,…,an)∈S,(b1,…,bm)∈T,ai1=bj1,…,aik=bjk}
Rozwiązanie
S⋈i1=j1,…,ik=jkT=σi1=n+j1,i2=n+j2,…,ik=n+jk(S×T)
Zadanie 4
Mikrozadanie.
Napisz wyrażenie algebry relacji (selekcja, rzut, produkt, suma, różnica) wyliczające wynik operacji
R:S={t∣{t}×S⊆R}
Zadanie 5
Udowodnij, że każde wyrażenie algebry SPC (tj. używające tylko operacji selekcji, rzutu i produktu) można równoważnie napisać w następującej postaci normalnej:
πk1,…,knσθ(R1×…×Rm)
gdzie θ to zbiór równości między kolumnami oraz między kolumnami a stałymi.
Rozwiązanie
Rozpatrzmy drzewo zapytania, w którym każdy wierzchołek jest jednym z operatorów a dzieci to jego operandy. A więc wierzchołek produktu ma dwoje dzieci, selekcji jedno i projekcji też jedno.
Dowód przebiega przez indukcję po budowie drzewa. Wykazujemy, że możemy zmodyfikować drzewo tak, że selekcja nie ma w poddrzewie projekcji, a produkt ani selekcji ani projekcji.
Węzeł postaci (πi1,…,inA)×B jest oczywiście równoważny πi1,…,in(A×B). Podobnie A×(πi1,…,inB) jest równoważne πi1+∣A∣,…,in+∣A∣(A×B).
Analogicznie dla (σtA)×B oraz A×(σtB).
Zrzuciliśmy wszystkie produkty poniżej selekcji i projekcji. Teraz łatwo zauważyć, że σj=k(πi1,…,inA) da się przerobić na projekcję selekcji A. Wymaga to przenumerowania j i k tak, żeby odnosiło się do tych samych kolumn przed projekcją.
Zadanie 6
Udowodnij, że operator sumy nie daje się wyrazić wyrażeniem algebry SPC (czyli używającym tylko selekcji, rzutowania i produktu).
Rozwiązanie
Patrz Zadanie 3.
back