Fiftyville
Escreva consultas SQL para resolver um mistério.
Um Mistério em Fiftyville
O Pato CS50 foi roubado! A cidade de Fiftyville chamou você para resolver o mistério do pato roubado. As autoridades acreditam que o ladrão roubou o pato e, logo em seguida, partiu da cidade com a ajuda de um cúmplice. Seu objetivo é identificar:
- Quem é o ladrão,
- Para qual cidade o ladrão escapou, e
- Quem é o cúmplice do ladrão que o ajudou a escapar
Tudo o que você sabe é que o roubo aconteceu em 28 de julho de 2021 e que ele ocorreu na Rua Humphrey.
Como você vai resolver esse mistério? As autoridades de Fiftyville pegaram alguns registros da cidade em torno do momento do roubo e prepararam um banco de dados SQLite para você, fiftyville.db
, que contém tabelas de dados da cidade. Você pode consultar essa tabela usando consultas SQL SELECT
para acessar os dados de seu interesse. Usando apenas as informações no banco de dados, sua tarefa é resolver o mistério.
Começando
Acesse code.cs50.io, clique na janela do seu terminal e execute cd
sozinho. Você deve encontrar que o prompt da janela do seu terminal se assemelha ao abaixo:
$
Depois execute
wget https://cdn.cs50.net/2022/fall/psets/7/fiftyville.zip
para baixar um arquivo ZIP chamado fiftyville.zip
para o seu espaço de código.
Em seguida, execute
unzip fiftyville.zip
para criar uma pasta chamada fiftyville
. Você não precisa mais do arquivo ZIP, então pode executar
rm fiftyville.zip
e responda com "y" seguido de Enter no prompt para remover o arquivo ZIP que você baixou.
Agora digite
cd fiftyville
seguido de Enter para se mover para dentro (ou seja, abrir) esse diretório. Seu prompt agora deve se parecer com o abaixo.
fiftyville/ $
Execute ls
sozinho e você deverá ver alguns arquivos:
answers.txt fiftyville.db log.sql
Se você encontrar algum problema, siga essas mesmas etapas novamente e veja se pode determinar onde você errou!
Especificação
Para este problema, tão importante quanto resolver o próprio mistério é o processo que você utiliza para resolvê-lo. No arquivo log.sql
, mantenha um registro de todas as consultas SQL que você executar no banco de dados. Acima de cada consulta, rotule cada uma com um comentário (em SQL, comentários são quaisquer linhas que começam com --
) descrevendo por que você está executando a consulta e/ou que informações você espera obter com essa consulta específica. Você pode usar comentários no arquivo de log para adicionar notas adicionais sobre seu processo de pensamento ao resolver o mistério: em última análise, esse arquivo deve servir como evidência do processo que você usou para identificar o ladrão!
Ao escrever suas consultas, você pode perceber que algumas delas podem se tornar bastante complexas. Para ajudar a manter suas consultas legíveis, consulte os princípios de bom estilo em sqlstyle.guide. A seção de indentação pode ser especialmente útil!
Assim que você resolver o mistério, preencha cada uma das linhas em answers.txt
com o nome do ladrão, a cidade para a qual o ladrão escapou e o nome do cúmplice do ladrão que o ajudou a fugir da cidade. (Certifique-se de não alterar nenhum texto existente no arquivo ou adicionar outras linhas ao arquivo!)
No final, você deve enviar tanto o arquivo log.sql
quanto o arquivo answers.txt
.
Dicas
- Execute
sqlite3 fiftyville.db
para começar a executar consultas no banco de dados.- Ao executar o comando
sqlite3
, ao executar.tables
, será listada todas as tabelas do banco de dados. - Ao executar o comando
sqlite3
, ao executar.schema TABLE_NAME
, ondeTABLE_NAME
é o nome de uma tabela do banco de dados, será exibido o comandoCREATE TABLE
usado para criar a tabela. Isso pode ser útil para saber quais colunas consultar!
- Ao executar o comando
- Pode ser útil começar com a tabela
crime_scene_reports
. Comece procurando um relatório de cena do crime que corresponda à data e ao local do crime. - Consulte este guia de palavras-chave SQL para obter algumas sintaxes SQL que podem ser úteis!
Testando
Execute o código abaixo para avaliar a correção do seu código usando check50
.
check50 cs50/problems/2023/x/fiftyville
Como enviar
No seu terminal, execute o comando abaixo para enviar o seu trabalho.
submit50 cs50/problems/2023/x/fiftyville
Agradecimentos
Inspirado por outro caso em SQL City.