SQL Murder Mystery

Os jogos salvos ficam apenas neste navegador.

Sobre o jogo

SQL Murder Mystery é uma história de detetive que você resolve escrevendo consultas a um banco de dados. Um assassinato aconteceu em SQL City em 15 de janeiro de 2018. A polícia tem um banco com relatórios de cena de crime, entrevistas de testemunhas, carteiras de motorista, entradas numa academia, presença em eventos e dados de renda, e mais nada. Você começa achando o relatório da cena do crime, e cada resposta que lê aponta para a próxima tabela a vasculhar, até poder dizer o nome do assassino.

O jogo funciona como aula e como quebra-cabeça. Iniciantes podem abrir o walkthrough, que apresenta SELECT, WHERE, LIKE, JOIN e mais algumas peças do SQL, só o bastante para fechar o caso, com exercícios curtos no caminho. Quem já sabe SQL pode pular e começar só com a primeira pista. Quando achar que sabe quem foi, um exercício no fim confere a sua resposta. O jogo e os textos estão em inglês.

Jogando aqui

Clique em Play e a primeira página abre. Cada caixa de fundo colorido é um pequeno editor de SQL ligado ao banco do caso, que roda inteiro no seu navegador (o banco é um arquivo SQLite e as consultas são executadas pelo sql.js, então nada é enviado a lugar nenhum). Edite a consulta, aperte Run e as linhas aparecem embaixo; o banco é o mesmo para todas as caixas da página, então o que você descobre num exercício vale no seguinte. Um link na primeira página mostra o diagrama de todas as tabelas, que vale deixar à mão.

A caixa de solução no fim deixa você inserir sua resposta numa tabela e ler de volta se estava certa. Recarregue a página para voltar às consultas de exemplo.

Controles

Entrada Ação
Teclado escrever SQL nas caixas de edição
Botão Run executar a consulta daquela caixa
Botão Reset restaurar a consulta de exemplo da caixa
Links no texto ir entre a página principal e o walkthrough, mostrar o diagrama do esquema

Algumas coisas que vale saber

Comece pelo relatório. O texto dá a data, o tipo de crime e a cidade; a tabela crime_scene_report é onde você começa, e ela diz onde olhar em seguida.

Leia as transcrições. As entrevistas com testemunhas são longas, e os detalhes que importam estão escondidos nas frases. Buscar texto com LIKE ajuda.

Use o diagrama. Muitas tabelas se ligam por ids; fazer JOIN entre elas é como você vai de um nome a uma placa de carro ou a uma carteirinha da academia.

Confira e depois aprofunde. O primeiro nome que você achar pode não ser o fim da história. A caixa de conferência no fim diz se você acertou, e o walkthrough percorre o caso inteiro passo a passo se você travar.

Créditos e licença

SQL Murder Mystery foi criado por Joon Park e Cathy He quando eram bolsistas do Knight Lab da Northwestern University, e adaptado para a web por Joe Germuska; foi inspirado pelo mistério de assassinato de linha de comando de Terminal City. O código é distribuído sob a licença MIT, e o texto, o banco de dados e o diagrama sob a licença Creative Commons Attribution-ShareAlike 4.0, como declarado no README do repositório no GitHub. A página contém ainda CodeMirror, lodash e sql.js (licença MIT, com o SQLite em domínio público) e os componentes de exercício de SQL de Zi Chong Kao, liberados em domínio público. Mudamos as páginas: o cabeçalho e o rodapé do Knight Lab, a ilustração do detetive (de um site de imagens, sem licença aberta), o rastreamento, as tags de redes sociais e as fontes carregadas de outros sites foram removidos, e o estilo é nosso, de modo que nada é pedido a outros sites. Os textos das licenças estão linkados nesta página.