Zad. 1
Niech R,S będą odpowiednio n+m- i m-argumentowymi symbolami relacyjnymi z sygnatury.
Określamy nową operację ÷ w algebrze relacyjnej:
[[R÷S]]={⟨a1,…,an⟩| dla każdego ⟨b1,…,bm⟩∈[[S]] (⟨a1,…,an,b1,…,bm⟩∈[[R]])}.
Pokazać, że operator ÷ jest wyrażalny za pomocą pozostałych operatorów algebry relacyjnej. Podać wyrażenie algebry relacyjnej, które jest równe R÷S.
Zad. 2
Pokazać, że po odpowiednim (naturalnym) zakodowaniu struktur skończonych A w postaci ciągów binarnych code(A), dla każdego zdania φ logiki pierwszego rzędu funkcja
fφ:code(A)↦ if A⊨φ then 1 else 0
należy do niejednostajnego AC0.
Zad. 3
Pokazać, że funkcja fφ z poprzedniego zadania należy do niejednostajnego NC1.
Informacja Znana w dziedzinie baz danych reguła optymalizacji zapytań wyrażonych w algebrze relacyjnej polega na tym, by rozmiar wyników pośrednich otrzymywanych trakcie ewaluacji zapytania był jak najmniejszy.
Zad. 4
Pokazać, że następujący problem jest nierozstrzygalny:
Dane: wyrażenie E algebry relacyjnej nad sygnaturą składającą się z symbolu relacyjnego R i być może innych symboli.
Pytanie: Czy dla każdej struktury moc |[[E]]|<|[[R]]|2?
Zad. 5
Algebrę relacyjną z liniowym porządkiem na danych można skonstruować na dwa sposoby. Załóżmy, że ≤ jest relacją liniowego porządku na wszystkich elementach, które mogą się pojawić w krotkach, a w sygnaturze nie ma stałych.
Pierwszy sposób polega na tym, że do każdej bazy danych wprowadzamy dodatkową tabelę (dkoładniej perspektywę) LEQ o dwóch kolumnach, która zawiera wszystkie krotki ⟨a,b⟩ dla a,b należacych do aktywnej dziedziny i takich, że a≤b. Wówczas zwykłe wyrażenia algebry relacyjnej mogą wykorzystać LEQ jak każdą inną tabelę. Jednak LEQ uważamy za część składni zapytań, a nie zwykłą tabelę w bazie.
Drugi sposób polega na tym, że nie zwiększamy liczby tabel, ale poszerzamy składnię i w warunku θ selekcji σθ(E) dopuszczamy także nierówności postaci i≤j dla i,j nie większych niż liczba kolumn w E. Semantyka jest oczywista, np. [[σi≤j(E)]]={→a∈[[E]]:ai≤aj}.
Pokazać, że zbiory zapytań wyrażalnych w obu formalizmach są takie same.
Zad. 6
Wykaż, że półzłączenie jest wyrażalne w algebrze relacyjnej i podaj jego definicję za pomocą pozostałych operatorów.
Zad. 7
Wykaż, że wyrażenia zbudowane z relacji przy użyciu selekcji, projekcji, sumy, różnicy i półzłączenia nie wyrażają wszystkich zapytań definiowalnych w zwykłej algebrze relacyjnej.
Zad. 8
Wykaż, że każde wyrażenie zbudowane z relacji przy użyciu selekcji, projekcji, sumy, różnicy i półzłączenia w bazie danych, w której elementami są liczby naturalne, można obliczyć algorytmem o złożoności czasowej O(nlogn), gdzie n to maksymalna liczba krotek w relacjach.
Zad. 9
Wykaż, że wyrażenia zbudowane z relacji przy użyciu projekcji, produktu, sumy, różnicy i półzłączenia wyrażają wszystkie zapytania definiowalne w zwykłej algebrze relacyjnej, o ile w sygnaturze nie ma stałych.
Zad. 10
Wykaż, że istnieje wyrażenie zbudowane z relacji przy użyciu selekcji, projekcji, sumy, różnicy i półzłączenia, które wyraża przecięcie relacji.
Zad. 11
Pokazać, że poszczególne operatory algebry relacyjnej nie są wyrażalne za pomocą pozostałych:
- Suma się nie wyraża za pomocą selekcji, rzutowania, produktu i różnicy.
- Różnica się nie wyraża za pomocą selekcji, rzutowania, produktu i sumy.
- Pozostałe przypadki są banalne.
Zad. 12
Dane są dwie tabele A i B o dwóch kolumnach każda. Ta pierwsza składa się z nA wierszy.
Zaprojektować algorytm wyliczenia wartości wyrażenia algebry relacyjnej
A−π1,2(σ1=3(A×B)).
Przy projektowaniu algorytmu należy założyć, że dziedzina aktywna składa się z liczb całkowitych typu integer, a do dyspozycji są dwukolumnowe tablice, których wiersze indeksowane są nieujemnymi liczbami całkowitymi i zawierają takież liczby.
W algorytmie należy użyć dokładnie jednej takiej tablicy o rozmiarze nA wierszy i kilku dodatkowych zmiennych typu integer. Oznacza to, że wykorzystujemy dokładnie tyle pamięci, ile zajmie wynik. Proszę nie używać wskaźników, rekursji i innych metod ukrytego alokowania dodatkowej pamięci.
Tabele A i B są tylko do odczytu, przy czym można założyć, że są one posortowane. Jeśli rozwiązanie będzie z tego korzystać, proszę o tym założeniu wspomnieć.
Zad. 13
Niech k∈N będzie stałą. Wykazać, że jeśli E jest wyrażeniem algebry relacyjnej i maksymalna liczba kolumn w podwyrażeniach E wynosi k, to istnieje algorytm obliczający wartość [[E]] w każdej strukturze A i działający w czasie O(nklogn), gdzie n to liczność dziedziny aktywnej A.
Przy projektowaniu algorytmu należy założyć, że dziedzina aktywna składa się z liczb całkowitych typu integer, a do dyspozycji są jednowymiarowe tablice indeksowane nieujemnymi liczbami całkowitymi i zawierające takież liczby. Dostęp do komórki tablicy jest wykonywany w czasie jednostkowym, podobnie jak operacje arytmetyczne i porównania na liczbach całkowitych. Relacje z A są przekazywane do algorytmu właśnie w takich tablicach: relacja o l kolumnach jest reprezentowana przez l tablic, a dane zajmują początkowe indeksy. Wynik obliczenia zwraca się analogicznie.