Prof. Franz Schweiggert Abteilung Angewandte
Informationsverarbeitung 15. Juni 2005
Christian Ehrhardt Blatt 10
Unix-basierte Implementierung kleiner Datenbanken (SS 2005)
Abgabetermin 22.06.2005
In diesem Blatt soll ein kleines Modul Table.pm geschrieben werden,
mit dem die bekannten ASCII-Tabellen auf bequeme Weise verarbeitet werden
können. Wir gehen davon aus, daß immer eine Zeile einen Datensatz
repräsentiert. Die erste Zeile enthält die Spaltennamen und ist
selbst kein richtiger Datensatz. Wir gehen weiterhin davon aus, daß
es in jeder Tabelle mindestens eine Spalte gibt, die als Schlüssel
verwendet werden kann.
Das Modul Table.pm soll die folgenden Operationen unterstützen:
- new Table(filename, seperator, key)
- liest eine wie oben beschriebene
Tabelle aus der Datei filename ein. seperator ist der
Spaltentrenner, der in der Tabelle verwendet wird und key ist
der Name der Spalte, die als Schlüssel verwendet werden soll.
Die Funktion agiert als Konstruktor und liefert ein Objekt zurück.
Die folgenden Funktionen sollen dann Methoden eines solchen Objekts
(im folgenden durch $t bezeichnet) sein.
- $t->sync()
- schreibt eine möglicherweise veränderte Version der
ursprünglichen Tabelle in die Datei, aus der die Tabelle ursprünglich
gelesen wurde. Dabei soll der selbe Trenner, der selbe Dateiname und
die selbe Reihenfolge der Spalten verwendet werden. Diese
Methode erhält keine (expliziten) Parameter.
- $t->get(key)
- sucht den Eintrag der zu key gehört und liefert
diesen Eintrag in From eines Hashzeigers zurück. Der Hash auf den der
Rückgabewert zeigt, ordnet jedem Spaltennamen der Tabelle den
entsprechenden Wert des Tabelleneintrags zu.
- $t->update($hash)
- bekommt einen Eintrag in Form eines Hashzeigers
übergeben. Der Eintrag in der Tabelle wird entsprechend aktualisiert
oder es wird ein neuer Eintrag angelegt.
- $t->remove(key)
- löscht den Eintrag von key aus der Tabelle.
- $t->entries()
- liefert eine Liste aller Schlüssel, die in der
Tabelle vorkommen.
- $t->keycolumn()
- liefert den Namen der Spalte, die im
Moment als Schlüssel verwendet wird.
- $t->columns()
- liefert eine Liste aller Spaltennamen.
Auf der Homepage der Vorlesung wird ein kleines Testprogramm
testtable.pl für das Modul Table.pm und eine Testtabelle
addr.tab zur Verfügung
gestellt. Eure Implementierung des Moduls Table.pm sollte so gestaltet
werden, daß keine Änderungen an der Datei testtable.pl selbst
notwendig sind.
Christian Ehrhardt
2005-06-15