Samstag, 22. September 2018

FIAE: Woche 7-9. Relationale Datenbanksyteme und SQL.

(Nachtrag. Ich wollte eigentlich von Anfang an Lerntagebuchmäßig mitschreiben, aber das hat nicht geklappt. Mal sehen, was ich nachholen kann...)

Neues Thema: Datenbanken und SQL, diesmal wieder bei Trainer 1, dem strukturierten Frontalunterrichter.  Und tatsächlich dauert es etwa anderthalb Wochen, bis wir den Rechner anmachen, um die ersten SQL-Befehle zu tippen.
Das ist nicht weiter schlimm, in meinen Augen, da wir (für die Prüfung! Abschlussprüfung immer vor Augen!)  eben auch verstehen müssen, was Datenbanken sind, was sie können, was sie leisten sollen, kurzum erst einmal das Prinzip verstehen sollen. Schwerpunkt liegt dabei auf den relationalen Datenbanken und ihrer Normalisierung nach Codd, und obwohl ich die Grundlagen sicher verstanden zu haben glaube, habe ich - SPOILER!- in der Abschlussklausur einige durchaus dumme Fehler dabei gemacht. 

Dumm sind in meiner Definition Fehler, bei denen man es eigentlich besser gewusst hätte. Vermeidbar sind Fehler, wo eine einfache Nachfrage das Verständnis der Aufgabe geschärft hätte. Unnötig sind Fehler, bei denen man einen Teil der Aufgabenstellung vergessen hat. Und obwohl alle diese Fehler in meiner Klausur vorkamen, bin ich mit dem Gesamtergebnis mehr als zufrieden. Der Unterricht war durch die Bank zielorientiert und zielführend. Wer aufpasst, mitmacht und Fragen stellt kann ohne Extra-Einheiten gut mitkommen.

SQL als Sprache ist so konzipiert, dass es umgangsprachlichem Englisch ähnelt, insofern sind die Schlüsselwörter alle einleuchtend und schnell zu lernen. Blöd ist nur, dass wir tatsächlich etwas langsam vorankommen, sodass wir uns hauptsächlich mit Abfragen beschäftigen, und andere Aspekte ziemlich knapp ausfallen. Wichtige Themen wie Transaktionsrechte etc wurden sogar nur über ein - nicht mehr prüfungsrelevantes - Gruppenarbeitsreferat vermittelt. Die Gruppenarbeit wiederum fand ich wenig befriedigend - zeitlich knapp, ungenügend angeleitet, unklar in der Zielsetzung. Außerdem war ich wirklich unzufrieden mit unserer Präsentation. Das war ein gruppendynamisches Fiasko, denn der Großteil meiner Gruppe sah keinen Sinn darin, "richtig" zu präsentieren - also mit Folien, Visualisierung oder ähnlichem - und die Ansage, was gewünscht war, war mir zu unklar, sonst hätte ich mich als Gruppenleiterin vielleicht besser durchgesetzt. Nun ja. Nächstes Mal. 
Eigentlich läuft alles gut. Ich bin mehr und mehr überzeugt, mich wirklich ganz richtig entschieden zu haben. Ich frage mich tatsächlich, warum ich diese Umschulung nicht schon viel früher angefangen habe. Aber das ist müßig. Jetzt fühle ich mich - allen privaten Sorgen zum Trotz - endlich wieder auf dem richtigen Weg. Überrascht bin ich, dass ich SQL mit der Kommandozeile leichter zu programmieren fand, als mit der IDE (XAMPP). Die Dokumentation der Übungen ist allerdings ziemlich aufwendig, mit Copy-Paste in CodeWriter. Und das Skript ist wirklich wirklich suboptimal. Aber ich komme gut klar.

Das geht nicht allen so, und so kam es zu Extra-Lerngruppen am Samstag. Der inzwischen eingeführte Gruppenchat bewährt sich für kurze Fragen, Vertiefungslinks und Lerngruppenorganisation. Ich beginne, für fehlende Mitschüler dort stichwortartig mitzuschreiben - davon habe ich ja selbst auch etwas, vielleicht sogar am meisten. Dennoch, die Stimmung droht bei einigen zu kippen, als ein besonders ungeduldig-unterforderter Mitschüler zunehmend unruhig wird. Nebenher Computerspiele zu spielen ist ja ein Ding, aber laut nach Schwertern gegen Zombies zu rufen? Tut das not? 

Ich muss  zudem noch den Stoff des letzten Moduls aufholen und zögere etwas, ob und wie ich die verpasste Klausur nachholen kann. Ehrgeiz siegt: den Theorieteil schreibe ich am ersten Freitag nach, während der Rest der Klasse einem Firmenfortbildungsvortrag lauscht, den Praxisteil mit Programmieraufgaben eine Woche später am Donnerstag, während der Gruppenarbeitszeit. Dabei nutze ich die Zeit komplett aus, brauche länger als der Trainer und ich selbst erwartet haben. Mein Verdacht: es war zu leicht, ich habe zu kompliziert gedacht. Immerhin, irgendwann platzten alle Knoten, alle programmierten Aufgaben brachten das erwünschte Ergebnis und liefen sogar - das wäre nicht einmal nötig gewesen, man hätte wohl auch Punkte für den Ansatz erhalten. 

Insgesamt ist das Modul dadurch für mich aber dicht, und ich komme nicht dazu, zusätzliche Lerneinheiten einzulegen. Ich will schließlich auch noch Zeit mit Junior verbringen, der in den wenigen Nachmittagsstunden zwischen Heimkehr und Abendessen/Bettgehen volle Aufmerksamkeit verlangt und verdient.

Ich freue mich aber, dass zunehmend Mitschüler mit meinen Quizlet-Karten arbeiten, zumal ich so Feedback dazu erhalte, Fehlerlein entdecke und einen Grund habe, dran zu bleiben. Spätestens bei der Wiederholung in anderthalb Jahren wird sich das echt auszahlen. Gerade die nicht-Muttersprachler sind dankbar, da  der Trainer sehr schnell spricht, eine etwas idiosynkratische Ausdrucksweise hat und es aufgrund der Dichte der Fachbegriffe für sie noch schwerer ist zu folgen als für mich. Win-Win!
Die Klausur jedenfalls war auf diese Weise gut zu meistern. Wir wurden gut vorbereitet, die Rahmenbedingungen der Prüfung waren klar kommuniziert worden. Die Gruppeneinheit am Vortag der Prüfung öffnet mir die Augen über ein Thema, das ich bis dato nicht ganz richtig verstanden hatte - gerade rechtzeitig, sehr hilfreich. Am Tag selbst gab es gab ein paar irreführend formulierte Richtig-Falsch-Fragen, aber keine absichtlichen Fallstricke. Aber in der Klasse weicht die erste Aufbruchstimmung, das Grummeln wird lauter, Anymositäten treten zutage. Man darf auf weitere Entwicklungen gespannt sein.

Themen:
Datenbanksysteme, Anforderungen, Anomalien, Normalisierung nach Codd, 1. Normalform, 2. Normalform, 3. Normalform. Funktionale Abhängigkeiten. Primär- und Fremdschlüsselbeziehungen, Kardinalitäten, Grafische Darstellung von Tabellenbeziehungen. Datenintegrität. Semantische Integrität. Deklarative und prozedurale Integrität. Referential Actions. Installation und Konfiguration einer Datenbankumgebung. Datenmodellierung. Konzeptionelle Datenbankmodelle. Entity-Relationship Modelle, Chen-Notation, Bachmann-Notation, Krähenfußnotation. Entwicklung von SQL. DDL, DML (DQL) und DCL. SELECT-Klauseln. Verbindung von Tabellen.

Nur als Gruppenarbeit/Referatsergebnis, und daher noch nachzuarbeiten:
Schlüsselfelder und Indices, Sichten, Zugriffsrechte und Benutzerverwaltung, Transaktionsverwaltung, Schnitt-,Differenz- und Vereinigungsmengen, Theta-Join und Self-Join.