SQL Noir – SQL lernen durch das Lösen von Kriminalfällen
(sqlnoir.com)- SQLNoir ist ein storybasiertes SQL-Lernspiel, bei dem man Fallakten öffnet und Datenbanken abfragt, um Hinweise zu finden
- Jeder Fall bietet ein Briefing, ein Datenbankschema und einen integrierten SQL-Editor, damit man per Query Verdächtige und Hinweise prüfen kann
- Praxisnahe SQL-Muster wie Filtern, Joins, Aggregationen und Subqueries lassen sich im Verlauf der Falllösung wiederholt trainieren
- Man kann ohne separate Installation oder Einrichtung loslegen und den Fortschritt über XP und die Zahl gelöster Fälle verfolgen
- Einsteigerfälle behandeln die Grundlagen, fortgeschrittene Fälle verlangen hierarchische Joins und knifflige Bedingungen und eignen sich damit für Entwickler, Datenanalysten, Studierende und Lehrende
SQL durch das Lösen von Fällen lernen
- SQLNoir versetzt Nutzer in eine storygetriebene Ermittlung und liefert dazu Fallbriefing und Datenbankschema
- Im integrierten Editor führen Nutzer SQL-Queries aus, verknüpfen Tabellen, schließen Verdächtige aus und überprüfen Alibis
- Die im Fallverlauf geübten SQL-Muster sind:
- Filtern
- Joins
- Aggregationen
- Subqueries
- Ohne separate Installation oder Konfiguration kann man die Fallakte öffnen und sofort Daten untersuchen
Fortschritt und Zielgruppen
- XP und die Zahl gelöster Fälle zeigen den Lernfortschritt
- Einsteigerfälle sind darauf ausgelegt, SQL-Grundlagen zu vermitteln, während fortgeschrittene Fälle hierarchische Joins und schwierigere Bedingungen verlangen
- Geeignet für folgende Nutzer:
- Entwickler, die SQL-Grundlagen und Joins praktisch üben möchten
- Datenanalysten, die sich mit realistischen Query-Szenarien auf Interviews vorbereiten
- Studierende, die mit Geschichten und sofortigem Feedback schneller lernen als mit trockenen Lehrmaterialien
- Lehrende, die nach SQL-Übungsaufgaben suchen, die von Lernenden keine Umgebungseinrichtung verlangen
1 Kommentare
Meinungen auf Hacker News
Macht Spaß und gefällt mir.
Ein paar Ergänzungen: Beim ersten Fall ist beim Submit-Eingabefeld nicht klar, ob man den Namen oder die Verdächtigen-ID eingeben soll.
Es wäre schön, wenn es bei den Ausgaben einen Button „In Notizen kopieren“ gäbe, außerdem Dokumentation dazu, welche Funktionen verfügbar sind bzw. welcher SQL-Dialekt verwendet wird.
Es ist viel einfacher, beim tatsächlichen Lösen kleiner Projekte zu lernen; das wirkt daher wie ein ziemlich wertvoller Ansatz.
Als Nutzer habe ich mir, weil es ein Detektivspiel ist, selbstverständlich erschlossen, dass der Name des „Verdächtigen“ erwartet wird.
Wirklich unterhaltsam.
Als kleine Verbesserung wäre es schön, wenn man die SQLite-Datenbank direkt herunterladen könnte, um sie in der bevorzugten App abzufragen, während die Website nur für Briefing, Notizen und Einreichung dient.
Außerdem bräuchte es für „SQL lernen“ wohl etwas mehr Anleitung oder Beispielabfragen.
In der jetzigen Form wirkt es so, als könne man völlig den Faden verlieren, wenn man SQL nicht kennt; es ist zwar ein cooles Tool, passt aber als Lernwerkzeug noch nicht ganz.
Eine gute Ergänzung in einem Bereich, in dem es nicht viele Optionen gibt.
Mir fallen SQL Island (https://sql-island.informatik.uni-kl.de) und SQL Murder Mystery (https://mystery.knightlab.com) ein; der Ansatz von SQL Noir ist eher wie Letzteres, ein nicht angeleitetes, eigenständiges Abenteuer.
Ich arbeite an SQLab, einer SQL-Game-Engine, mit der man angeleitete eigenständige Abenteuer erstellen kann, indem man Übungsaufgaben an eine beliebige zugrunde liegende Datenbank anhängt: https://github.com/laowantong/sqlab
Man kann einen Datenbank-Dump herunterladen und derzeit mit beliebigen Admin-Interfaces in MySQL, SQLite und Postgres spielen.
Auf derselben Seite gibt es auch einen Link zu einer langen polizeilichen Ermittlung, die für französische Studierende entworfen wurde; wenn man Lehrkraft oder Forschender ist, wird das Prinzip von SQLab hier erklärt: https://arxiv.org/abs/2410.16120
Auch die anderen hier geposteten Projekte sind gut.
Ich ergänze noch meine Projekte SQL Game Console und SQL Game Editor, mit denen Studierende im Browser ihre eigenen SQL-Escape-Games bauen können: https://eskuel.de
Es hat Spaß gemacht, das im Unterricht auszuprobieren; derzeit wird nur Deutsch unterstützt.
Beispielspiel: https://eskuel.de/zoo/
Erinnert mich an MathNet, das ich als Kind gesehen habe.
Eine pädagogische Polizeiserie im Stil von Dragnet, in der zwei Ermittler Taschenrechner wie Pistolenholster trugen.
https://en.m.wikipedia.org/wiki/Mathnet
https://youtu.be/vNhBq3kjq_Q?t=2011
Gefällt mir; der Stil ist eigenständig und cool.
Es wirkt wie der Anfang einer unterhaltsamen Art, SQL zu lernen, zu üben und wieder aufzufrischen.
Ein Punkt: Ein einziger Arbeitsbereich ohne Tabs wäre schön. Man wechselt ständig zwischen Tabs hin und her.
Es wäre gut, frühere SQL-Abfragen und Ergebnisse speichern zu können; im Moment kopiere ich die Ergebnisse in die Notizen.
Je komplexer es wird, desto wichtiger dürfte diese Funktion werden.
Ich habe gerade eine Nebeneinander-Ansicht implementiert, sodass man zwei Tabs gleichzeitig sehen kann; hoffe, das hilft.
Wie andere Nutzer vorgeschlagen haben, kann man Abfragen auch in den Notizen speichern oder sie im Editor auskommentieren.
Jetzt fehlt nur noch der Hut, und ein paarmal „Nur die Fakten, Ma’am“, dann ist es perfekt.
Die Idee ist gut, aber UI-Immersion gibt es kaum.
Für mehr Immersion bräuchte es Autovervollständigung, eine Möglichkeit, auf breiten Bildschirmen Schema und Abfrage nebeneinander zu sehen, sowie eine einfache Möglichkeit, Tabellen- und Spaltennamen mit einem Klick zu kopieren.
Insbesondere Tabellennamen lassen sich nicht einmal markieren.
Statt bereits ausgeführte Abfragen nur überschreiben zu können, wäre es schön, wenn man ober- oder unterhalb der ausgeführten Abfrage fortlaufend neue Abfragen hinzufügen könnte.
Sie verringert die Immersion und nimmt einem auch Teile dessen ab, worauf man selbst kommen sollte.
Vielleicht wäre es in New Game Plus okay, sie einzuschalten.
Ich habe gerade eine Side by Side View implementiert, mit der man zwei verschiedene Tabs gleichzeitig öffnen kann, sowie einen Button zum Kopieren von Tabellennamen.
command-/Codeblöcke auskommentieren könnte.Wirklich gute Idee, und es hat Spaß gemacht, den Fall zu lösen.
Für Junior-Programmierer könnte eine Comic-Version hilfreich sein.
Der SQL-Editor verhält sich manchmal merkwürdig, sodass man nicht korrekt schreiben kann.
Wenn man im Editor Kommentare hinzufügen will, verhält er sich seltsam.
Reproduzieren lässt es sich, indem man mehrere Zeilen schreibt und dann jede Zeile einzeln mit
--am Zeilenanfang auskommentiert.Wenn man zum Beispiel
select i.*, s.*,from interviews i,join suspects s,on s.id = i.suspect_idschreibt und dann auch vorfrom interviews iein--setzt, springt diese Zeile in die vorherige Zeile und das Syntax-Highlighting geht kaputt.Ich glaube, ich habe diesen Bug gerade behoben.
Ich erinnere mich, dass uns ein Dozent an der Uni ein ähnliches Mini-Game zum Lösen eines Verbrechens für SQL-Übungen verlinkt hatte.
Ich war ziemlich vertieft und bin sogar so weit gegangen, die effizienteste Ein-Zeilen-Lösung finden zu wollen.
Danke fürs Bauen; ich werde es wohl Leuten weitergeben, die SQL lernen wollen.
Ziemlich unterhaltsam; ich habe die zwei kostenlosen Rätsel gespielt, und das Lösen hat Spaß gemacht.
Ein kleiner Wermutstropfen: Es wäre schön, wenn der SQL-Editor Kommentare unterstützen würde.
Wenn man alte Abfragen auskommentieren könnte, bevor man eine neue ausführt, um eine Historie zu behalten, wäre das praktisch – besonders, wenn man dieselbe Abfrage später erneut ausführen muss.
--auskommentieren können.Wenn das nicht funktioniert, ist es ein Bug, den ich mir ansehen werde.
Zum Speichern alter Abfragen und Entdeckungen kann man auch den Notes-Tab verwenden.