2 pontos por GN⁺ 2025-02-14 | 1 comentários | Compartilhar no WhatsApp
  • SQLNoir é um jogo de aprendizado de SQL baseado em histórias em que você abre arquivos de casos e consulta o banco de dados para encontrar pistas
  • Cada caso oferece um briefing, um esquema de banco de dados e um editor SQL integrado, permitindo verificar suspeitos e pistas por meio de queries
  • É possível praticar repetidamente padrões reais de SQL, como filtragem, joins, agregações e subqueries, dentro do processo de resolução dos casos
  • Você pode começar sem nenhuma instalação ou configuração de ambiente, e acompanhar o progresso por XP e pelo número de casos resolvidos
  • Casos iniciantes cobrem os fundamentos, enquanto casos avançados exigem joins hierárquicos e condições mais difíceis, atendendo a desenvolvedores, analistas de dados, estudantes e instrutores

Aprenda SQL resolvendo casos

  • SQLNoir coloca o usuário em uma investigação guiada por história e fornece um briefing do caso junto com o esquema do banco de dados
  • O usuário executa queries SQL no editor integrado, relaciona tabelas, elimina suspeitos e verifica álibis
  • Os padrões de SQL praticados dentro do fluxo do caso incluem:
    • Filtragem
    • Joins
    • Agregações
    • Subqueries
  • Sem instalação ou configuração separada, é possível abrir um arquivo de caso e começar a investigar os dados imediatamente

Progresso e público-alvo

  • XP e o número de casos resolvidos mostram o progresso
  • Casos iniciantes são estruturados para ensinar os fundamentos de SQL, enquanto casos avançados exigem joins hierárquicos e condições mais complexas
  • É adequado para:
    • Desenvolvedores que querem praticar fundamentos de SQL e joins na mão
    • Analistas de dados se preparando para entrevistas com cenários realistas de queries
    • Estudantes que aprendem mais rápido com histórias e feedback imediato do que com materiais didáticos secos
    • Instrutores que procuram exercícios de SQL que não exijam configuração de ambiente dos alunos

1 comentários

 
GN⁺ 2025-02-14
Opiniões no Hacker News
  • Divertido, gostei
    Para acrescentar algumas coisas: no primeiro caso, o campo de envio não deixa claro se é para inserir o nome ou o ID do suspeito
    Seria bom ter um botão “copiar para as notas” nos resultados, e também alguma documentação sobre quais funções estão disponíveis ou qual dialeto de SQL é usado
    É muito mais fácil aprender resolvendo pequenos projetos de verdade, então parece uma abordagem bem valiosa

    • Parece ter sido implementado de forma genérica, e o que precisava ser enviado estava escrito na seção Objectives
      Como usuário, por ser um jogo de detetive, presumi naturalmente que queriam o nome do “suspeito”
  • Muito divertido
    Como pequena melhoria, seria bom poder baixar diretamente o banco de dados SQLite para consultar no app de preferência, deixando o site apenas para briefing, notas e envio
    Além disso, para algo voltado a “aprender SQL”, acho que precisaria de um pouco mais de orientação ou exemplos de consultas
    No estado atual, se a pessoa não sabe SQL, parece fácil ficar completamente perdida sobre o que fazer; é uma ferramenta legal, mas ainda não se encaixa muito bem como ferramenta de aprendizado

  • Uma boa adição a uma área que não tem muitas opções
    O que me vem à mente são SQL Island (https://sql-island.informatik.uni-kl.de) e SQL Murder Mystery (https://mystery.knightlab.com); a abordagem do SQL Noir é mais próxima do segundo, uma aventura independente não guiada
    Estou criando o SQLab, um motor de jogo SQL que permite adicionar exercícios a um banco de dados-base arbitrário para criar aventuras independentes guiadas: https://github.com/laowantong/sqlab
    Dá para baixar dumps de banco de dados e jogar atualmente em MySQL, SQLite e Postgres, usando qualquer interface administrativa
    Na mesma página também há um link para uma longa investigação policial criada para estudantes franceses; se você é professor ou pesquisador, os princípios do SQLab estão explicados aqui: https://arxiv.org/abs/2410.16120

  • Me fez lembrar de MathNet, que eu via quando era criança
    Era uma série educativa de investigação policial no estilo Dragnet, em que os dois investigadores carregavam calculadoras como se fossem coldres
    https://en.m.wikipedia.org/wiki/Mathnet

  • Gostei; o estilo é distinto e bacana
    Parece o começo de uma forma divertida de aprender, praticar e relembrar SQL
    Algumas coisas: seria bom ter um único espaço de trabalho, sem abas. Fico alternando entre abas o tempo todo
    Seria bom poder salvar consultas SQL anteriores e seus resultados; no momento eu estava copiando os resultados para as notas
    À medida que ficar mais complexo, esse recurso deve se tornar importante

    • Boa observação
      Acabei de implementar a visualização lado a lado, permitindo ver 2 abas ao mesmo tempo; espero que ajude
      Como outros usuários sugeriram, também dá para salvar consultas nas notas ou deixá-las comentadas no editor
    • Toda vez que eu copiava consultas e resultados para a seção de notas, imaginava a mim mesmo anotando em um bloquinho na cena do crime
      Só falta o chapéu e dizer algumas vezes “Só os fatos, senhora” para completar
  • A ideia é boa, mas a imersão da UI é quase inexistente
    Para aumentar a imersão, precisa de autocomplete, da capacidade de ver o schema e a consulta juntos em telas largas, e de copiar facilmente nomes de tabelas e colunas com um clique
    Em especial, os nomes de tabelas nem sequer podem ser selecionados
    Em vez de permitir apenas sobrescrever uma consulta já executada, seria bom poder continuar adicionando novas consultas acima ou abaixo das consultas executadas

    • Concordo com a maior parte, mas acho que autocomplete deveria ser um recurso oculto ou desativado por padrão
      Ele reduz a imersão e também diminui a parte em que você precisa lembrar por conta própria
      Talvez fizesse sentido ativá-lo em um new game plus
    • Obrigado pelas sugestões
      Acabei de implementar uma visualização Side by Side para abrir duas abas diferentes ao mesmo tempo, e um botão para copiar nomes de tabelas
    • Seria muito útil poder comentar blocos de código com command-/
  • Ideia muito boa, e foi divertido resolver o caso
    Para programadores júnior, talvez uma versão em quadrinhos ajudasse
    Às vezes o editor SQL se comporta de forma estranha e impede escrever corretamente

  • Ao tentar adicionar comentários no editor, ele se comporta de forma estranha
    A forma de reproduzir é escrever várias linhas e depois comentar uma linha por vez adicionando -- antes de cada uma
    Por exemplo, escreva select i.*, s.*, from interviews i, join suspects s, on s.id = i.suspect_id; então, no momento em que você também coloca -- antes de from interviews i, essa linha se move para a linha anterior e o realce de sintaxe quebra

    • Sim
      Acho que acabei de corrigir esse bug
  • Lembro que, na época da faculdade, um instrutor nos passou o link de um minigame de resolver crimes parecido com este para praticar SQL
    Fiquei bem envolvido, a ponto de tentar encontrar a solução de uma linha mais eficiente
    Obrigado por criar isso; acho que vou repassar para pessoas que queiram aprender SQL

  • Bem divertido; resolvi os dois mistérios gratuitos e foi satisfatório chegar à solução
    Uma pequena ressalva é que seria bom se o editor SQL tivesse suporte a comentários
    Se eu pudesse comentar consultas antigas antes de executar uma nova, deixando um histórico, seria conveniente, especialmente quando preciso rodar a mesma consulta de novo

    • Deveria ser possível comentar linhas de consulta colocando --
      Se não funcionar, é um bug, então vou investigar
      Você também pode usar a aba Notes para salvar consultas antigas e descobertas