Zadanie 1

Napisać prostą bazę danych. Tabele bazy danych są zapisane w plikach, przy tym każda tabel jest w oddzielnym pliku. Rekordy mają postać:

POLE1: teść1
POLE2: teść2
...
POLEN: teśćN
gdzie "POLE1" (itd) to nazwy pól. Rekordy są oddzielone pustymi liniami. Należy wczytać tabele umiszczając każdy rekord w oddzielnej tabeli asocjacyjnej (haszu Perla) indeksowanej nazwami pól. Dla każdego pola zbudować oddzielną tabelę asocjacyjną która ma służyć jako indeks.

Program ma umieć odpowiadać zarówno na proste pytania typu znaleźć rekordy z tabeli A których pole P ma wartość w, jak i na bardziej złożone pytania typu podać wartości pól P1 i P2 tych rekordów z tableli A które mają taką samą wartość pola P3 jak jakiś rekord z tabeli B (tzn. ma zawierać operację złączenia tabel).

"Pełny" system tego typu zawierałby analizator syntaktyczny dla zapytań, przetwarzający je na postać wewnętrzną która byłaby dalej interpretowana -- napisanie takiego parsera _nie_ jest cześcią zadania. Chodzi o to by były zaimplementowane procedury potrzebne do obsługi takich zapytań, zaś do testowania zapytanie należy ręcznie przetłumaczyć na wywołanie odpowiednich procedur.

Zadanie 2

Pozycje poniżej to oddzielne projekty: