Kolokwium z baz danych: Genealogia

Autor: Krzysztof Stencel.

Struktura bazy danych: usc.create, usc.drop.

Przykładowe dane: usc.insert.

Przykładowe rozwiązanie: genealogia.sol (Witalis Domitrz).

Zadanie

Baza zawiera dane o osobach, adresach, małżeństwach i dowodach tożsamości.

Napisz następujące zapytania SQL:

  1. Wypisz listę osób, które są swoimi własnymi babciami.
  2. Dla każdej osoby podaj liczbę jej wnuków. Wypisz też dane tej osoby.
  3. Znajdź pary osób, dla których istnieje chwila T taka, że w chwili T są one małżonkami, ale mieszkają pod różnymi adresami.
  4. Podaj liczbę nieślubnych dzieci, tzn. urodzonych w chwili, gdy ich rodzice nie są małżeństwem, a także nie byli nim od co najmniej 9 miesięcy.
  5. Znajdź osoby posiadające co najmniej dwa dowody w jednej chwili.
  6. Zakładamy, że po zmianie adresu i po zawarciu małżeństwa należy wyrobić nowy dowód w ciągu 30 dni. Znajdź osoby, które nie dopełniły tego obowiązku.
  7. Dla każdej poczty znajdź liczbę zawartych w jej okolicy małżeństw. Małżeństwo jest zawarte w okolicy poczty, wtedy i tylko wtedy gdy oboje małzonkowie mieszkają w okolicy tej poczty.
  8. Znajdź ojców, którzy każde dziecko mieli z inną kobietą.
  9. Znajdź osoby, które zmieniły płeć, tzn. były zarówno matkami, jak i ojcami.
  10. Znajdź osoby bezdzietne, które zawarły największą liczbę małżeństw.

Wypisanie osoby oznaca podanie jej id, imienia i nazwiska.