Processing math: 100%

Logika i bazy danych, algebra relacyjna

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.


Definicje

Niejedednostajna klasa AC0 składa się z funkcji f:{0,1}{0,1} takich, że istnieje wielomian p(n) i stała c takie, że dla każdego n istnieje sieć logiczna C obliczająca f(x) dla wszystkich x{0,1}n, która:

  1. ma n bramek wejściowych i m bramek wyjściowych
  2. jest ponadto złożona z bramek logicznych AND, OR i NOT
  3. bramki wejściowe i bramki logiczne mogą mieć dowolnie wiele wyjść
  4. bramki AND i OR mogą mieć dowolnie wiele wejść, a bramki NOT zawsze tylko jedno
  5. liczba bramek w sieci nie przkracza p(n)
  6. głębokość sieci nie prekracza c

Niejedednostajna klasa NC1 składa się z funkcji f:{0,1}{0,1} takich, że istnieje wielomian p(n) i stała c takie, że dla każdego n istnieje sieć logiczna C obliczająca f(x) dla wszystkich x{0,1}n, która:

  1. ma n węzłów wejściowych i jeden węzeł wyjściowy
  2. jest złożona z bramek AND, OR i NOT
  3. węzły wejściowe i bramki mogą mieć dowolnie wiele wyjść
  4. bramki AND i OR muszą mieć 2 wejścia, a bramki NOT zawsze tylko jedno
  5. liczba bramek w sieci nie przkracza p(n)
  6. głębokość sieci nie prekracza clogn

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 ab. 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 ij dla i,j nie większych niż liczba kolumn w E. Semantyka jest oczywista, np. [[σij(E)]]={a[[E]]:aiaj}.

Pokazać, że zbiory zapytań wyrażalnych w obu formalizmach są takie same.


Definicja

Operator półzłączenia (ang. semijoin) w algebrze relacyjnej ma następującą semantykę (uwaga: symbol tutaj użyty jest niestandardowy, bo standardowego nie udało mi się wyprodukować używając tutejszego języka znaczników):

[[RθS]]={a[[R]] : b[[S]]θ(a,b)},
gdzie θ to zbiór równości pomiędzy kolumnami R i S, numerowanymi łącznie.

Na przykład dla binarnych R i S
[[R1=3,2=4S]]={a1,a2[[R]] : b1,b2[[S]]a1=b1a2=b2}.

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 kN 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.