2 points par GN⁺ 2025-02-14 | 1 commentaires | Partager sur WhatsApp
  • SQLNoir est un jeu d’apprentissage de SQL scénarisé où l’on ouvre des dossiers d’enquête et interroge une base de données pour trouver des indices
  • Chaque affaire fournit un briefing, un schéma de base de données et un éditeur SQL intégré, afin d’identifier suspects et indices au moyen de requêtes
  • Il permet de s’entraîner de façon répétée à des patterns SQL réels comme le filtrage, les jointures, les agrégations et les sous-requêtes, dans le cadre de la résolution d’affaires
  • On peut commencer sans installation ni configuration, et suivre sa progression grâce à l’XP et au nombre d’affaires résolues
  • Les affaires débutantes couvrent les bases, tandis que les affaires avancées exigent des jointures hiérarchiques et des conditions plus complexes, ce qui les rend adaptées aux développeurs, data analysts, étudiants et formateurs

Apprendre SQL en résolvant des affaires

  • SQLNoir plonge l’utilisateur dans une enquête centrée sur l’histoire, avec un briefing d’affaire et un schéma de base de données
  • L’utilisateur exécute des requêtes SQL dans l’éditeur intégré pour relier des tables, éliminer des suspects et vérifier des alibis
  • Les patterns SQL pratiqués au fil de l’affaire sont les suivants
    • Filtrage
    • Jointures
    • Agrégations
    • Sous-requêtes
  • Sans installation ni configuration, on peut ouvrir un dossier d’affaire et commencer immédiatement à examiner les données

Progression et public visé

  • L’XP et le nombre d’affaires résolues indiquent la progression
  • Les affaires débutantes sont conçues pour acquérir les bases de SQL, tandis que les affaires avancées exigent des jointures hiérarchiques et des conditions plus délicates
  • Convient aux profils suivants
    • Développeurs voulant pratiquer manuellement les bases de SQL et les jointures
    • Data analysts préparant des entretiens avec des scénarios de requêtes réalistes
    • Étudiants qui apprennent plus vite avec des histoires et un feedback immédiat qu’avec des manuels arides
    • Formateurs cherchant des exercices SQL qui ne demandent pas aux apprenants de configurer un environnement

1 commentaires

 
GN⁺ 2025-02-14
Avis sur Hacker News
  • Amusant, j’aime bien.
    Pour ajouter quelques remarques : dans la première affaire, le champ de saisie submit ne précise pas clairement s’il faut entrer un nom ou l’ID du suspect.
    Ce serait bien d’avoir un bouton « copier dans les notes » dans les résultats, ainsi qu’une documentation indiquant quelles fonctions sont disponibles et quel dialecte SQL est utilisé.
    Apprendre en résolvant réellement de petits projets est beaucoup plus facile, donc l’approche me paraît assez précieuse.

    • Il semble que ce soit implémenté de manière générique, et ce qu’il fallait soumettre était indiqué dans la section Objectives.
      En tant qu’utilisateur, comme c’est un jeu de détective, j’ai naturellement déduit qu’on attendait le nom du « suspect ».
  • Vraiment amusant.
    Petite amélioration possible : permettre de télécharger directement la base SQLite pour l’interroger avec l’application de son choix, et n’utiliser le site que pour le briefing, les notes et la soumission.
    Et pour un outil « d’apprentissage de SQL », il faudrait sans doute un peu plus de guidage ou des requêtes d’exemple.
    En l’état, si on ne connaît pas SQL, on risque d’être complètement perdu sur ce qu’il faut faire ; c’est un outil sympa, mais pas encore tout à fait adapté comme outil d’apprentissage.

  • Une bonne addition dans un domaine où il n’y a pas tant de choix.
    Ceux qui me viennent en tête sont SQL Island (https://sql-island.informatik.uni-kl.de) et SQL Murder Mystery (https://mystery.knightlab.com), et l’approche de SQL Noir ressemble davantage au second : une aventure autonome non dirigée.
    Je développe un moteur de jeu SQL, SQLab, qui permet d’ajouter des exercices à une base de données arbitraire pour créer des aventures autonomes dirigées : https://github.com/laowantong/sqlab
    On peut télécharger un dump de base de données et jouer avec n’importe quelle interface d’administration, actuellement sur MySQL, SQLite et Postgres.
    Sur la même page, il y a aussi un lien vers une longue enquête policière conçue pour des étudiants français ; et si vous êtes enseignant ou chercheur, les principes de SQLab sont expliqués ici : https://arxiv.org/abs/2410.16120

  • Ça me rappelle MathNet, que je regardais quand j’étais enfant.
    C’était une série policière éducative façon Dragnet, où deux enquêteurs portaient des calculatrices à la ceinture comme des étuis à pistolet.
    https://en.m.wikipedia.org/wiki/Mathnet

  • J’aime beaucoup, le style est original et réussi.
    Ça ressemble au début d’une façon amusante d’apprendre SQL, de s’entraîner et de se rafraîchir la mémoire.
    Parmi les améliorations possibles, ce serait bien d’avoir un espace de travail unique sans onglets. On se retrouve constamment à passer de l’un à l’autre.
    Ce serait bien aussi de pouvoir enregistrer les requêtes SQL précédentes et leurs résultats ; pour l’instant je copiais les résultats dans les notes.
    Plus les affaires deviendront complexes, plus cette fonction sera importante.

    • Bonne remarque.
      Je viens d’implémenter une vue côte à côte permettant d’afficher deux onglets en même temps ; j’espère que ça aidera.
      Comme d’autres utilisateurs l’ont suggéré, on peut aussi enregistrer les requêtes dans les notes, ou les mettre en commentaire dans l’éditeur.
    • Chaque fois que je copiais une requête et ses résultats dans la section notes, je m’imaginais en train de prendre des notes sur un carnet à spirale sur une scène de crime.
      Il ne me manque qu’un chapeau, et quelques « Les faits, rien que les faits, madame », et ce serait parfait.
  • L’idée est bonne, mais l’immersion côté UI est presque inexistante.
    Pour renforcer l’immersion, il faudrait de l’autocomplétion, la possibilité de voir le schéma et la requête ensemble sur grand écran, et un moyen simple de copier les noms de tables et de colonnes en un clic.
    Les noms de tables, en particulier, ne sont même pas sélectionnables.
    Plutôt que de ne pouvoir qu’écraser une requête déjà exécutée, ce serait bien de pouvoir continuer à ajouter de nouvelles requêtes au-dessus ou au-dessous des requêtes exécutées.

    • Je suis d’accord avec la plupart des points, mais je pense que l’autocomplétion devrait être une fonctionnalité cachée ou désactivée par défaut.
      Elle réduit l’immersion et aussi la part de réflexion qu’on doit faire soi-même.
      Ce serait peut-être acceptable de l’activer en New Game Plus.
    • Merci pour les suggestions.
      Je viens d’implémenter une vue Side by Side permettant d’ouvrir deux onglets différents en même temps, ainsi qu’un bouton pour copier les noms de tables.
    • Ce serait vraiment utile de pouvoir commenter un bloc de code avec command-/.
  • Vraiment une bonne idée, et j’ai pris plaisir à résoudre l’affaire.
    Pour des programmeurs juniors, une version manga pourrait peut-être aider.
    L’éditeur SQL se comporte parfois bizarrement et empêche d’écrire correctement.

  • Quand on essaie d’ajouter des commentaires dans l’éditeur, il se comporte bizarrement.
    Pour reproduire : écrire plusieurs lignes, puis commenter chaque ligne une par une en ajoutant -- devant.
    Par exemple, écrivez select i.*, s.*, from interviews i, join suspects s, on s.id = i.suspect_id, puis, dès que vous ajoutez aussi -- devant from interviews i, cette ligne remonte sur la ligne précédente et la coloration syntaxique se casse.

    • Exact.
      Je pense que je viens de corriger ce bug.
  • Je me souviens qu’à l’université, un enseignant nous avait donné un lien vers un mini-jeu de résolution de crime similaire pour pratiquer SQL.
    Je m’y étais vraiment plongé, au point de chercher la solution en une seule ligne la plus efficace.
    Merci de l’avoir créé ; je pense que je le partagerai avec des personnes qui veulent apprendre SQL.

  • Assez amusant ; j’ai résolu les deux mystères gratuits, et c’était satisfaisant.
    Mon petit regret, c’est que l’éditeur SQL devrait prendre en charge les commentaires.
    Commenter les anciennes requêtes avant d’en exécuter une nouvelle permettrait de garder un historique, ce qui serait pratique, surtout quand il faut relancer la même requête.

    • On devrait pouvoir commenter des lignes de requête en ajoutant --.
      Si ça ne marche pas, c’est un bug et je vais regarder.
      On peut aussi utiliser l’onglet Notes pour enregistrer les anciennes requêtes et ce qu’on a découvert.