Archiv für den Monat: Februar 2017

SQL – die vergessene Kunst?

Die dolle Olle – Structured Query Language

Meine zweite große Liebe auf dem Computer, ich hab es schon erwähnt, waren relationale Datenbanken und SQL. Die geniale Structured Query Language wurde an den Universitäten sehr gepflegt, schließlich ist sie ja auch von Wissenschaftlern für Wissenschaftler erdacht worden. Der ursprüngliche Zweck von SQL war ja die digitale Auswertung von Massendaten. Soweit ich weiß waren die Verhaltensforscher die ersten, die mit Hilfe von strukturierten Datenbanken wissenschaftlich fundierte Forschungsergebnisse erzielten. Mehr über die Geschichte und die Grundlagen von SQL kann man hier bei Wiki nachlesen, das ist spannend und gilt alles auch heute noch.

Ach so, und was hat das mit WordPress zu tun? Gemach, gemach.  Ohne MySQL kein WordPress. Mehr dazu (viel mehr!) später.

SQL ist SQL geblieben

Ich jedenfalls habe SQL damals an der Uni sozusagen mit der Muttermilch aufgesogen und habe früh erkannt, welcher Power und welche Vielseitigkeit im relationalen Datenbankmodell steckt. So kam es, daß ich als studierte Biologin in der EDV gelandet bin – und dort echt Karriere gemacht habe. SQL hat sich bis heute kaum verändert. Wer die Grundlagen einmal begriffen hat, dem ist es egal ob er es nun mit Oracle, Access oder SQL Server, MySQL oder sonst einem Dialekt zu tun hat. Einen Select, einen Join oder eine Where-Klausel schreibt man heute noch genauso wie vor 40 Jahren, da ist nicht viel passiert – wozu auch. Die alten SQL-Konzepte sind so gut, da ist nie etwas Besseres nachgekommen.

Datennormalisierung – wer kennt das heute noch?

Was allerdings heute in Vergessenheit geraten scheint, ist die grundlegende Strukturierung der Daten. In SQL-Datenbanken landet heutzutage häufig unkontrolliertes Datenmus, es ist eben zu einfach, irrsinnige Mengen an Daten automatisiert abzuschöpfen. Als Programmierer sitzt man dann zu oft vor einer ungenießbaren Datensuppe, aus der man eine strukturelle Logik erst mühsam herausfieseln muß, ehe man zu vernünftigen Abfrageergebnissen kommt. Dabei könnt’s so einfach sein – wenn sich heute noch jemand die Mühe machen würde, die grundlegenden Tabellen zu Normalisieren und eine vernünftige Struktur hineinzubringen.

Gottseidank gibts Datensuppe – und (noch) keine gläsernen Bürger

Ich bin eigentlich ganz froh, daß die heutzutage erhobenen Datenmengen so schlecht strukturiert sind. Wenn da mal jemand vernünftig aufräumen würde, wären wir ganz schnell beim gläsernen Bürger. Überlegen sie nur mal, was herauskäme, wenn all ihre Bank- und Behördendaten, ihre Handy- und Internetprofile, ihre Krankenkassendaten und was weiß ich noch alles sauber durchstrukturiert und per SQL ganz easy abfragbar wären. Dann hätten wir sie, Huxley’s Schöne Neue Welt – und ich bin heilfroh, daß es nicht so ist.

Unfreiwilliger Schutz vor der totalen Überwachung

Die irrsinnigen Mengen an Datenschrott, die heutzutage über jeden von uns in irgendwelchen Computern gespeichert sind, sollen bitte so unübersichtlich und unauswertbar bleiben, wie sie sind, das ist unser bester Schutz vor der totalen Digitalisierung, die mit den heutigen technischen Mitteln theoretisch schon möglich wäre. Praktisch umsetzbar ist sie (noch) nicht, weil bei der Unzahl an unterschiedlichen Systemen und labyrinthischen gewachsenen Strukturen keiner mehr durchblickt, und das soll bitteschön so bleiben. Daten-Müllhalden als Schutz vor der totalen Überwachung?

Besser als nix, wenn sie mich fragen. Lieber ärgere ich mich noch lange Jahre z.B. mit Behörden oder Versicherungen rum, weil die anscheinend keine Daten speichern (oder sie nicht wiederfinden) und man bei jedem kleinen Antrag alles noch mal von vorn ausfüllen muß. Ist für mich als Bürger etwas unbequem, aber ehrlich: wenn die alle auf Knopfdruck meine sämtlichen Daten da hätten, würde mir mulmig. Da sei St.Murphy vor, er bewahre uns bitte das behördliche Datenchaos. Amen! 😉

Über mich – ich komme aus der Computer-Steinzeit

Eine nicht ganz so kurze Vorstellung

Gestatten, daß ich meine digitale Historie  vorstelle? Nachdem ich schon sehr lange im Geschäft bin, geht das nicht in drei Worten, aber ich werde versuchen, mich kurz zu fassen.  Sie müssen auch nicht alles lesen, aber andererseits weiß man doch ganz gern, mit wem man es zu tun hat, daher erzähle ich mal ein bißchen was von meinen „Roots“ und ein wenig Computergeschichte. WordPress kommt hier erstmal gar nicht vor, das gibts ja erst seit 2004. Aber Datenbanken gabs damals schon…

Ich bin Fachinformatikerin für Anwendungsentwicklung und seit Anfang der 80er Jahre im IT-Gewerbe tätig. Ich bin auch Datenbankprogrammiererin der ersten Stunde, das fing so ca. 1980 mit Superbase auf dem Commodore C64 an. Damals habe ich an der Uni jeden greifbaren Kurs und jedes Seminar belegt, das irgendwie mit Computern zu tun hatte, und mit Begeisterung bald die ersten Projekte umgesetzt. Meine allererste Datenbank enthielt meine Kochrezepte, dieses Hobby pflege ich auch heute noch digital, schauen sie mal rein ins Inselfisch-Kochbuch.

Die ersten PCs und dBase

Die zweite Datenbank war dann schon etwas ernsthafter gestrickt, da habe ich ein Verwaltungsprogramm für eine mittelgroße Taxifirma mit dBase auf DOS programmiert. Das waren die Zeiten, als es noch Computer ohne Festplatten gab, und Floppy Disks noch floppten – Disk1 fürs Betriebssystem, Disk2 fürs Anwendungsprogramm, und immer schön aufpassen daß der RAM nicht volläuft…. aber ich schweife ab, das sind Relikte aus der Steinzeit, als IT noch EDV hieß.

Informatik studieren? Gabs damals nur als Nebenfach

Einen Studiengang Informatik gab es damals leider noch nicht (den hätte ich sofort genommen!), es wurden allerdings an sämtlichen naturwissenschaftlichen Fakultäten Computerkurse angeboten. Viel noch am Großrechner, weil Standalone-PCs damals noch unmöglich teuer waren, und die Mainframes eh an den Unis rumstanden. Ich entsinne mich an meinen ersten Programmierkurs „Standard Pascal unter Unix“, da ging die Eingabe noch über Lochkarten, und die Programm-Ausgaben erfolgten an Deckwriter-Terminals. Nix Monitore! Das kann man sich heute gar nicht mehr vorstellen, aber es hat funktioniert.

Grundlagen in strukturierter Programmierung

Vielleicht hat es mich nachhaltig geprägt, daß meine erste Programmiersprache nicht BASIC-Spaghetti war, sondern das streng strukturierte prozedurale Pascal. Was ich damals über Variable und Konstanten, über if..then..else, über do…while, Gültigkeitsbereiche von Variablen, Funktions- und Prozeduraufrufe und all diese klassischen Programmierkonstrukte aufgesaugt habe, hat mich mein ganzes Programmiererleben lang begleitet und ganz ehrlich: so viel hat sich bis heute nicht geändert . Wenn ich meine Sourcecodes von damals noch hätte, ich wette, die würde ich ohne große Änderungen auch unter PHP, Javascript oder VBA zum Laufen kriegen!

Meine zweite große Computerliebe war SQL, aber das, finde ich, verdient einen eigenen Artikel.

Für wen ist dieser Blog gedacht?

Ist ernstgemeint: für alte Programmierer. Das ist jetzt nicht unbedingt für Tattergreise gedacht, sondern für technisch interessierte Leute, die schon ein paar Jahre Erfahrung in der IT auf dem Buckel haben. Dazu zähle ich auch ausdrücklich die alten Hobby-Programmierer, denn von denen gibt es viele sehr gute da draussen, die womöglich ihre erste Datenbank noch anno Dunnerkeil mit dBase geschrieben haben und die sich mit Excel, Word und Access schon unter DOS auskannten.

Also für Dinosaurier?  Ausdrücklich JA! Ich liebe Dinos, vermutlich weil ich selber mittlerweile einer bin 😉

Und mit diesen Dinosauriern möchte ich mich gerne über WordPress unterhalten, die erfolgreichste Blog-Software aller Zeiten. Ich selber nutze Wordpess seit einigen Jahren als Frontend für die Erstellung kleiner und mittlerer Webseiten, und bin eigentlich ein begeisterter Fan,  es ist so schön einfach zu bedienen, es ermöglicht auf einfachste Weise wunderbare Layouts und ist unendlich erweiterbar.

Warum „eigentlich“ ein Fan?

Weil ich nicht alles an WordPress gut finde.  Es gibt auch Sachen, die mich echt nerven, oder wo ich nicht verstehe warum man Dinge unnötig kompliziert macht. Ich möchte hier aber keinesfalls verbiesterte Kritik üben, mir geht es um eine eher lockere, ich würde fast sagen spielerische Herangehensweise, denn WordPress kann auch richtig Spaß machen.

Was ich voraussetze

Einige allgemeine Grundlagen der Programmierung (Sie sollten schon wissen wie man ein if..then..else und sowas konstruiert), solide SQL-Grundkenntnisse und ein allgemeines Verständnis des relationalen Datenbankmodells, dazu noch für den optischen Zuckerguß Erfahrung mit HTML und CSS, und ein bißchen PHP und MySQL kann auch nichts schaden. Und natürlich zumindest erste Erfahrungen mit WordPress, wenigstens ihre Urlaubsfotos sollen sie schonmal damit veröffentlich haben 😉

Was  ich nicht machen werde

Ich werde hier keine Sammlung von fix und fertigen Code Snippets zum Rauskopieren aufstellen, dafür fehlt mir einfach die Geduld. Einige beispielhafte Codeschnipsel hier und da müssen genügen, sie können ja selber tippen, und alte Programmierer lassen sich von verschachtelten Klammerungen und der allgemeinen Gänsefüßchenwut nicht abschrecken. Mir geht es darum, daß sie meine Codebeispiele nach vollziehen können, weil sie sie verstanden haben. Hier wird es also keinen  Copy&Paste-Laden geben, sondern eher eine lockere Plauderei über Konzepte mit eingestreuten Programmierbeispielen, die sie selber ausbauen und aufhübschen können. Sie werden sehen, wir werden jede Menge Spaß damit haben!

Ein wirklich nützliches Plugin: der Tablesorter

Ich kenn das bei den alten Programmierhasen, wenn die eine Tabelle sehen kriegen sie dieses Glitzern in den Augen und wollen sie unbedingt nach den verschiedensten Kriterien sortieren, nach Namen und IDs und Datum und was weiß ich noch alles… gemach, gemach. Nicht gleich mit PHP loslegen, das geht heutzutage auch bequemer. Wir holen uns dafür das Plugin Table Sorter an Bord, das beruht auf dem bekannten jQuery Tablesorter 2.0 von Christian Bach und ist sehr einfach in der Anwendung. Es kann zwar ohne Erweiterung kein deutsches Datumsformat, aber das soll uns erstmal nicht stören, in der wp_posts ist kein „German“ Datum drin.

Erste Voraussetzung: die Tabelle muß sauber mit thead und tbody-Tags strukturiert sein, deswegen meine Vorbemerkung aus dem letzten Beitrag. Wenn dann das Plugin installiert ist, genügt eine einfache Erweiterung im <table>-Tag, das schreibt sich so:

<table id='meineTabelle' class='tablesorter'>

Statt ‚meineTabelle‘ können sie einen beliebigen Tabellennamen angeben, er sollte halt innerhalb einer Seite eindeutig sein. Die Zuweisung der class = ‚tablesorter‘ sorgt dafür, daß sich das Plugin einschaltet. Wenn sie jetzt ihre Testseite mit der Tabellenausgabe neu laden, sollte es etwa so aussehen:

tablesorter

tablesorter

Und wenn sie auf die Pfeilchen in der Kopfzeile der Tabelle klicken, werden die Datensätze hübsch nach dieser Spalte sortiert – schick, nicht wahr? Der Tablesorter kann übrigens noch viel mehr, aber das sprengt hier komplett den Rahmen. Selber nachlesen auf der Plugin-Seite , oder auch direkt bei Christian Bach.

Das Sortieren zieht natürlich erst so richtig, wenn man es mit vielen unterschiedlichen Datensätzen zu tun hat, und wir waren ja bei der Abfrage einer Handvoll veröffentlichter Beiträge stehengeblieben. Lassen sie mal die Where-Klausel weg und schauen sie sich alle Einträge in der wp_posts mit dem Table Sorter an, das ist sehr aufschlußreich und erspart einem das SQL-Tippen im phpmyadmin. Konnte ich das Glitzern in den Augen der alten Tabellenhasen befriedigen? Das Potential des Tablesorter ist enorm, das müssen sie zugeben, der ist ungeheuer vielseitig einsetzbar und erspart einem im Zweifelsfall viele Zeilen PHP-Code.