Bancos de dados relacionais e consultas

ComputaçãoArquivos, armazenamento e bancos de dadosIdades 16–17

Usar com minha turma

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

  1. Por que ClassID é chave primária em CLASSES, mas chave estrangeira em STUDENTS?
  2. Com AvgScore em ordem decrescente e limite de 3 linhas, quais alunos são retornados?
  3. Dá para listar o nome da turma de cada aluno sem unir as duas tabelas? Por quê?