Baixe o app para aproveitar ainda mais
Prévia do material em texto
Revisar envio do teste: Clique aqui para iniciar o Quiz SP_GRAD_686276_2303_01 2302-BANCO DE DADOS Quiz REVISAR ENVIO DO TESTE: CLIQUE AQUI PARA INICIAR O QUIZ Usuário FELIPE AUGUSTO SANTINHO Curso 2302-BANCO DE DADOS Teste Clique aqui para iniciar o Quiz Iniciado 24/08/23 17:35 Enviado 24/08/23 18:10 Data de vencimento 27/09/23 23:59 Status Completada Resultado da tentativa 10 em 10 pontos Tempo decorrido 34 minutos Resultados exibidos Todas as respostas, Respostas enviadas, Respostas corretas, Comentários Pergunta 1 Níveis de abstração: da realidade ao dado A evolução da humanidade pode ser encarada em parte como um trajeto no sentido da aquisição progressiva da capacidade individual de abstração. De um ser intimamente ligado ao universo e em particular à natureza, o ser humano individual tornou-se ao longo do tempo um ente independente, isolado e com cada vez maior capacidade de introspecção objetiva, isto é, sem que este dependa de fatores subjetivos, temporais e individuais. (SETZER, V. W.; SILVA, F. S. C. da. Banco de dados: aprenda o que são, melhore seu conhecimento, construa os seus. São Paulo: Edgard Blücher, 2005.) Assim como Setzer & Silva consideram a história da humanidade como um crescente na capacidade de abstração, a história da programação de computadores também pode ser encarada como uma busca por formas cada vezes mais abstratas de dar instruções a máquinas. Sala de Aula Tutoriais 1 em 1 pontos FELIPE AUGUSTO SANTINHO 139 https://senacsp.blackboard.com/webapps/blackboard/execute/courseMain?course_id=_219523_1 https://senacsp.blackboard.com/webapps/blackboard/content/listContent.jsp?course_id=_219523_1&content_id=_9893850_1&mode=reset https://www.ead.senac.br/ https://senacsp.blackboard.com/webapps/portal/execute/tabs/tabAction?tab_tab_group_id=_260_1 https://senacsp.blackboard.com/webapps/portal/execute/tabs/tabAction?tab_tab_group_id=_210_1 https://senacsp.blackboard.com/webapps/login/?action=logout Resposta Selecionada: e. Respostas: a. b. c. d. e. Comentário da resposta: Considere essas três formas de se utilizar o computador para se obter a previsão do tempo: I – SELECT temperatura, precipitacao FROM previsao WHERE data = CURDATE(); II – Computador, por favor, me dê a previsão do tempo de hoje. III - temperatura = None precipitacao = None for prev in previsoes: if prev.data = date.today(): temperatura = prev.temperatura precipitacao = prev.precipitacao print(“ temperatura=”, temperatura) print(“precipitacao=”, precipitacao) Assinale a alterna�va que corretamente ordena os itens acima em ordem crescente de abstração. III, I, II. I, II, III. III, II, I. II, I, III. Todas os itens estão no mesmo nível de abstração. III, I, II. Texto feedback Pergunta 2 Considere a execução de uma sequência de comando, mas com uma parte dos comandos executados em uma sessão, e a outra parte executada em outra sessão. Os comandos estão listados abaixo, de forma que 1> indica o prompt da sessão 1, enquanto 2> indica o prompt da sessão 2. 1> CREATE TABLE pessoa (id int, nome text); 1> INSERT INTO pessoa VALUES (1, 'Fulano'); 1> BEGIN; 1> INSERT INTO pessoa VALUES (2, 'Ciclano'); 2> BEGIN; 1 em 1 pontos Resposta Selecionada: a. Respostas: a. b. c. d. e. Comentário da resposta: 2> INSERT INTO pessoa VALUES (3, 'Beltrano'); 2> ROLLBACK; 2> SELECT * FROM pessoa; Assinale a alterna�va que indica a saída ob�da para a execução do úl�mo comando da sequência. +------+--------+ | id | nome | +------+--------+ | 1 | Fulano | +------+--------+ +------+--------+ | id | nome | +------+--------+ | 1 | Fulano | +------+--------+ Empty set +------+---------+ | id | nome | +------+---------+ | 1 | Fulano | | 2 | Ciclano | +------+---------+ +------+----------+ | id | nome | +------+----------+ | 1 | Fulano | | 2 | Ciclano | | 3 | Beltrano | +------+----------+ You have an error in your SQL syntax a. “Beltrano” não aparecerá pois foi inserido em uma transação abortada. “Ciclano” não aparecerá pois foi inserido em uma transação que está em outra sessão e que ainda não efetivada. Por fim, “Fulano” aparecerá, pois foi inserido sem o uso de transação. Pergunta 3 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. 1 em 1 pontos Resposta Selecionada: b. Respostas: a. b. c. d. e. Comentário da resposta: 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 A proporção de companhias cadastradas que operaram voos registrados na tabela voos. A quan�dade de companhias que operaram voos registrados na tabela voos. A proporção de companhias cadastradas que operaram voos registrados na tabela voos. A quan�dade total de companhias cadastradas. Não representa nada, pois seja qual for o conteúdo das tabelas esse comando sempre retorna o número zero. Não representada nada, pois resultará em um erro devido a sintaxe incorreta. 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 4 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 1 em 1 pontos Resposta Selecionada: c. Respostas: a. b. c. d. e. Comentário da resposta: 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/article s/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”. Novos sistemas con�nuarão usando os SGBDs relacionais, mas ao mesmo tempo u�lizarão outros bancos NoSQL para propósitos específicos. “Persistência poliglota” diz respeito aos vários �pos de bancos NoSQL disponíveis (excluindo, portanto, os bancos relacionais). 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.). Novos sistemas con�nuarão usando os SGBDs relacionais, mas ao mesmo tempo u�lizarão outros bancos NoSQL para propósitos específicos. A “persistência poliglota” consiste numa Babel de bancos NoSQL que não é sustentável a longo prazo. A persistência poliglota é uma camada genérica de inferência entre os bancos de dados e as aplicações. c. A “persistência poliglota” se refere a uma só aplicação utilizando diversos tipos de persistência: seja relacional, seja NoSQL. Pergunta 5 Considere um banco de dados para um sistema de controle de estacionamentos. Os requisitos básicos são: o sistema precisa armazenar o horário de início e de fim da estadia de cada veículo. Para cada estadia é preciso registrar qual o veículo que foi estacionado, assim como o dono desse veículo. 1 em 1 pontos https://martinfowler.com/articles/nosql-intro Resposta Selecionada: e. Respostas: a. b. Assinale a alternativa que corresponda a uma modelagem para esse problema que esteja na BCFN. Descrição acessível: tabela estadia com campos inicio, fim e placa_veiculo;tabela veiculo com campos placa, marca, modelo, cor e cpf_dono; tabela dono com campos cpf e nome; estadia.placa_veiculo é chave estrangeira para veiculo.placa; veiculo.cpf_dono é chave estrangeira para dono.cpf. Descrição acessível: tabela estadia com campos inicio, fim e placa_veiculo; tabela veiculo com campos placa, marca-modelo- cor e cpf_dono; estadia.placa_veiculo é chave estrangeira para veiculo.placa. Descrição acessível: tabela veiculo com campos placa, marca, modelo, cor, cpf_dono, inicios_estadias e fins_estadias; tabela dono com campos cpf e nome_completo; estadia.cpf_dono é chave estrangeira para dono.cpf. c. d. e. Comentário da resposta: Descrição acessível: tabela estadia com campos inicio, fim, duracao e placa_veiculo; tabela veiculo com campos placa, marca, modelo, cor e cpf_dono; tabela dono com campos cpf e nome; estadia.placa_veiculo é chave estrangeira para veiculo.placa; veiculo.cpf_dono é chave estrangeira para dono.cpf. Descrição acessível: tabela estadia com campos inicio, fim e placa_veiculo; tabela veiculo com campos placa, marca, modelo, cor e cpf_dono; tabela dono com campos cpf, nome_completo, primeiro_nome e sobre_nome; estadia.placa_veiculo é chave estrangeira para veiculo.placa; veiculo.cpf_dono é chave estrangeira para dono.cpf. Descrição acessível: tabela estadia com campos inicio, fim e placa_veiculo; tabela veiculo com campos placa, marca, modelo, cor e cpf_dono; tabela dono com campos cpf e nome; estadia.placa_veiculo é chave estrangeira para veiculo.placa; veiculo.cpf_dono é chave estrangeira para dono.cpf. e. Opção A viola a 1FN – campo multivalor (marca-modelo-cor). Opção B viola a 1FN – campos com listas de valores (inicios_estadias e fins_estadias). Opção C viola a 2FN – atributo (duracao) é função de parte da chave (inicio, fim, placa). Opção D viola a 3FN – atributos não chave (primeiro_nome e sobre_nome) dependem de outro atributo não chave (nome_completo). Opção E está na BCFN (não apresenta nenhuma violação à BCFN). Pergunta 6 1 em 1 pontos Analise a seguinte sequência de comandos realizada com o usuário administrador (aquele que possui todos os privilégios sobre a instância do SGBD): CREATE USER 'u1'@'%' IDENTIFIED BY 'senha'; CREATE USER 'u2'@'%' IDENTIFIED BY 'senha'; CREATE USER 'u3'@'%' IDENTIFIED BY 'senha'; CREATE DATABASE db1; USE db1; CREATE TABLE tb1 (id int, x int); CREATE TABLE tb2 (id int, x int); GRANT SELECT ON db1.* TO u1; GRANT SELECT, DELETE ON db1.* TO u2; GRANT UPDATE, INSERT ON db1.tb1 TO u3; CREATE DATABASE db2; USE db2; CREATE TABLE tb1 (id int, x int); CREATE ROLE r1; GRANT ALL ON db2.* TO r1; GRANT r1 TO u3; SET DEFAULT ROLE ALL TO u3; FLUSH PRIVILEGES; Considerando que os comandos apresentados já foram executados (todos com sucesso), associe a lista de comandos à lista de trechos das saídas produzidas por esses comandos. Lista de comandos (o sinal $ indica um comando realizado no sistema operacional e o sinal > indica um comando realizado no MySQL): (I) $ mysql -u u1 db2 -psenha (II) $mysql -u u2 db1 -psenha > DROP tb2; (III) $ mysql -u u3 db1 -psenha > UPDATE tb1 SET x = 2*x WHERE x > 10; (IV) $ mysql -u u3 db2 -psenha > UPDATE tb1 SET x = 2*x WHERE x > 10; Lista de trechos das saídas: ( ) SELECT command denied to user Resposta Selecionada: b. Respostas: a. b. c. d. e. Comentário da resposta: ( ) Access denied for user ( ) Query OK ( ) You have an error in your SQL syntax A sequência correta dessa associação é: (III) (I) (IV) (II) (IV) (I) (III) (II) (III) (I) (IV) (II) (IV) (I) (II) (III) (I) (II) (III) (IV) (IV) (III) (II) (I) b. O comando I resultará em acesso negado, pois u1 não tem nenhum privilégio sobre db2. O comando II resultará em erro de sintaxe, pois o comando correto seria “DROP TABLE tb2”. O comando III resultará em erro de permissão, pois, apesar de ter direito ao UPDATE, u3 não possui direito de SELECT em db1.tb1, e a condição do WHERE impõe a necessidade de leitura da tabela. Já o comando IV resultará em sucesso, pois u3 recebeu os privilégios de r1, que tem acesso total a db2. Pergunta 7 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/dat aset/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 ); 1 em 1 pontos http://dados.gov.br/dataset/prestacao-de-contas-das-campanhas-eleitorais Resposta Selecionada: e. Respostas: a. b. c. d. e. Comentário da resposta: 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.0 SiglaPartido Valor ------------ ---------- PSDB 50000.0 PSB 50000.0 PT 700000.0 PT 1615000.0 PT 500000.0 SiglaPartido total_recebido ------------ -------------- PSDB 57058765.03 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 8 Resposta Selecionada: a. Respostas: a. 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-si stema-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? 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; 1 em 1 pontos http://dados.prefeitura.sp.gov.br/dataset/dados-do-sistema-de-atendimento-ao-cidadao-sac-156 b. c. d. e. Comentário da resposta: SELECT tema, 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 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 aliasno SELECT. Pergunta 9 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 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.) 1 em 1 pontos Resposta Selecionada: a. Respostas: a. b. c. d. e. Comentário da resposta: 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 10 Considere a seguinte consulta: 1 em 1 pontos Resposta Selecionada: d. Respostas: a. 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. Obs: Todas as entradas se referem à tabela “funcionario”. 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 | +----------+ 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. c. 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 | +----------+ 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 | +----------+ Quinta-feira, 24 de Agosto de 2023 18h10min12s BRT d. e. Comentário da resposta: 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 | +----------+ Entrada: +----------+-------+------+ | nome | idade | sexo | +----------+-------+------+ | Moacir | 70 | M | | Geraldo | 67 | M | | Josefina | 63 | F | | Ivone | 70 | F | +----------+-------+------+ Saída: …Syntax error… 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 “Josefina”, 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. ← OK
Compartilhar