Thread Mini Datenbank (8 answers)
Opened by der_thomas at 2013-10-13 11:26

der_thomas
 2013-10-13 11:26
#171132 #171132
User since
2013-09-07
158 Artikel
BenutzerIn
[default_avatar]
Ich bräuchte bitte mal eure Meinung.

Es geht darum dass ich eine kleine Datenbank programmieren will. Umgesetzt habe ich das schon mit der anderen „P“ Sprache ...nicht PHP ;) - und das läuft auch alles wie gewollt und ist fast tagtäglich im Einsatz.
Eine Notwendigkeit besteht also nicht dass auch noch in Perl umzusetzen, aber ich lerne so einfach am besten....der Typ für Übungsaufgaben aus Büchern, Tutorials bin ich einfach nicht ;)
Zudem macht mir so etwas unheimlich viel Spaß, auch wenn die knappe Freizeit ein Hemmnis ist.

Das Ganze soll so frei sein dass man damit alles mögliche archivieren und bearbeiten kann, z.B. Bücherlisten, DVD Listen, Tagebuch, ToDo Listen u.s.w.....also im Prinzip alles was sonst auch recht gut per Calc oder Excel Liste machen könnte. Der Inhalt wird recht häufig geändert, ergänzt etc.)

Als Basis soll eine zweidimensionale Liste (Array) dienen.

Meine schon bestehende Version funktioniert folgendermaßen:
Ich habe ein Frontend inkl. GUI Klasse, die allerdings mit dem Datenarray direkt nichts zu tun hat, sondern....
....ein zweites Modul mit einer Datenklasse anspricht. Diese Klasse hat genau eine Instanz, nämlich das komplette zweidimensionale Array und wird von der Frontendklasse per Getter und Setter angesprochen.
Die Methoden dieser Datenklasse sind also beispielsweise „gib mir den ersten Datensatz“, „gib mir den nächsten Datensatz“, „sortiere die Daten nach Spalte x“, „speichere die Daten auf die Festplatte“, „markiere die Datensätze in denen das Wort xy vorkommt“ u.s.w.
Zurückgegeben wird bei den Gettern immer ein Datensatz in Form eines Arrays.
Per Setter zur Datenklasse geschickt wird z.B. ein veränderter oder neuer Datensatz – immer in Form eines Arrays.
Insgesamt sind es 25 Methoden die das gesamte Bearbeiten der zweidimensionalen Tabelle erledigen.
Dazu gehört auch das neue Anlegen einer Datenbanktabelle oder die Veränderung einer bestehenden Datenbanktabelle (hinzufügen, löschen oder sortieren der Spalten) - dafür soll es ein spezielles Frontend (Konsole) geben.
Wie gesagt, auf das zweidimensionale Array wird vom Frontend nie direkt zurückgegriffen.

Soweit ist das alles ok, ich fühle mich mit dieser Datenstruktur und Herangehensweise wohl und weiß (so einigermaßen :D) was da passiert.

Aber es gäbe natürlich Alternativen:
Die offenkundigste wäre wohl eine richtige Datenbank zu benutzen, will ich aber nicht da ich davon wenig Ahnung habe und es mir ums Erlernen von Perl geht.
Zum zweiten gibt es sicher auf CPAN schon was passendes, will ich auch nicht denn lernen würde ich auch da nicht viel.

Bleibt also nur was selbstgestricktes...was nebenbei auch wesentlich mehr Spaß macht :)

Was ich auf jeden Fall haben will ist eine Datenklasse in einem separaten Modul, dies deshalb um das für verschiedenste Datenbanken nutzen zu können (Die Frontends sollen sich nämlich unterschieden und müssen auch nicht immer GUI-Frontends sein).

Also Modul:
Version 1 wäre das oben beschriebene und von mir bereits umgesetzte.
Version 2 wäre wie Version 1, nur ohne OOP, also Modul mit Subroutinen.
Version 3 wäre jeden einzelnen Datensatz per einzelner Instanz darzustellen.

Die Performance spielt keine Rolle, es werden maximal Tabellen mit 400 Datensätzen und maximal 15 Spalten sein (die größte der bestehenden Datenbanken hat aktuell 165 Sätze mit je 13 Spalten), der Inhalt der Spalten ist nicht groß, maximal 50 Zeichen, in der Regel aber weniger als 20 und oft nur Boolean. Es muss nicht oder kaum gerechnet werden. Das Zeitaufwändigste wäre also das Sortieren der Daten was bei der Datenmenge nicht so tragisch sein sollte.

Wie in dem schon erstellten Programm will ich wieder so vorgehen dass das Frontend zuerst nur primitiv als Konsolenlösung umgesetzt wird, dies dient mehr oder weniger nur zum Testen des Datenmoduls. Und erst wenn das Datenmodul sicher funktioniert werden die jeweiligen Frontends umgesetzt.

Nun, nach tausend Worten meine Frage: Welche Version erscheint euch am sinnvollsten ?
Oder anders: Spräche was gegen Version 1 (die ich eigentlich sehr mag) ?
Gegen Version 3 spricht in meinen Augen dass das vermutlich schwer zu sortieren wäre bzw. ich die Instanzen doch wieder irgendwie per Index ansprechen müßte, also kaum was gewonnen wäre.

Falls es hilft, das Ganze besser zu verstehen kann ich auch gerne die Methoden(namen) des bereits bestehenden Programms hier zeigen - will diesen Post aber vorerst, ohne Not, nicht unnötig aufblähen ;)

View full thread Mini Datenbank