Prévia do material em texto
Se o seu ambiente operacional estiver con�gurado para exibir seu comando atual na barra de título da janela do terminal, a senha permanecerá visível enquanto o comando estiver em execução, mesmo se o comando já estiver fora de vista. MYSQL. MySQL 8.0 Reference Manual. 2020. O trecho acima do manual do MySQL explica que um determinado método de login possui um certo risco de segurança. Indique qual seria uma alternativa segura ao método discutido. Resposta Selecionada: a. Logar com a opção -p sem passar o parâmetro (senha) no comando, o que fará com que a senha seja lida a par�r de um prompt seguro do terminal. Respostas: a. Logar com a opção -p sem passar o parâmetro (senha) no comando, o que fará com que a senha seja lida a par�r de um prompt seguro do terminal. b. Logar com a opção -p sem passar o parâmetro (senha) no comando, o que fará com que o usuário anônimo seja u�lizado. c. Logar como o discu�do, passando a senha na linha de comando, mas especificando o uso de uma conexão SSL segura entre cliente e banco de dados. d. Logar como o discu�do, passando a senha na linha de comando, mas usando um contêiner Docker. e. O manual do MySQL está defasado. Na úl�ma versão disponível do MySQL, o método discu�do é inteiramente seguro. Comentário da resposta: a. Com a senha sendo digitada em modo interativo (com a opção -p), não há como outro programa capturar a senha digitada, a menos que haja algum programa espião que capture as teclas sendo digitadas. Pergunta 2 Considere os seguintes tipos de bancos de dados: 1 em 1 pontos (I) Relacionais com propriedades ACID (II) Em memória (III) Orientados a documentos (IV) Orientados a grafos Considere agora os seguintes domínios a serem modelados em bancos de dados: ( ) Soluções de cache. ( ) Entidades com alta variabilidade de atributos entre suas instâncias. ( ) Dados �nanceiros que exigem alta consistência. ( ) Análise logística de rotas de caminhões. Assinale a alterna�va que traça a correspondência mais adequada entre os �pos de bancos de dados e os domínios aos quais eles se aplicam melhor. Resposta Selecionada: d. (II) (III) (I) (IV) Respostas: a. (IV) (III) (I) (II) b. (II) (I) (III) (IV) c. (III) (II) (I) (IV) d. (II) (III) (I) (IV) e. (I) (III) (II) (IV) Comentário da resposta: d. Soluções de cache exigem pouco espaço e devem ser rápidas, por isso bancos em memória são adequados para elas. Instâncias diferentes com atributos diferentes para uma mesma entidade geram tabelas esparsas em bancos relacionais; utilizar um banco com esquema �exível, como os orientados a documentos, é interessante. A transferência entre contas correntes é um caso que exige alta consistência e todas as garantias do ACID: melhor �car com um SGBD relacional. Por �m, a análise logística pode utilizar a aplicação de algoritmos em grafos, por isso pode se valer de um SGBD orientado a grafos. Pergunta 3 Considere o seguinte texto, que faz parte de uma descrição comercial na home page de uma suíte de produtos, servindo de link para mais detalhes sobre um produto especí�co. Pentaho Business Analytics 1 em 1 pontos Empodere consumidores de dados com análises interativas, visualizações em tempo real e modelagens preditivas, com mínimo suporte de TI. Pentaho Platform. [s. d.]. Disponível em: https://www.hitachiva ntara.com/en-us/products/data-management-analytics/pentaho-platfo rm.html. Acesso em: 15 jul. 2020. Assinale a alterna�va que melhor esclarece o texto acima. Resposta Selecionada: c. Os “consumidores de dados” são pessoas (analistas, gerentes, etc.) que querem explorar diretamente os dados sem a necessidade de depender de pessoas especialistas em TI (“com mínimo suporte de TI”). Respostas: a. Os “consumidores de dados” são painéis de monitoração que servem aos especialistas de TI. Assim, o suporte da TI age somente quando necessário. b. Os “consumidores de dados” são aplicações resilientes que possuem indisponibilidade mínima, mesmo sem a intervenção constante de operadores de TI. c. Os “consumidores de dados” são pessoas (analistas, gerentes, etc.) que querem explorar diretamente os dados sem a necessidade de depender de pessoas especialistas em TI (“com mínimo suporte de TI”). d. Os “consumidores de dados” são pessoas (analistas, gerentes, etc.) que querem explorar diretamente os dados, mas desde que minimamente tenham todo o suporte do pessoal de TI ao seu dispor. e. A chamada leva o leitor a acreditar que é possível explorar os dados diretamente. Mas isso é impossível, já que sempre deve exis�r uma aplicação projetada pela TI corpora�va entre o usuário final e os dados. Comentário da resposta: c. O Pentaho é uma ferramenta de análise de dados que dispensa a necessidade de uma aplicação geradora de relatórios e o usuário �nal. Esse estilo arquitetural de análise de dados é o estilo dos data warehouses. Pergunta 4 1 em 1 pontos Considere um banco de dados com uma tabela voos, contendo a coluna companhia, com a sigla da companhia aérea que operou o voo. Considere também que esse banco possui uma tabela companhias, com um cadastro de todas as companhias aéreas existentes. O que representa a seguinte consulta? SELECT (SELECT count(distinct companhia) FROM voos) / (SELECT count(*) FROM companhias); Considere como dica os seguintes comandos e suas respectivas saídas: > SELECT 4; 4 > SELECT 4/2; 2 Resposta Selecionada: b. A proporção de companhias cadastradas que operaram voos registrados na tabela voos. Respostas: a. A quan�dade de companhias que operaram voos registrados na tabela voos. b. A proporção de companhias cadastradas que operaram voos registrados na tabela voos. c. A quan�dade total de companhias cadastradas. d. Não representa nada, pois seja qual for o conteúdo das tabelas esse comando sempre retorna o número zero. e. Não representada nada, pois resultará em um erro devido a sintaxe incorreta. Comentário da resposta: b. A consulta está dividindo o “count(dis�nct companhia) FROM voos” (quan�dade de companhias que operaram voos) por “SELECT count(*) FROM companhias” (quan�dade de empresas cadastradas). Ou seja, temos a proporção de empresas que operaram voos pelo total de empresas cadastradas. Pergunta 5 Considere a seguinte consulta: SELECT nome FROM funcionario WHERE not(idade > 65 AND sexo = 'M' OR idade > 60 AND sexo = 'F'); Assinale a alternativa que indica um par válido de entrada e saída para essa consulta. 1 em 1 pontos Obs: Todas as entradas se referem à tabela “funcionario”. Resposta Selecionada: d. Entrada: +----------+-------+------+ | nome | idade | sexo | +----------+-------+------+ | Moacir | 70 | M | | Geraldo | 67 | M | | Enzo | 23 | M | | Karolyne | 23 | F | | Josefina | 63 | F | | Ivone | 70 | F | +----------+-------+------+ Saída: +----------+ | nome | +----------+ | Enzo | | Karolyne | +----------+ Respostas: a. Entrada: +----------+-------+------+ | nome | idade | sexo | +----------+-------+------+ | Moacir | 70 | M | | Geraldo | 67 | M | | Enzo | 23 | M | | Josefina | 63 | F | | Ivone | 70 | F | +----------+-------+------+ Saída: +----------+ | nome | +----------+ | Enzo | | Josefina | | Ivone | +----------+ b. Entrada: +----------+-------+------+ | nome | idade | sexo | +----------+-------+------+ | Moacir | 70 | M | | Geraldo | 67 | M | | Enzo | 23 | M | | Josefina | 63 | F | | Ivone | 70 | F | +----------+-------+------+ Saída: +----------+ | nome | +----------+ | Moacir | | Geraldo | | Josefina | | Ivone | +----------+ c. Entrada: +----------+-------+------+ | nome | idade | sexo | +----------+-------+------+ | Moacir | 70 | M | | Geraldo | 67 | M | | Enzo | 23 | M | | Karolyne | 23 | F | | Josefina | 63 | F | | Ivone | 70 | F | +----------+-------+------+ Saída: +----------+| nome | +----------+ | Moacir | | Geraldo | | Enzo | | Karolyne | | Josefina | +----------+ d. Entrada: +----------+-------+------+ | nome | idade | sexo | +----------+-------+------+ | Moacir | 70 | M | | Geraldo | 67 | M | | Enzo | 23 | M | | Karolyne | 23 | F | | Josefina | 63 | F | | Ivone | 70 | F | +----------+-------+------+ Saída: +----------+ | nome | +----------+ | Enzo | | Karolyne | +----------+ e. Entrada: +----------+-------+------+ | nome | idade | sexo | +----------+-------+------+ | Moacir | 70 | M | | Geraldo | 67 | M | | Josefina | 63 | F | | Ivone | 70 | F | +----------+-------+------+ Saída: …Syntax error… Comentário da resposta: D. A consulta irá selecionar todos os homens com idade até 65 anos e todas as mulheres com idade até 60 anos. Nas opções A e B, temos “Ivone”, de 70 anos, sendo selecionada, por isso essas opções estão erradas. Na opção C, temos “Jose�na”, de 63 anos, sendo selecionada, por isso essa opção também está errada. Como a consulta não possui erro de sintaxe (opção E), a alternativa correta é a D. Pergunta 6 Considere uma tabela que registre as doações recebidas pelos partidos políticos para as eleições de 2014 no estado de São Paulo (Fonte: http://dados.gov.br/datase 1 em 1 pontos http://dados.gov.br/dataset/prestacao-de-contas-das-campanhas-eleitorais t/prestacao-de-contas-das-campanhas-eleitorais). Considere que a tabela doacoes possui um schema conforme o seguinte comando: CREATE TABLE doacoes ( UF, SiglaPartido, DataReceita, Valor REAL, TipoReceita, FonteRecurso, EspecieRecurso, DescricaoReceita, DocumentoDoador, NomeDoador ); Considere agora a seguinte consulta SQL: SELECT SiglaPartido, sum(Valor) as total_recebido FROM doacoes GROUP BY SiglaPartido ORDER BY total_recebido DESC LIMIT 5; Assinale a alterna�va que indica qual saída o comando acima pode produzir. Resposta Selecionada: e. SiglaPartido total_recebido ------------ -------------- PSDB 57058765.03 PT 37767199.76 SD 18960025.0 PSD 17706828.38 PMDB 8748201.0 Respostas: a. … You have an error in your SQL syntax ... b. SiglaPartido total_recebido ------------ -------------- PCO 91.66 PCB 6950.0 PRTB 7327.9 PDT 10000.0 PSC 18620.0 c. SiglaPartido Valor ------------ ---------- PSDB 50000.0 PSB 50000.0 PT 700000.0 PT 1615000.0 PT 500000.0 d. SiglaPartido total_recebido ------------ -------------- PSDB 57058765.03 http://dados.gov.br/dataset/prestacao-de-contas-das-campanhas-eleitorais e. SiglaPartido total_recebido ------------ -------------- PSDB 57058765.03 PT 37767199.76 SD 18960025.0 PSD 17706828.38 PMDB 8748201.0 Comentário da resposta: e. O “GROUP BY SiglaPar�do” indica que cada par�do deve aparecer somente uma vez na saída. O LIMIT 5 indica que a saída deve ter apenas 5 registros. O “ORDER BY total_recebido DESC” indica que a coluna total_recebido deve estar em ordem decrescente. Pergunta 7 Considere a uma tabela voos contendo um registro por voo e a coluna orig_estado_abrv, que representa o estado da federação de origem do voo. Qual será o resultado da consulta abaixo? SELECT count(*) FROM voos WHERE orig_estado_abrv = 'SP' AND orig_estado_abrv = 'RJ'; Resposta Selecionada: b. Zero. Respostas: a. A soma das quan�dades de voos par�ndo do estado de São Paulo e voos par�ndo do estado do Rio de Janeiro. b. Zero. c. Duas linhas, uma linha com a quan�dade de voos par�ndo do estado de São Paulo e outra linha com a quan�dade de voos par�ndo do estado do Rio de Janeiro. d. Uma linha com duas colunas; uma coluna com a quan�dade de voos par�ndo do estado de São Paulo e outra coluna com a quan�dade de voos par�ndo do estado do Rio de Janeiro. e. Um erro, pois a sintaxe está incorreta. Comentário da resposta: b. Um mesmo registro não pode ter um valor (“SP”) para uma coluna e ao mesmo tempo outro valor (“RJ”) para a mesma coluna. Dessa forma nenhuma linha sa�sfará a condição imposta pelo WHERE. O que resultará numa contagem de zero linhas. Pergunta 8 Infodeck introdutório aos bancos de dados NoSQL 1 em 1 pontos 1 em 1 pontos Este texto fornece uma breve introdução aos bancos de dados NoSQL. Nossa intenção é explicar ao público técnico- gerencial por que os bancos de dados NoSQL são importantes. Descrevemos por que os bancos de dados relacionais têm sido tão dominantes e quais forças levaram o NoSQL a quebrar esse domínio. Discutimos os principais benefícios de uma abordagem NoSQL, mas enfatizamos que os bancos de dados relacionais ainda têm um grande papel a desempenhar, por isso nossa ênfase na persistência poliglota. FOWLER, M.; SADALAGE, P. Infodeck introdutório aos bancos de dados NoSQL. 2012. https://martinfowler.com/a rticles/nosql-intro. Acesso em: 15 jul. 2020. Assinale a alterna�va que melhor explica o que os autores do texto citado querem dizer com “persistência poliglota”. Resposta Selecionada: c. Novos sistemas con�nuarão usando os SGBDs relacionais, mas ao mesmo tempo u�lizarão outros bancos NoSQL para propósitos específicos. Respostas: a. “Persistência poliglota” diz respeito aos vários �pos de bancos NoSQL disponíveis (excluindo, portanto, os bancos relacionais). b. O sucesso do movimento NoSQL se dá principalmente porque esses novos bancos suportam uma grande variedade de linguagens de programação (Java, .NET, Python, Ruby, etc.). c. Novos sistemas con�nuarão usando os SGBDs relacionais, mas ao mesmo tempo u�lizarão outros bancos NoSQL para propósitos específicos. d. A “persistência poliglota” consiste numa Babel de bancos NoSQL que não é sustentável a longo prazo. e. A persistência poliglota é uma camada genérica de inferência entre os bancos de dados e as aplicações. Comentário da resposta: c. A “persistência poliglota” se refere a uma só aplicação utilizando diversos tipos de persistência: seja relacional, seja NoSQL. https://martinfowler.com/articles/nosql-intro https://martinfowler.com/articles/nosql-intro Pergunta 9 Considere uma tabela de solicitações feitas por cidadãos à Prefeitura de São Paulo (dados disponíveis em http://dados.prefeitura.sp.gov.br/dataset/dados-do-sistema- de-atendimento-ao-cidadao-sac-156) criada com o seguinte comando: CREATE TABLE solicitacoes ( data_abertura text, hora_abertura text, prefeitura_regional text, distrito text, orgao text, tema text, assunto text, servico text, status_solicitacao text, data_parecer text, hora_parecer text ); Considere ainda que uma certa consulta SQL produziu a seguinte saída: tema qtd ------------ ---------- Rua e bairro 526934 Lixo e limpeza 261443 Transporte 249783 Animais 195256 Meio Ambiente 185472 Qual das opções exibe uma consulta que poderia ter produzido a saída acima? Resposta Selecionada: a. SELECT tema, count(*) as qtd FROM solicitacoes GROUP BY tema ORDER BY qtd DESC LIMIT 5; Respostas: a. SELECT tema, count(*) as qtd FROM solicitacoes GROUP BY tema ORDER BY qtd DESC LIMIT 5; b. SELECT tema, qtd FROM solicitacoes GROUP BY tema ORDER BY qtd DESC LIMIT 5; 1 em 1 pontos http://dados.prefeitura.sp.gov.br/dataset/dados-do-sistema-de-atendimento-ao-cidadao-sac-156 http://dados.prefeitura.sp.gov.br/dataset/dados-do-sistema-de-atendimento-ao-cidadao-sac-156 c. SELECT tema, count(*) as qtd FROM solicitacoes GROUP BY tema ORDER BY qtd LIMIT 5; d. SELECT tema, qtd FROM solicitacoes LIMIT 5; e. SELECT tema, count(*) as qtd FROM solicitacoes GROUP BY qtd ORDER BY qtd DESC LIMIT 5; Comentário da resposta: a. Cada tema aparece somente uma vez na saída, sugerindo uma agregação por GROUP BY. Acoluna qtd está com valores decrescentes, sugerindo a u�lização do “ORDER BY DESC”. Como a saída só possui 5 linhas, isso sugere a u�lização do LIMIT 5. Por fim, qtd não é uma coluna original da tabela (ver comando CREATE), por isso deve ter surgido como um alias no SELECT. Pergunta 10 Considere as seguintes tabelas: CREATE TABLE paciente (id int primary key, nome text); CREATE TABLE medico (id int primary key, nome text); CREATE TABLE consulta (data date, id_paciente int, id_medico int); Assinale a alternativa que indica uma consulta válida para identi�carmos os médicos que não possuem consulta marcada na data de hoje. Resposta Selecionada: d. SELECT DISTINCT m.nome as nome_medico FROM medico m LEFT JOIN consulta c WHERE c.id_medico = m.id and data != curdate() or data is null; Respostas: a. SELECT DISTINCT m.nome as nome_medico FROM medico m LEFT JOIN consulta c ON c.id_medico = m.id WHERE data != curdate() or data is null; b. SELECT DISTINCT m.nome as nome_medico FROM medico m JOIN consulta c ON c.id_medico = m.id WHERE data != curdate() or data is null; c. SELECT DISTINCT m.nome as nome_medico FROM medico m RIGHT JOIN consulta c ON c.id_medico = m.id WHERE data != curdate() or data is null; d. SELECT DISTINCT m.nome as nome_medico FROM medico m LEFT JOIN consulta c WHERE c.id_medico = m.id and data != curdate() or data is null; 0 em 1 pontos Segunda-feira, 9 de Dezembro de 2024 21h28min19s BRT e. Dada a modelagem apresentada, não é possível realizar a consulta desejada com um único SELECT. Comentário da resposta: a. Com um LEFT JOIN, teremos os médicos associados a alguma consulta e também os médicos sem consultas. Para que a consulta devolva os médicos sem consulta alguma marcada, temos o “data is null”. Para que a consulta devolva os médicos com consulta marcada em outros dias que não o dia corrente, temos o “data != curdate()”. Sem o DISTINCT, a consulta SQL devolveria uma linha por consulta médica, o que poderia repetir os nomes dos médicos. Como queremos listar somente os médicos, o DISTINCT é desejável. ← OK