Bancos de dados relacionais e consultas
ComputaçãoArquivos, armazenamento e bancos de dadosIdades 16–17
Use com a sua turma: os alunos abrem por um link ou QR code, sem precisar de conta.
Duas tabelas, STUDENTS e CLASSES, estão ligadas pela chave estrangeira ClassID, que aponta para a chave primária ClassID da tabela CLASSES. Os alunos montam uma consulta com um conjunto de seletores: qual tabela usar, se as duas tabelas serão unidas, qual é a condição de filtro, por qual coluna ordenar e quantas linhas retornar. O programa gera o comando SQL correspondente e o executa ao vivo sobre os dados, então mudar uma condição muda na hora a tabela de resultado; clicar em uma linha mostra com qual linha da outra tabela ela foi unida.
Aula: Bancos de dados relacionais: chave primária, chave estrangeira, consultas SELECT com condições, junções e ordenação
O que mostra
Um banco de dados relacional guarda os dados em tabelas formadas por registros e campos. Cada tabela tem uma chave primária, cujos valores são únicos e nunca vazios, e uma chave estrangeira em outra tabela faz referência a essa chave primária para ligar registros. Aqui a tabela STUDENTS (alunos) contém ClassID, uma chave estrangeira que aponta para a tabela CLASSES (turmas), então os dados de cada turma são guardados uma única vez em vez de se repetirem para cada aluno. A simulação transforma suas escolhas em uma instrução SQL SELECT com JOIN, WHERE, ORDER BY e limite de linhas e a executa sobre os dados.
Como usar
Comece com Junção em Só a tabela STUDENTS; depois mude para a opção que une as tabelas e observe quais colunas são acrescentadas. Escolha uma Coluna do filtro, um operador de comparação e digite um Valor de comparação, e peça aos alunos que prevejam quais linhas voltarão antes de clicar em Executar consulta. Acrescente Ordenar por e reduza Máximo de linhas retornadas para ver como a ordenação e o limite atuam juntos. Clique em uma linha do resultado para seguir sua chave estrangeira até a tabela CLASSES.
Parâmetros que você pode mudar
- Junção Só a tabela STUDENTS, Unir STUDENTS com CLASSES por ClassID, Só a tabela CLASSES
- Coluna do filtro Sem filtro, AvgScore, ClassID, Gender
- Valor de comparação
- Ordenar por Sem ordenação, FullName crescente, AvgScore decrescente
- Máximo de linhas retornadas 1–12 linhas
Perguntas para explorar
- Por que ClassID é chave primária em CLASSES, mas chave estrangeira em STUDENTS?
- Com AvgScore em ordem decrescente e limite de 3 linhas, quais alunos são retornados?
- Dá para listar o nome da turma de cada aluno sem unir as duas tabelas? Por quê?