2 Punkte von GN⁺ 2025-02-14 | 1 Kommentare | Auf WhatsApp teilen
  • 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

 
GN⁺ 2025-02-14
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.

    • Es scheint allgemein umgesetzt zu sein, und was einzureichen ist, stand im Abschnitt Objectives.
      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

  • 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

  • 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.

    • Guter Hinweis.
      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.
    • Jedes Mal, wenn ich eine Abfrage und das Ergebnis in den Notizenbereich kopiert habe, habe ich mir vorgestellt, wie ich am Tatort Notizen in einen aufklappbaren Notizblock kritzle.
      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.

    • Ich stimme größtenteils zu, aber Autovervollständigung sollte meiner Meinung nach ein verstecktes Feature sein oder standardmäßig deaktiviert sein.
      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.
    • Danke für die Vorschläge.
      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.
    • Es wäre wirklich nützlich, wenn man mit 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_id schreibt und dann auch vor from interviews i ein -- setzt, springt diese Zeile in die vorherige Zeile und das Syntax-Highlighting geht kaputt.

    • Stimmt.
      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.

    • Man sollte Abfragezeilen mit -- 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.