Eine echte PostgreSQL-Datenbank pro Lernende — im Browser, ohne Installation auf einem einzigen Gerät. Du verteilst Zettel, die Klasse tippt SQL.
Kurz: eine echte Datenbank pro Kopf, ohne dass jemand etwas installieren muss.
Die klassische SQL-Lektion beginnt damit, dass 22 Laptops eine Datenbank installieren sollen und 22-mal etwas anderes schiefgeht. Datebänkli nimmt diesen Teil weg. Jede Lernende bekommt ein eigenes Konto in einem PostgreSQL-Server, der bereits läuft — mit einem eigenen Bereich darin, in dem sie tun und lassen kann, was SQL erlaubt. Gebraucht werden ein Browser und ein Zettel mit Benutzername und Passwort.
Wichtig ist das Wort echt: Das ist kein Simulator und kein Übungswerkzeug mit eingebauter Aufgabensammlung. Es ist PostgreSQL. Was in der Lektion funktioniert, funktioniert später auch anderswo — und was nicht funktioniert, meldet dieselbe Fehlermeldung wie überall sonst.
Für Lehrpersonen, die Datenbanken unterrichten und dabei nicht auch noch Datenbankadministratorin sein wollen. Du musst nichts über Rollen, Schemas oder Berechtigungen wissen — das erledigt die App beim Anlegen einer Klasse. Was du wissen musst, steht in Abschnitt 12, und es ist eine knappe Seite.
Keine automatische Korrektur: Übungen verteilen und Abgaben einsammeln kannst du (Abschnitt 10), aber ob eine Lösung stimmt, entscheidest du beim Lesen — es gibt keine Musterlösung, keine Punkte und kein «richtig/falsch» aus der App. Kein Notenprogramm. Kein Ersatz für ein Datenbankwerkzeug wie pgAdmin — das kann viel mehr und ist für eine erste Lektion viel zu viel. Und es ist keine Ablage für Daten, die wirklich schützenswert sind: Was in einer Lernendendatenbank landet, ist Übungsmaterial.
Damit klar ist, was einmalig ist und was in jeder Lektion passiert.
Grün = einmal pro Klasse. Orange = jede Lektion.
Der Server trennt, nicht die App. Jede Lernende ist gegenüber PostgreSQL eine eigene Benutzerin mit eigenem Bereich. Fremde Tabellen zu lesen scheitert an der Datenbank selbst — auch dann, wenn jemand kreativ wird.
Ein Passwort existiert genau einmal. Im Moment, in dem das Konto entsteht. Danach lässt es sich nur neu ausstellen, nicht nachschlagen (Abschnitt 6).
Nichts wird automatisch gelöscht. Arbeit bleibt liegen, bis sie jemand bewusst wegräumt.
Es gibt keine Selbstregistrierung — Lehrpersonenkonten werden von Hand angelegt.
Schreib eine Mail an philip.schaffner@kwi.ch mit deinem Namen und deiner Schule. Zurück kommt ein Zugangszettel derselben Sorte, die du gleich an deine Klasse verteilst: Adresse, Benutzername, Startpasswort. Als Lehrperson musst du das Passwort bei der ersten Anmeldung ändern — die App führt dich dorthin, bevor sie irgendetwas anderes zeigt.
Die Adresse lautet datebaenkli.schaffner.xyz. Sie steht auch auf jedem Zettel, den du druckst.
Auf der Anmeldeseite stehen unter dem Formular zwei Knöpfe: Als Schüler:in und Als Lehrperson. Ein Klick darauf öffnet sofort einen fertigen Zugang — es gibt nichts abzutippen, weder Benutzername noch Passwort, und niemand muss vorher eine Mail schreiben. Wer wissen will, ob sich das Werkzeug für die eigene Klasse eignet, schaut so in vier Minuten nach.
Es ist ein Zugang zum Wegwerfen. Nach 30 Minuten ist Schluss, und diese Zeit lässt sich nicht verlängern; unten links läuft sie mit, daneben steht Beenden, falls du früher fertig bist. Danach wird alles gelöscht, was in dieser halben Stunde entstanden ist — die nächste Person, die den Knopf drückt, beginnt in einem leeren Bereich. Nimm also nichts hinein, was du behalten willst, und nichts, was niemanden angeht.
Der Lehrpersonen-Zugang bringt eine Klasse mit einigen Lernenden bereits mit, damit Klassenliste und Lektionsansicht etwas zu zeigen haben. Neue Klassen und neue Lernende lassen sich darin nicht anlegen — du siehst die Masken, aber angelegt wird nichts. Dafür braucht es ein richtiges Konto, und das gibt es auf dem Weg oben.
t_brunner — dieselbe Zeichenkette, die später in SQL auftaucht. Für Lernende ist er nach demselben Muster gebaut: u_i3a_buehler_nino.Nach dem Anmelden landest du auf der Übersicht. Sie ist bewusst karg: Sie sagt, wer du bist und welche Klassen dir gehören, und schickt dich weiter.
SELECT heisst überall SELECT.Reiter Klassen. Einmal pro Klasse und Schuljahr, dauert eine halbe Minute.
i3a. Es steckt im Benutzernamen jeder Lernenden dieser Klasse und lässt sich später nicht mehr ändern — nimm also gleich das, was auf dem Stundenplan steht.Leg für einen neuen Jahrgang eine neue Klasse an, statt die alte weiterzuverwenden. Das Kürzel ist in jedem Benutzernamen verbaut, und eine Klasse i3a mit den Lernenden von 2024 und 2026 nebeneinander ist genau die Sorte Unordnung, die man nachher nicht mehr auseinanderdividiert.
Namensliste hineinkopieren, prüfen, anlegen. Alle auf einmal.
Klick in der Klassenliste auf die Klasse. Weiter unten erscheint ihr Abschnitt und darin Lernende hinzufügen.
Meier, Anna Sophie. Das ist die einzige Regel, die man kennen muss.Aus dem Namen wird der Benutzername, und der ist zugleich der Name des Datenbankbereichs dieser Person. Er lässt sich nie ändern. Eine falsch aufgeteilte Zeile heisst also: Person löschen und neu anlegen — solange sie noch nichts gemacht hat, ist das billig, nach drei Lektionen nicht mehr. Die halbe Minute für die Vorschau lohnt sich.
Umlaute werden umgeschrieben, nicht weggeworfen: aus Nino Bühler wird u_i3a_buehler_nino, aus Deniz Öztürk u_i3a_oeztuerk_deniz.
Eine bereits erfasste Person kommt nicht ein zweites Mal in dieselbe Klasse — die Vorschau meldet das, bevor du klickst. Doppeltes Einfügen derselben Liste ist damit harmlos.
Der einzige Schritt dieses Handbuchs, bei dem Zögern etwas kostet.
Sobald die Konten entstanden sind, zeigt die App die Zugangszettel — und das ist der einzige Moment, in dem die Passwörter existieren. Gespeichert wird nur eine Prüfsumme; nachschlagen kann sie niemand, auch die Administration nicht.
Passiert: Tab geschlossen, Laptop zugeklappt, Beamer umgesteckt. Die Rettung heisst Neue Zettel in der Klassenliste und stellt neue Passwörter aus — aber nur für Personen, die sich noch nie angemeldet haben. Wer schon drin war, behält seinen Zugang; ein bereits ausgeteilter Zettel kann also nicht versehentlich entwertet werden. Genau deshalb ist der Knopf mitten in der Lektion gefahrlos zu drücken.
Lernende werden nicht dazu gezwungen — der Zettel ist der Zugang. Fünfzehnjährige in den ersten fünf Minuten der ersten Lektion ein Passwort erfinden zu lassen, kostet mehr Zeit, als es bringt. Wer trotzdem eines setzen will, findet Passwort ändern auf der Übersicht.
Was du im Verlauf des Semesters an einer Klasse tatsächlich anfasst.
Archivieren ist reversibel, Löschen nicht. Der einzige Grund zu löschen ist, dass die Daten wirklich weg sollen — und selbst dann liegt die Sicherung noch auf dem Server. Für alles andere: archivieren, und die Sache im Sommer nochmals anschauen.
Nach einem Jahr ohne Anmeldung archiviert die App ein Lernendenkonto von selbst. Der Datenbankbereich bleibt dabei vollständig erhalten; ein Klick auf Aktivieren holt die Person zurück.
Damit du es in zwei Sätzen erklären kannst, statt es vorzuführen.
Lernende haben im Wesentlichen eine einzige Seite. Links die Tabellen, oben rechts das Eingabefeld, unten rechts das Ergebnis. Es gibt nichts zu suchen und nichts einzustellen. Dazu kommt der Reiter Übungen — leer, solange du keine verteilt hast (Abschnitt 10). Deine eigene Ansicht ist dieselbe Seite — du hast ebenfalls einen Arbeitsbereich, und dort kannst du eine Lektion vorbereiten.
Das Handbuch für Lernende ist die kurze Fassung dieses Abschnitts aus ihrer Sicht: anmelden, die Seite verstehen, Fehlermeldungen lesen, Übungen abgeben. Es steckt hinter demselben ? oben rechts — bei einem Lernendenkonto führt der Knopf automatisch dorthin und nicht hierher. Du musst also nichts verteilen; es reicht, einmal zu sagen, dass es das gibt.
Es beschreibt auch die Lektionsansicht aus Abschnitt 11 — was du siehst und was nicht. Das nimmt dir die Ankündigung nicht ab, macht sie aber kürzer.
demo mit der mitgelieferten Beispieldatenbank. Ein Klick auf eine Tabelle setzt SELECT * … LIMIT 50 ins Feld und führt es aus — der schnellste Weg zu «was steht da überhaupt drin». In deinem Baum stehen zusätzlich die Bereiche deiner Lernenden; du darfst darin lesen, nicht schreiben.Der häufigste Moment einer SQL-Lektion ist der, in dem etwas nicht geht. PostgreSQL antwortet dabei präzise und auf Englisch, aber nicht unbedingt hilfreich. Datebänkli stellt eine Erklärung darüber — auf Deutsch, und wo möglich mit einem konkreten Vorschlag.
Abgedeckt sind die rund zwanzig Fehler, die im Unterricht wirklich vorkommen: Tabelle gibt es nicht, Spalte gibt es nicht, Syntaxfehler, doppelter Schlüssel, fehlender GROUP BY, Text wo eine Zahl hingehört. Alles andere zeigt die Originalmeldung ohne Erklärung.
Die offizielle PostgreSQL-Dokumentation ist englisch, aber gut und für Fortgeschrittene die richtige Adresse: das SQL-Kapitel des Tutorials und die Befehlsreferenz.
Der Weg von der Excel-Tabelle zur Datenbanktabelle. Für dich wie für die Klasse gleich.
Unter Demo-Tabellen oben: CSV importieren. Die App liest die Datei, rät die Datentypen und zeigt eine Vorschau, bevor irgendetwas entsteht.
Sie kennt den hiesigen Excel-Dialekt: Strichpunkt als Trennzeichen, 1'234.50 als Zahl, 31.12.2025 als Datum, und auch Dateien, die noch nicht in UTF-8 gespeichert sind. Datumsangaben mit Schrägstrich (03/04/2025) bleiben absichtlich Text — daraus geht nicht hervor, ob der 3. April oder der 4. März gemeint ist, und Raten wäre hier die schlechtere Antwort.
Reiter Übungen. Tabellen vorbereiten, an eine Klasse geben, Lösungen zurückbekommen.
Bis hierher hat jede Person eine leere Datenbank und die gemeinsamen Beispieldaten. Eine Übung ist das Dritte: ein Satz Tabellen, den du selbst zusammenstellst, mit einer Aufgabenstellung daneben — und jede Lernende bekommt eine eigene Kopie davon. Wer darin etwas löscht, löscht es nur bei sich.
# Überschrift, **fett**, Aufzählungen mit -, Code in schrägen Anführungszeichen (`kunden`). Rechts daneben siehst du beim Tippen, wie es bei der Klasse ankommt. Wer Markdown nicht kennt, schreibt einfach Text — das funktioniert auch.CHECK-Bedingungen. Schreib die Tabellennamen ohne Schema, also CREATE TABLE bestellungen (…); die Übung landet automatisch am richtigen Ort.Es kostet zwei Klicks und ist der einzige Weg zu merken, dass im Skript ein Komma fehlt. Sonst merkt es die Klasse — fünfundzwanzigmal gleichzeitig, mitten in der Lektion.
Unter Verteilung die Klasse wählen und Verteilen. Ab da steht die Übung bei den Lernenden im Reiter Übungen. Die Tabellen entstehen erst, wenn jemand die Übung zum ersten Mal öffnet — wer eine Woche später in die Klasse kommt, bekommt sie also ebenso.
Die Tabelle zeigt dir pro Klasse, wie viele die Übung geöffnet und wie viele abgegeben haben.
Im Reiter Übungen steht die Aufgabe; Bearbeiten führt in den Editor. Dort ist über dem Eingabefeld ein Balken mit dem Titel, der Aufgabenstellung zum Auf- und Zuklappen und drei Schaltflächen:
Im Tabellenbaum links erscheint die Übung als eigener Eintrag, beschriftet mit ihrem Titel. Ein SELECT * FROM kunden; ohne Schemaangabe meint dort die Tabelle der Übung — nicht eine gleichnamige aus der eigenen Datenbank.
Abgaben ansehen zeigt alle Abgaben der Klasse, nach Namen sortiert, mit Notiz und SQL. Alle herunterladen gibt dir eine einzelne .sql-Datei mit sämtlichen Abgaben, jede mit Name, Nummer und Zeitpunkt als Kommentar darüber — zum Durchlesen, Ausdrucken oder Ablegen. Einzelne Abgaben lassen sich auch einzeln herunterladen.
Zurückziehen nimmt die Übung aus der Klasse und löscht dabei die Übungstabellen aller Lernenden samt allen Abgaben. Das lässt sich nicht rückgängig machen, deshalb fragt die App zweimal und nennt beim zweiten Mal die Anzahl. Die eigenen Datenbanken der Lernenden sind nicht betroffen.
Wenn du eine Übung nur überarbeiten willst, musst du sie nicht zurückziehen: Änderungen an den Tabellen wirken sich auf alle aus, die die Übung danach zum ersten Mal öffnen oder zurücksetzen.
Pro Tabelle höchstens 2 MB und 20 000 Zeilen, pro Übung höchstens 20 Tabellen oder Skripte — deutlich weniger als beim gewöhnlichen CSV-Import, und zwar mit Absicht: Eine Übung wird in jede Person der Klasse kopiert und zählt bei jeder gegen die 50 MB aus Kapitel 12.
Reiter Lektion. Aktualisiert sich von selbst, solange die Seite offen ist.
Diese Seite beantwortet die Fragen, die man sonst durch Herumlaufen beantwortet: Ist die Klasse überhaupt drin? Woran arbeitet sie? Und wo hängt jemand fest, ohne sich zu melden?
WEHRE statt WHERE. Zwei rote Zeilen hintereinander sind die Aufforderung, hinzugehen.Ein Klick auf eine Zeile zeigt, was diese Person zuletzt getan hat.
Sag der Klasse, dass es diese Ansicht gibt. Sie zeigt genau das, was ohnehin an die Datenbank geschickt wurde — Befehle, keine Tastenanschläge, keine Bildschirme, nichts ausserhalb von Datebänkli. Offen angekündigt ist sie ein Werkzeug; unangekündigt entdeckt wäre sie ein Vertrauensproblem.
Die Lektionsansicht ist die einzige Seite, die man im Unterricht sinnvollerweise in der Hand hält. Auf einem Tablet passt die Tabelle vollständig aufs Bild.
Was die Datenbank von sich aus verhindert — und was du davon wissen musst.
Dieser Abschnitt ist die Antwort auf «kann da jemand etwas kaputt machen». Kurz: das eigene, ja, gerne. Alles andere nein, und zwar nicht, weil die App aufpasst, sondern weil PostgreSQL es nicht erlaubt.
| Grenze | Wert | Was das im Unterricht heisst |
|---|---|---|
| Speicher pro Person | 50 MB | Wer darüber ist, kann weiterhin lesen, aber nichts mehr schreiben. Der Ausweg ist DROP TABLE oder TRUNCATE — DELETE gibt keinen Platz frei, was für sich schon eine gute Lektion ist. |
| Dauer einer Abfrage | etwa 15–20 Sekunden | Danach wird sie gestoppt. Reicht für alles, was im Unterricht sinnvoll ist, und beendet den versehentlichen Riesen-Join von selbst. |
| Angezeigte Zeilen | 1000 | Darüber steht «die ersten 1000 von …». Die Abfrage lief trotzdem vollständig. |
| Gleichzeitige Verbindungen | 4 pro Person | Merkt niemand. Verhindert, dass eine offene Schlaufe den Server für die Klasse blockiert. |
| CSV-Import | 10 MB / 100 000 Zeilen | Grösseres wird abgelehnt, bevor irgendetwas entsteht. |
| Tabellen einer Übung | 2 MB / 20 000 Zeilen je Tabelle, 20 Tabellen je Übung | Knapper als beim gewöhnlichen Import, weil eine Übung in jede Person der Klasse kopiert wird und dort auf die 50 MB angerechnet wird. |
| Falsche Anmeldeversuche | 10 pro Konto in 15 Min. | Danach eine Zwangspause. Wer sich fünfmal vertippt, kommt trotzdem durch. |
Rollen, Schemas, Berechtigungen, Sicherungen: alles automatisch. Beim Anlegen einer Person entsteht ihr Konto und ihr Bereich, du bekommst Leserecht darauf, und beim Zurücksetzen wird dieses Leserecht korrekt neu vergeben. Du musst dafür nie ein SQL-Kommando schreiben. Falls dich der Aufbau doch interessiert, ist er in der Architekturdokumentation des Projekts beschrieben — für das Unterrichten ist er nicht nötig.
SELECT * FROM u_i3a_buehler_nino.pausenkiosk; funktioniert. Schreiben kannst du dort nicht — und andere Lehrpersonen sehen deine Klassen gar nicht.demo und tonspur dürfen gelesen, aber nicht verändert werden — der Versuch, die eigene schlechte Note dort wegzulöschen, scheitert also zuverlässig.ORDER BY nachname liefert Bühler, Küng, Rüegg an der richtigen Stelle statt hinter Zimmermann. Klingt nach einem Detail und ist die erste Abfrage, die eine Klasse ausführt.Es sind zwei Bereiche, und sie haben verschiedene Aufgaben. Beide sind für alle lesbar und für niemanden veränderbar.
demo — acht kleine Tabellen mit Schweizer Bezug: Kantone, Gemeinden, Schülerinnen, Fächer, Noten, Artikel, Bestellungen, Bestellpositionen. Sie reichen für Verbunde, Gruppierungen und Unterabfragen und sind vor allem dafür da, dass in den ersten fünf Minuten etwas auf dem Bildschirm steht.tonspur — elf Tabellen, rund 110 000 Zeilen: Künstlerinnen, Alben, Songs, Genres, Nutzerinnen, Wiedergaben, Playlists sowie Festivalpässe und deren Scans. Gedacht für eine ganze Lektionsreihe: n:m mit und ohne eigene Attribute, eine grosse Faktentabelle, ein Schlüsselkandidat, der funktioniert (benutzername) neben einem, der es nicht tut (Vor- und Nachname), und eine zweite Quelle ohne gemeinsamen Schlüssel.tonspur hat absichtlich keine Fremdschlüssel-Bedingungen, und genau eine Beziehung ist verletzt: song.album_id = 9999 zeigt auf ein Album, das es nicht gibt. Das ist der Aufhänger für referentielle Integrität — die Klasse findet die Zeile mit einem LEFT JOIN, bevor jemand REFERENCES geschrieben hat.
u_i3a_meieranna_sophie heisst.SELECT auf demo. Der eigene Bereich ist leer, und ein leerer Bildschirm ist ein schlechter Einstieg. Ein Klick auf kantone im Baum liefert sofort etwas zu sehen.DROP TABLE aus, statt sich davor zu fürchten.In der Klassenliste bei dieser Person auf Neuer Zettel. Es erscheint sofort ein neuer Zettel mit einem neuen Passwort; der alte gilt nicht mehr. Wenn gleich mehrere Zettel fehlen und die betroffenen Personen sich noch nie angemeldet haben, geht es mit einem Klick für alle auf einmal.
Solange sich niemand angemeldet hat, ist es folgenlos: Neue Zettel für n Lernende ohne erste Anmeldung stellt alle neu aus. Haben sich einzelne schon angemeldet, behalten die ihren Zugang, und der Knopf rührt sie nicht an.
Der Reihe nach: Benutzername ganz klein und mit Unterstrichen abgetippt? Passwort mit Bindestrichen, ohne Leerzeichen? Steht die Person in der Klassenliste auf aktiv, oder wurde bei ihr versehentlich Archivieren geklickt? Wenn alles stimmt: Neuer Zettel, das ist schneller als weiter zu suchen.
Abbrechen daneben stoppt sie. Passiert das nicht rechtzeitig, stoppt der Server sie nach etwa zwanzig Sekunden selbst. Danach ist alles wieder normal; es geht nichts kaputt und nichts verloren. Meist steckt ein Verbund ohne Bedingung dahinter — mehrere Tabellen im FROM, kein JOIN … ON.
Wahrscheinlich das Speicherlimit. In der Lektionsansicht steht es in der letzten Spalte. Der Ausweg ist DROP TABLE auf das, was nicht mehr gebraucht wird, oder Datenbank zurücksetzen für einen sauberen Start. DELETE hilft nicht — die Zeilen sind weg, der Platz nicht.
Das ist erlaubt, und es ist kein Notfall — jede Person kann nur ihre eigene löschen. Wiederherstellen lässt sich das nicht; der Bereich ist ein Arbeitsplatz, kein Archiv. Wer eine Arbeit behalten will, kopiert die CREATE TABLE- und INSERT-Befehle in ein Dokument. Das ist übrigens die ehrlichste Version der Lektion «warum es Sicherungen gibt».
Nein. Der Versuch endet bei PostgreSQL selbst, nicht bei einer Prüfung in der App — das ist der Unterschied, der es belastbar macht. Sichtbar ist nur, dass es andere Bereiche gibt. Die einzige Ausnahme sind zwei Personen, die sich gegenseitig freischalten; das räumt die App wieder auf und schreibt es mit.
Archivieren, wenn die Arbeit erhalten bleiben soll — das ist der Normalfall und jederzeit umkehrbar. Aus Klasse nur beim Wechsel in eine andere Klasse, und dort zuerst eintragen. Löschen nur, wenn die Daten wirklich weg sollen.
Oben rechts der Schalter DE / EN. Die Einstellung gilt pro Konto, nicht pro Gerät — sie folgt der Person also auf das nächste Gerät. Lernende können sie selbst umstellen; für eine Immersionsklasse macht das jede Person einmal für sich.
Mail an philip.schaffner@kwi.ch, du bekommst einen neuen Zugangszettel. Deine Klassen und alle Daten bleiben davon unberührt.
Aufgaben stellst du selbst — entweder auf dem Arbeitsblatt wie bisher, oder als Übung mit eigenen Tabellen und Aufgabenstellung, die jede Person als eigene Kopie bekommt (Abschnitt 10). Eine Aufgabensammlung bringt Datebänkli nicht mit. Korrigiert wird auch nichts: Die App prüft keine Lösung und vergibt keine Punkte, sie sammelt die Abgaben ein und legt sie dir zum Lesen hin. Was währenddessen passiert, siehst du in der Lektionsansicht — Befehle und Tabellen jeder Person, in Echtzeit.