Prévia do material em texto
Pergunta 1 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: . Acesso em: mar. 2020. Sobre índices é correto afirmar que: Resposta Selecionada: d. 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. Respostas: a. A criação de índices é imprescindível para qualquer tabela do MySQL. b. 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. c. Í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. d. 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. e. 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. Comentário da resposta: 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. 1 em 1 pontos 01/12/2024, 17:28 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash... https://senacsp.blackboard.com/webapps/assessment/review/review.jsp?attempt_id=_41327577_1&course_id=_256641_1&content_id=_11773… 1/15 https://dev.mysql.com/doc/refman/8.0/en/mysql-indexes.html https://dev.mysql.com/doc/refman/8.0/en/mysql-indexes.html Pergunta 2 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 3 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. Resposta Selecionada: 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; 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; 1 em 1 pontos 1 em 1 pontos 01/12/2024, 17:29 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash... https://senacsp.blackboard.com/webapps/assessment/review/review.jsp?attempt_id=_41327577_1&course_id=_256641_1&content_id=_11773… 2/15 d. SELECT DISTINCT m.nome as nome_medico FROM medico m LEFT JOIN WHERE c.id_medico = m.id and data != curdate() or data is null; e. Dada a modelagem apresentada, não é possível realizar a consulta des um único SELECT. Comentário da resposta: a. Com um LEFT JOIN, teremos os médicos associados a alguma consulta médicos sem consultas. Para que a consulta devolva os médicos sem cons marcada, temos o “data is null”. Para que a consulta devolva os médicos co marcada em outros dias que não o dia corrente, temos o “data != curdate()” DISTINCT, a consulta SQL devolveria uma linha por consulta médica, o que repetir os nomes dos médicos. Como queremos listar somente os médicos, é desejável. Pergunta 4 Placa do Mercosul: tire suas dúvidas e saiba o que já mudou no projeto. As novas placas no padrão Mercosul finalmente começaram a ser usadas no Brasil – inicialmente no Rio de Janeiro e gradualmente em outros Estados .… Como serão as sequências? Figura - O padrão novo troca o segundo número por uma letra Descrição acessível: Figura mostra duas placas de carro. Placa de cima é uma placa cinza (padrão antigo – no topo há a sigla do estado e nome do município) e a placa de baixo é uma placa Mercosul (padrão novo – fundo branco, topo azul, sem sigla do estado, sem nome do município e com bandeira do Brasil). A placa cinza possui numeração PHL4506, enquanto que a placa Mercosul possui a numeração PHL4F06. Os países do Mercosul que adotarem a nova placa, inclusive, poderão estabelecer essa distribuição de maneira distinta. Por exemplo, enquanto na Argentina a sequência tem sido LL NNN LL, no Brasil ela será inicialmente LLL NLNN para automóveis e LLL NN LN para motocicletas. Como ficará a sequência em carros já emplacados? Como a nova placa manterá a quantidade de caracteres, porém com mudanças na sequência de letras e números, quem fizer a troca da placa antiga pela nova em um veículo já registrado verá o segundo número (da esquerda para a direita) ser substituído por uma letra de acordo com a tabela abaixo: Como é Como ficará 0 A 1 B 2 C 3 D 4 E 5 F 6 G 7 H 8 I 9 J Com isso, uma placa QUA1960 se transformará em QUA1J60, com o “J” dando lugar ao “9”. 1 em 1 pontos 01/12/2024, 17:29 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash... https://senacsp.blackboard.com/webapps/assessment/review/review.jsp?attempt_id=_41327577_1&course_id=_256641_1&content_id=_11773… 3/15 (Placa do Mercosul: tire suas dúvidas e saiba o que já mudou. Quat Disponível em: . Acesso em 2020). Considere a notícia acimae a existência de diversos bancos de dados no Brasil que arm veículos em seus registros. Considere que cada um desses bancos de dados tenha um veículos, cuja chave primária é a placa. Considere ainda que em cada banco de dados tabelas que apontam para a tabela de veículos por meio de chaves estrangeiras. Dadas essas considerações, assinale a alterna�va correta. Resposta Selecionada: d. Mesmo com essas mudanças, é possível manter a placa como chave primá um veículo trocar de placa, será preciso atualizar a chave primária na tabe e atualizar os valores das chaves estrangeiras nas outras tabelas. Como ca dessas operações pode violar as restrições do banco de dados, pode ser n algum subterfúgio como por exemplo a desabilitação das chaves estrange operação. Respostas: a. As tabelas de veículos não aceitarão que um dado veículo troque de placa que não é possível alterar o valor de uma chave primária. b. Quando um veículo trocar de placa, basta atualizar diretamente a chave p tabela de veículos (as chaves estrangeiras nunca impedirão essa mudança c. Essa alteração no “espaço do problema” provocará obrigatoriamente uma de atualização no sistema para que se u�lize algum outro campo como ch talvez o número de chassi ou mesmo um valor sequencial gerado automa� d. Mesmo com essas mudanças, é possível manter a placa como chave primá um veículo trocar de placa, será preciso atualizar a chave primária na tabe e atualizar os valores das chaves estrangeiras nas outras tabelas. Como ca dessas operações pode violar as restrições do banco de dados, pode ser n algum subterfúgio como por exemplo a desabilitação das chaves estrange operação. e. A alteração apenas da chave primária na tabela de veículos não fere a inte referencial do banco de dados, uma vez que a tabela de veículos permane consistente. Comentário da resposta: d. Embora a existência de chaves estrangeiras possa complicar a operaçã atualizar chaves primárias. Também é possível configurar as chaves estra que sejam atualizadas automa�camente (“on update cascade”), mas essa é default. Pergunta 5 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-a tendimento-ao-cidadao-sac-156) criada com o seguinte comando: CREATE TABLE solicitacoes ( data_abertura text, 1 em 1 pontos 01/12/2024, 17:29 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash... https://senacsp.blackboard.com/webapps/assessment/review/review.jsp?attempt_id=_41327577_1&course_id=_256641_1&content_id=_11773… 4/15 https://quatrorodas.abril.com.br/auto-servico/placa-do-mercosul-tire-suas-duvidas-e-saiba-o-que-ja-mudou-no-projeto/ https://quatrorodas.abril.com.br/auto-servico/placa-do-mercosul-tire-suas-duvidas-e-saiba-o-que-ja-mudou-no-projeto/ 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 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 solicitaco GROUP BY tema ORDER BY qtd DESC LIMIT 5; Respostas: a. SELECT tema, count(*) as qtd FROM solicitaco GROUP BY tema ORDER BY qtd DESC LIMIT 5; b. SELECT tema, qtd FROM solicitacoes GROUP BY ORDER BY qtd DESC LIMIT 5; c. SELECT tema, count(*) as qtd FROM solicitaco GROUP BY tema ORDER BY qtd LIMIT 5; d. SELECT tema, qtd FROM solicitacoes LIMIT e. SELECT tema, count(*) as qtd FROM solicitaco 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çã BY. A coluna qtd está com valores decrescentes, sugerindo a u�lização do “ DESC”. Como a saída só possui 5 linhas, isso sugere a u�lização do LIMIT 5 não é uma coluna original da tabela (ver comando CREATE), por isso deve como um alias no SELECT. 01/12/2024, 17:29 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash... https://senacsp.blackboard.com/webapps/assessment/review/review.jsp?attempt_id=_41327577_1&course_id=_256641_1&content_id=_11773… 5/15 Pergunta 6 Considere a seguinte sequência de comandos: > SELECT id, saldo FROM conta_corrente WHERE id in (1324, 7634); id saldo ----- -------- 1324 5000.0 7634 40000.0 > BEGIN; > UPDATE conta_corrente SET saldo = saldo - 100 WHERE id = 1324; > UPDATE conta_corrente SET saldo = saldo + 200 WEHRE id = 7634; > COMMIT; > SELECT id, saldo FROM conta_corrente WHERE id in (1324, 7634); Qual é a saída produzida pelo último comando? Resposta Selecionada: b. id saldo ----- -------- 1324 5000.0 7634 40000.0 Respostas: a. id saldo ----- -------- 1324 5100.0 7634 40200.0 b. id saldo ----- -------- 1324 5000.0 7634 40000.0 c. id saldo ----- -------- 1324 5100.0 7634 40000.0 d. … You have an error in your SQL syntax ... e. ----- -------- 1324 7634 5000.0 40000.0 Comentário da resposta: b. Como há um erro de sintaxe no segundo UPDATE e os comandos de UPDATE estão envoltos em uma transação (BEGIN, COMMIT), então nenhum UPDATE será efe�vo. Por isso a saída final será igual a saída do primeiro SELECT. Pergunta 7 Infodeck introdutório aos bancos de dados NoSQL 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. 1 em 1 pontos 1 em 1 pontos 01/12/2024, 17:29 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash... https://senacsp.blackboard.com/webapps/assessment/review/review.jsp?attempt_id=_41327577_1&course_id=_256641_1&content_id=_11773… 6/15 FOWLER, M.; SADALAGE, P. Infodeck introdutório aos bancos NoSQL. 2012. https://martinfowler.com/articles/nosql-intro. Acesso 2020. Assinale a alterna�va que melhor explica o que os autores do texto citado querem dizer “persistência poliglota”. Resposta Selecionada: c. Novos sistemas con�nuarão usando os SGBDs relacionais, mas ao mesm 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 d (excluindo, portanto, os bancos relacionais). b. O sucesso do movimento NoSQL se dá principalmente porque esses nov suportam uma grande variedade de linguagens de programação (Java, . Ruby, etc.). c. Novos sistemas con�nuarão usando os SGBDs relacionais, mas ao mesm u�lizarão outros bancos NoSQL para propósitos específicos. d. A “persistência poliglota” consiste numa Babel de bancos NoSQL que nã sustentável a longo prazo. e. A persistência poliglota é uma camada genérica de inferência entre os b dados e as aplicações. Comentário da resposta: c. A “persistência poliglota” se refere a uma só aplicação utilizando di de persistência: seja relacional, seja NoSQL. Pergunta 8 Considere um banco de dados para um sistema de controle de estacionamentos. Os req início e de fim da estadia de cada veículo. Para cada estadia é preciso registrar qual o ve Assinale a alternativa que corresponda a uma modelagem para esse problema queestej 1 em 1 pontos 01/12/2024, 17:29 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash... https://senacsp.blackboard.com/webapps/assessment/review/review.jsp?attempt_id=_41327577_1&course_id=_256641_1&content_id=_11773… 7/15 https://martinfowler.com/articles/nosql-intro Resposta Selecionada: e. Descrição acessível: tabela estadia com campos inicio, fim e placa_veiculo; tabela dono com campos cpf e nome; estadia.placa_veiculo é chave estrang para dono.cpf. 01/12/2024, 17:29 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash... https://senacsp.blackboard.com/webapps/assessment/review/review.jsp?attempt_id=_41327577_1&course_id=_256641_1&content_id=_11773… 8/15 Respostas: a. Descrição acessível: tabela estadia com campos inicio, fim e placa_veiculo; estadia.placa_veiculo é chave estrangeira para veiculo.placa. 01/12/2024, 17:29 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash... https://senacsp.blackboard.com/webapps/assessment/review/review.jsp?attempt_id=_41327577_1&course_id=_256641_1&content_id=_11773… 9/15 b. Descrição acessível: tabela veiculo com campos placa, marca, modelo, cor, campos cpf e nome_completo; estadia.cpf_dono é chave estrangeira para d 01/12/2024, 17:29 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash... https://senacsp.blackboard.com/webapps/assessment/review/review.jsp?attempt_id=_41327577_1&course_id=_256641_1&content_id=_1177… 10/15 c. Descrição acessível: tabela estadia com campos inicio, fim, duracao e placa cpf_dono; tabela dono com campos cpf e nome; estadia.placa_veiculo é cha estrangeira para dono.cpf. 01/12/2024, 17:29 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash... https://senacsp.blackboard.com/webapps/assessment/review/review.jsp?attempt_id=_41327577_1&course_id=_256641_1&content_id=_11773… 11/15 d. Descrição acessível: tabela estadia com campos inicio, fim e placa_veiculo; tabela dono com campos cpf, nome_completo, primeiro_nome e sobre_nom veiculo.cpf_dono é chave estrangeira para dono.cpf. 01/12/2024, 17:29 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash... https://senacsp.blackboard.com/webapps/assessment/review/review.jsp?attempt_id=_41327577_1&course_id=_256641_1&content_id=_1177… 12/15 e. Descrição acessível: tabela estadia com campos inicio, fim e placa_veiculo; tabela dono com campos cpf e nome; estadia.placa_veiculo é chave estrang para dono.cpf. Comentário da resposta: e. Opção A viola a 1FN – campo multivalor (marca-modelo-cor). Opção B fins_estadias). Opção C viola a 2FN – atributo (duracao) é função de part não chave (primeiro_nome e sobre_nome) dependem de outro atributo nã apresenta nenhuma violação à BCFN). Pergunta 9 Considere as seguintes tabelas: CREATE TABLE bares (nome text, preco float); CREATE TABLE restaurantes (nome text, preco float); 1 em 1 pontos 01/12/2024, 17:29 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash... https://senacsp.blackboard.com/webapps/assessment/review/review.jsp?attempt_id=_41327577_1&course_id=_256641_1&content_id=_1177… 13/15 CREATE TABLE cafes (nome text, preco float); Assinale a alternativa que forneça um significado plausível para o seguinte comando: SELECT nome, preco FROM ( SELECT nome, preco FROM bares WHERE preco = (SELECT min(pre bares) UNION SELECT nome, preco FROM restaurantes WHERE preco = (SELECT min(preco) FROM restaurantes) UNION SELECT nome, preco FROM cafes WHERE preco = (SELECT min(pre cafes) ) as lazer WHERE preco