Prévia do material em texto
Usuário JEFFERSON GOULART SANTOS Curso 2202-BANCO DE DADOS Teste Clique aqui para iniciar o Quiz Iniciado 29/08/22 18:55 Enviado 29/08/22 19:16 Data de vencimento 28/09/22 23:59 Status Completada Resultado da tentativa 10 em 10 pontos Tempo decorrido 21 minutos Resultados exibidos Todas as respostas, Respostas enviadas, Respostas corretas, Comentários Pergunta 1 Resposta Selecionada: e. Respostas: a. b. c. d. e. 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); Considere agora as seguintes consultas realizadas sobre as tabelas acima definidas: I) SELECT p.nome as nome_paciente, m.nome as nome_medico, c.data FROM paciente p, consulta c, medico m WHERE c.id_paciente = p.id and c.id_medico = m.id and data = curdate(); II) SELECT p.nome as nome_paciente, m.nome as nome_medico, c.data FROM paciente p JOIN consulta c ON c.id_paciente = p.id JOIN medico m ON c.id_medico = m.id WHERE data = curdate(); III) SELECT p.nome as nome_paciente, m.nome as nome_medico, c.data FROM paciente p JOIN consulta c JOIN medico m ON c.id_paciente = p.id and c.id_medico = m.id WHERE data = curdate(); IV) SELECT p.nome as nome_paciente, m.nome as nome_medico, c.data FROM paciente p INNER JOIN consulta c INNER JOIN medico m ON c.id_paciente = p.id and c.id_medico = m.id WHERE data = curdate(); Obs: “curdate()” retorna a data corrente. Assinale a opção que iden�fica corretamente os resultados ob�dos para essas consultas. As consultas I, II, III e IV terão o mesmo resultado, independentemente do conteúdo das tabelas. As consultas I e II terão o mesmo resultado. As consultas III e IV possuem erros de sintaxe. As consultas I e II terão um mesmo resultado, enquanto as consultas III e IV terão um outro resultado (o resultado de III será o mesmo de IV). Todas as consultas são válidas. As consultas I e II terão um mesmo resultado, enquanto as consultas III e IV terão resultados diferentes (o resultado de III difere de I, II e IV; e o resultado de IV difere de I, II e III). Todas as consultas são válidas. As consultas I, II, III e IV terão o mesmo resultado, desde que todos os pacientes e médicos estejam vinculados a consultas marcadas para a data corrente. As consultas I, II, III e IV terão o mesmo resultado, independentemente do conteúdo das tabelas. 1 em 1 pontos Comentário da resposta: e. No MySQL, o JOIN padrão (consulta II) é o INNER JOIN (consulta IV), o que é a mesma coisa que o resultado do produto cartesiano filtrado pela condição de junção (consulta I). Além disso, para fazer a junção de três tabelas, há duas formas possíveis: “tabela 1 JOIN tabela 2 JOIN tabela 3 ON condição 1 and condição 2” (consulta III) e “tabela 1 JOIN tabela 2 ON condição 1 JOIN tabela 3 ON condição 2” (consulta II). Pergunta 2 Resposta Selecionada: a. Respostas: a. b. c. d. e. Comentário da resposta: 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 identificarmos os médicos que não possuem consulta marcada na data de hoje. 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; 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; 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; 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; 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; Dada a modelagem apresentada, não é possível realizar a consulta desejada com um único SELECT. 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. 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ífico. Pentaho Business Analytics Empodere consumidores de dados com análises interativas, visualizações em tempo real e modelagens preditivas, com mínimo suporte de TI. 1 em 1 pontos 1 em 1 pontos Resposta Selecionada: c. Respostas: a. b. c. d. e. Comentário da resposta: Pentaho Platform. [s. d.]. Disponível em: https://www.hitachivantara.com/en-us/products/data-m anagement-analytics/pentaho-platform.html. Acesso em: 15 jul. 2020. Assinale a alterna�va que melhor esclarece o texto acima. 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”). 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. Os “consumidores de dados” são aplicações resilientes que possuem indisponibilidade mínima, mesmo sem a intervenção constante de operadores de TI. 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”). 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. 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. 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 final. Esse estilo arquitetural de análise de dados é o estilo dos data warehouses. Pergunta 4 Considere uma tabela de solicitações feitas por cidadãos à Prefeitura de São Paulo (dados disponíveis em htt p://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 1 em 1 pontos http://dados.prefeitura.sp.gov.br/dataset/dados-do-sistema-de-atendimento-ao-cidadao-sac-156 Resposta Selecionada: a. Respostas: a. b. c. d. e. Comentário da resposta: ); 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? SELECT tema, count(*) as qtd FROM solicitacoes GROUP BY tema ORDER BY qtd DESC LIMIT 5; SELECT tema, count(*) as qtd FROM solicitacoes GROUP BY tema ORDER BY qtd DESC LIMIT 5; SELECT tema, qtd FROM solicitacoes GROUP BY tema ORDER BY qtd DESC LIMIT 5; SELECT tema, count(*) as qtd FROM solicitacoes GROUP BY temaORDER BY qtd LIMIT 5; SELECT tema, qtd FROM solicitacoes LIMIT 5; SELECT tema, count(*) as qtd FROM solicitacoes GROUP BY qtd ORDER BY qtd DESC LIMIT 5; a. Cada tema aparece somente uma vez na saída, sugerindo uma agregação por GROUP BY. A coluna 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 5 6.1.2.1 Orientações do usuário final para a segurança de senha Use a opção --password = password ou -ppassword na linha de comando. Por exemplo: shell> mysql -u francis -pfrank db_name Aviso Isso é conveniente, mas inseguro. Em alguns sistemas, sua senha fica visível para programas de status do sistema, como ps, que podem ser invocados por outros usuários para exibir linhas de comando. Os clientes MySQL geralmente substituem o argumento da senha da linha de 1 em 1 pontos Resposta Selecionada: a. Respostas: a. b. c. d. e. Comentário da resposta: comandos com zeros durante sua sequência de inicialização. No entanto, ainda há um breve intervalo durante o qual o valor é visível. Além disso, em alguns sistemas, essa estratégia de substituição é ineficaz e a senha permanece visível para o ps. (Os sistemas SystemV Unix e talvez outros estejam sujeitos a esse problema.) Se o seu ambiente operacional estiver configurado 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. 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. 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. 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. 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. Logar como o discu�do, passando a senha na linha de comando, mas usando um contêiner Docker. O manual do MySQL está defasado. Na úl�ma versão disponível do MySQL, o método discu�do é inteiramente seguro. 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 6 Considere a seguinte modelagem feita para o banco de dados de um sistema de estacionamento: 1 em 1 pontos Resposta Selecionada: b. Respostas: a. b. c. d. e. Comentário da resposta: Descrição acessível: tabela estadia com campos inicio, fim e placa_veiculo; tabela veiculo com campos placa, marca, modelo, cor, cpf_dono e nome_dono; estadia.placa_veiculo é chave estrangeira para veiculo.placa. Assinale a alternativa que indica em que forma normal se encontra essa modelagem. 2FN. 1FN. 2FN. 3FN. BCFN. Essa modelagem não atende nem à 1FN. b. Essa modelagem viola a 3FN, pois cpf_dono e nome_dono são funcionalmente dependentes entre si. Como há uma violação da 3FN e não há violações nem da 2FN nem da 1FN, então a modelagem apresentada está na 2FN. A modelagem não viola a 1FN pois não há campos mul�valorados. Ela também não viola a 2FN, o que ocorreria se algum atributo não primário fosse funcionalmente dependente de parte de alguma chave da tabela. Pergunta 7 Resposta Selecionada: d. Respostas: a. b. Ao elaborar um sistema, um desenvolvedor criou uma tabela no MySQL utilizando o seguinte comando: CREATE TABLE livro ( titulo TEXT, autor TEXT, editora TEXT, ano INTEGER); O desenvolvedor deve agora documentar essa tabela por meio de um diagrama ER. Qual das alternativas exibe um diagrama que o desenvolvedor poderia utilizar para realizar essa documentação? Descrição acessível: Figura possui um retângulo “Livro” associado (ligado por retas) a quatro circunferências. As circunferências são “título”, “autor”, “editora” e “livro”. Descrição acessível: Figura possui um retângulo “Livro” associado (ligado por uma reta) a uma circunferência. O rótulo das circunferências é “título, autor, editora, livro”. 1 em 1 pontos c. d. e. Descrição acessível: Figura possui um grande retângulo “Livro” associado (ligado por retas) a quatro pequenos retângulos. Os retângulos pequenos são “título”, “autor”, “editora” e “livro”. Descrição acessível: Figura possui um retângulo cujo texto possui duas linhas. Primeira linha é “Livro”. Segunda linha é “título, autor, editora, ano”. Descrição acessível: Figura possui um retângulo “Livro” associado (ligado por retas) a quatro circunferências. As circunferências são “título”, “autor”, “editora” e “livro”. Comentário da resposta: Descrição acessível: Figura possui um grande quadrado “Livro” com quatro pequenos quadrados dentro desse quadrado maior. Os quadrados pequenos são: “título”, “autor”, “editora” e “livro”. d. A opção d é a que segue corretamente a nomenclatura visual de diagramas ERs: entidades são representadas como retângulos, e os atributos das entidades são representados como circunferências associadas ao retângulo da entidade. Pergunta 8 Resposta Selecionada: b. Respostas: a. b. c. d. e. Comentário da resposta: 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'; Zero. 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. Zero. 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. 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. Um erro, pois a sintaxe está incorreta. 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 9 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/dataset/prestacao-de-contas-das-campanhas-eleitorais). 1 em 1 pontos 1 em 1 pontos http://dados.gov.br/dataset/prestacao-de-contas-das-campanhas-eleitorais Resposta Selecionada: e. Respostas: a. b. c. d. 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. SiglaPartido total_recebido ------------ -------------- PSDB 57058765.03 PT 37767199.76 SD 18960025.0 PSD 17706828.38 PMDB 8748201.0 … You have an error in your SQL syntax ... SiglaPartido total_recebido ------------ -------------- PCO 91.66 PCB 6950.0 PRTB 7327.9 PDT 10000.0 PSC 18620.0SiglaPartido Valor ------------ ---------- PSDB 50000.0 PSB 50000.0 PT 700000.0 PT 1615000.0 PT 500000.0 SiglaPartido total_recebido ------------ -------------- PSDB 57058765.03 e. Comentário da resposta: SiglaPartido total_recebido ------------ -------------- PSDB 57058765.03 PT 37767199.76 SD 18960025.0 PSD 17706828.38 PMDB 8748201.0 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 10 Resposta Selecionada: d. Respostas: a. b. c. d. e. Como o MySQL utiliza índices Os índices são usados para rapidamente localizar linhas com valores de coluna específicos. Sem um índice, o MySQL deve começar com a primeira linha e depois ler a tabela inteira para encontrar as linhas relevantes. Quanto maior a tabela, mais isso custa. Se a tabela �ver um índice para as colunas em questão, o MySQL poderá determinar rapidamente a posição a ser procurada no meio do arquivo de dados sem precisar examinar todos os dados. Isso é muito mais rápido do que ler todas as linhas sequencialmente. (Traduzido da documentação oficial do MySQL. Disponível em: <h�ps://dev.mysql.com/doc/refman/8. 0/en/mysql-indexes.html>. Acesso em: mar. 2020. Sobre índices é correto afirmar que: Considere uma base de dados construída para análises cien�ficas que é montada uma vez e depois não é mais atualizada, e que possui muitos dados. Nesse caso compensa construir diversos índices que serão úteis para as consultas dos cien�stas, pois mesmo que o tempo de criação dos índices seja grande, a alta velocidade das leituras subsequentes compensará o tempo de criação dos índices. A criação de índices é imprescindível para qualquer tabela do MySQL. Considere um sistema muito acessado por usuários de todo o mundo e uma tabela que armazene os eventos de login desses usuários. Nesse caso, a criação de um índice nessa tabela de registro de login é conveniente para acelerar o tempo de inserção, provendo uma melhor experiência para o usuário. Índices deixam inserções mais lentas e consomem mais espaço em disco. Por essas razões devem ser usados apenas em tabelas com mais de um milhão de registros. Só nesses casos os custos compensarão os ganhos de velocidade de leitura. Considere uma base de dados construída para análises cien�ficas que é montada uma vez e depois não é mais atualizada, e que possui muitos dados. Nesse caso compensa construir diversos índices que serão úteis para as consultas dos cien�stas, pois mesmo que o tempo de criação dos índices seja grande, a alta velocidade das leituras subsequentes compensará o tempo de criação dos índices. 1 em 1 pontos https://dev.mysql.com/doc/refman/8.0/en/mysql-indexes.html Comentário da resposta: Os índices são recursos u�lizados em bancos de dados an�gos. O sistema de o�mização de consultas do MySQL (optimum lookup process) dispensa a u�lização de índices em tabelas do MySQL. d. Índices aceleram consultas e são muito u�lizados. Um problema muito comum em sistemas lentos é a falta de índices em tabelas do banco de dados (seja no MySQL ou em outros SGBDs). Por outro lado, o preço a se pagar é: inserções mais lentas e mais espaço ocupado no disco. Contudo, tabelas muito pequenas podem dispensar índices.