Prévia do material em texto
29/11/25, 20:08 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash... SP_GRAD_686276_2504_01 2503-BANCO DE DADOS Quiz Revisar envio do teste: Clique aqui para iniciar 0 Quiz Revisar envio do teste: Clique aqui para iniciar Quiz Usuário VICTOR CORREA Curso 2503-BANCO DE DADOS Teste Clique aqui para iniciar Quiz Iniciado 29/11/25 19:38 Enviado 29/11/25 20:07 Data de vencimento 10/12/25 23:59 Status Completada Resultado da tentativa 9 em 10 pontos Tempo decorrido 28 minutos Resultados exibidos Todas as respostas, Respostas enviadas, Respostas corretas, Comentários Pergunta 1 1 em 1 pontos Placa do Mercosul: tire suas dúvidas e saiba 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 segundo número por uma letra AM-MANAUS 4506 BRASIL 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 1/1629/11/25, 20:08 Revisar envio do teste: Clique aqui para iniciar Quiz &ndash... 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á segundo número (da esquerda para a direita) ser substituído por uma letra de acordo com a tabela abaixo: Como é Como ficará 1 B 3 D 5 F 6G 7 H 81 Com isso, uma placa QUA1960 se transformará em QUA1J60, com "J" dando lugar ao "9". (Placa do Mercosul: tire suas dúvidas e saiba que já mudou. Quatro rodas. Disponível em:29/11/25, 20:08 Revisar envio do teste: Clique aqui para iniciar Quiz &ndash... Dadas essas considerações, assinale a alternativa correta. Resposta Mesmo com essas mudanças, é possível manter a placa Selecionada: como chave primária. Quando um veículo trocar de placa, será preciso atualizar a chave primária na tabela de veículos e atualizar os valores das chaves estrangeiras nas outras tabelas. Como cada uma dessas operações pode violar as restrições do banco de dados, pode ser necessário algum subterfúgio como por exemplo a desabilitação das chaves estrangeiras durante a d. operação. Respostas: As tabelas de veículos não aceitarão que um dado veículo troque de placa, uma vez que não é possível alterar o valor de uma chave primária. a. Quando um veículo trocar de placa, basta atualizar diretamente a chave primária na tabela de veículos (as b. chaves estrangeiras nunca impedirão essa mudança). Essa alteração no "espaço do problema" provocará obrigatoriamente uma necessidade de atualização no sistema para que se utilize algum outro campo como chave primária: talvez o número de chassi ou mesmo um valor sequencial gerado automaticamente. C. Mesmo com essas mudanças, é possível manter a placa como chave primária. Quando um veículo trocar de placa, será preciso atualizar a chave primária na tabela de veículos e atualizar os valores das chaves estrangeiras nas outras tabelas. Como cada uma dessas operações pode violar as restrições do banco de dados, pode ser necessário algum subterfúgio como por exemplo a desabilitação das chaves estrangeiras durante a d. operação. A alteração apenas da chave primária na tabela de veículos não fere a integridade referencial do banco de dados, uma vez que a tabela de veículos permanece consistente. e. Comentário dad. Embora a existência de chaves estrangeiras possa complicar a resposta: operação, é possível atualizar chaves primárias. Também é possível configurar as chaves estrangeiras para que sejam atualizadas automaticamente ("on update cascade"), mas essa opção não é default. Pergunta 2 1 em 1 pontos Considere as seguintes tabelas: 3/1629/11/25, 20:08 Revisar envio do teste: Clique aqui para iniciar Quiz &ndash... 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 SELECT DISTINCT m.nome as nome_medico FROM Selecionada: medico m LEFT JOIN consulta c ON c.id_medico = m.id WHERE data != curdate() or data is null; a. Respostas: 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; a. SELECT DISTINCT m.nome as nome_medico FROM medico m JOIN consulta c ON c.id_medico = m.id WHERE b. 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 = d. m.id and data != curdate() or data is null; Dada a modelagem apresentada, não é possível realizar a e. consulta desejada com um único SELECT. Comentário a. Com um LEFT JOIN, teremos os médicos associados a alguma da resposta: consulta e também os médicos sem consultas. Para que a consulta devolva os médicos sem consulta alguma marcada, temos "data is null". Para que a consulta devolva os médicos com consulta marcada em outros dias que não dia corrente, temos "data != curdate()". Sem DISTINCT, a consulta SQL devolveria uma linha por consulta médica, que poderia repetir os nomes dos médicos. Como queremos listar somente os médicos, DISTINCT é desejável. Pergunta 3 1 em 1 pontos 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 NoSQL a quebrar esse domínio. Discutimos os principais benefícios de uma abordagem NoSQL, mas enfatizamos que os bancos de dados relacionais ainda 4/1629/11/25, 20:08 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash... 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. Acesso em: 15 jul. 2020. Assinale a alternativa que melhor explica o que os autores do texto citado querem dizer com "persistência poliglota". Resposta Novos sistemas continuarão usando os SGBDs Selecionada: relacionais, mas ao mesmo tempo utilizarão outros bancos NoSQL para propósitos específicos. Respostas: "Persistência poliglota" diz respeito aos vários tipos de bancos NoSQL disponíveis (excluindo, portanto, os bancos relacionais). a. sucesso do movimento NoSQL se dá principalmente porque esses novos bancos suportam uma grande variedade de linguagens de programação (Java, .NET, b. Python, Ruby, etc.). Novos sistemas continuarão usando os SGBDs relacionais, mas ao mesmo tempo utilizarão outros bancos NoSQL para propósitos específicos. "persistência poliglota" consiste numa Babel de bancos d. 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. e. Comentário da "persistência poliglota" se refere a uma só aplicação resposta: utilizando diversos tipos de persistência: seja relacional, seja NoSQL. Pergunta 4 1 em 1 pontos Considere a seguinte tabela: Tabela de municípios: 5/166/16 Revisar envio do teste: Clique aqui para iniciar Quiz &ndash.. 7 n u f r e u a c a S S 1 1 ã P 2 5 2 2 5 1 2 0 2 3 M 2 3 el G 5 3 1 1 0 7 0 S S 6 4 P 7 5 9 0 3 G S 1 7 P 2 5 1 2 7 8 7 9 8 H 2 R S 2 1 P 9 5 7 8 m e o P a ul o o o ri Z nt e o r a 9 a u at in g u et á a u 29/11/25, 20:0829/11/25, 20:08 Revisar envio do teste: Clique aqui para iniciar Quiz &ndash... h 0 7 ia Al P 1 1 ta A 1 5 m 4 9 ir 5 5 a 9 3 4 3 Fonte: É correto afirmar que essa tabela: Resposta Possui os campos "nome", "uf", "populacao" e "area". Selecionada: Respostas: Possui 4 campos e 7 registros. a. b. Possui 4 registros. Possui os campos "nome", "uf", "populacao" e "area". C. Utiliza todos os tipos de colunas presentes no MySQL: d. text e integer. Não é uma tabela; na verdade é uma tupla. e. Comentário da Cada coluna que vemos corresponde a um campo da tabela do resposta: banco de dados. primeira linha que vemos representa os nomes dos campos; já as linhas subsequentes representam os registros da tabela do banco de dados. Pergunta 5 1 em 1 pontos Considere a seguinte modelagem feita para banco de dados de um sistema de estacionamento: veiculo placa VARCHAR(7) marca VARCHAR(45) estadia modelo VARCHAR(45) inicio DATETIME cor VARCHAR(10) fim DATETIME cpf_dono VARCHAR(11) placa_veiculo VARCHAR(7) nome_dono VARCHAR(45) Indexes Indexes 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; é chave estrangeira para veiculo.placa. Assinale a alternativa que indica em que forma normal se encontra essa modelagem. 7/1629/11/25, 20:08 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash... Resposta b. 2FN. Selecionada: Respostas: 1FN. a. b. 2FN. C. 3FN. d. BCFN. Essa modelagem não atende nem à 1FN. e. Comentário b. Essa modelagem viola a 3FN, pois cpf_dono e nome_dono são da resposta: 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 multivalorados. 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 6 1 em 1 pontos 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, 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. da. Banco de dados: aprenda 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. Considere essas três formas de se utilizar computador para se obter a previsão do tempo: SELECT temperatura, precipitacao FROM previsao WHERE data = CURDATE(); 8/1629/11/25, 20:08 Revisar envio do teste: Clique aqui para iniciar Quiz &ndash... 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 alternativa que corretamente ordena os itens acima em ordem crescente de abstração. Resposta III, I, II. e. Selecionada: Respostas: I, II, III. a. b. III, II, I. II, I, III. C. d. Todas os itens estão no mesmo nível de abstração. III, I, II. e. Comentário da e. Quanto mais detalhes relativos a própria máquina resposta: fornecemos em uma instrução, menor é nível de abstração do comando. Pergunta 7 0 em 1 pontos Analise a seguinte sequência de comandos realizada com usuário administrador (aquele que possui todos os privilégios sobre a instância do SGBD): CREATE USER IDENTIFIED BY 'senha'; CREATE USER 'u2'@'%' IDENTIFIED BY 'senha'; CREATE USER 'u3'@'%' IDENTIFIED BY 'senha'; CREATE DATABASE USE CREATE TABLE (id int, int); CREATE TABLE tb2 (id int, int); GRANT SELECT ON TO GRANT SELECT, DELETE ON TO u2; GRANT UPDATE, INSERT ON db1.tb1 TO u3; CREATE DATABASE db2; 9/1629/11/25, 20:08 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash... USE db2; CREATE TABLE (id int, 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 sinal > indica um comando realizado no MySQL): (I) $ mysql -u ul db2 -psenha (II) $mysql -u u2 -psenha > DROP tb2; (III) $ mysql -u u3 -psenha > UPDATE SET = WHERE > 10; (IV) $ mysql -u u3 db2 -psenha > UPDATE SET = 2*x WHERE > 10; Lista de trechos das saídas: () SELECT command denied to user () Access denied for user Query OK You have an error in your SQL syntax A sequência correta dessa associação é: Resposta (IV) (I) (III) (II) a. Selecionada: Respostas: (IV) (I) (III) (II) a. b. (III) (I) (IV) (II) C. (IV) (I) (II) (III) d. (I) (II) (III) (IV) 10/1629/11/25, 20:08 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash... (IV) (III) (II) (I) e. Comentário comando resultará em acesso negado, pois u1 não tem da resposta: nenhum privilégio sobre db2. comando resultará em erro de sintaxe, pois comando correto seria "DROP TABLE tb2". comando resultará em erro de permissão, pois, apesar de ter direito ao UPDATE, иЗ não possui direito de SELECT em db1.tb1, e a condição do WHERE impõe a necessidade de leitura da tabela. Já comando IV resultará em sucesso, pois recebeu os privilégios de r1, que tem acesso total a db2. Pergunta 8 1 em 1 pontos Considere a seguinte tabela de pratos disponíveis em um restaurante: CREATE TABLE pratos (nome text, pais_origem text, vegetariano boolean, preco float); Considerando essa tabela, assinale a alternativa com comando que torna possível a execução da seguinte consulta: SELECT pais_origem as pais, count(*) as qtd_pratos_vegetarianos FROM pratos_vegetarianos GROUP BY pais_origem; + + + pais qtd_pratos_vegetarianos + + + Índia 10 Itália 7 Brasil 4 + Resposta CREATE VIEW pratos_vegetarianos AS SELECT nome, Selecionada: b. pais_origem FROM pratos WHERE vegetariano; Respostas: CREATE SUBSELECT pratos_vegetarianos AS SELECT nome, pais_origem AS pais FROM pratos WHERE a. vegetariano; CREATE VIEW pratos_vegetarianos AS SELECT nome, b. pais_origem FROM pratos WHERE vegetariano; CREATE SUBSELECT pratos_vegetarianos AS SELECT nome, pais_origem FROM pratos WHERE vegetariano; C. 11/1629/11/25, 20:08 Revisar envio do teste: Clique aqui para iniciar Quiz &ndash... CREATE VIEW pratos_vegetarianos FROM SELECT nome, d. pais_origem FROM pratos WHERE vegetariano; CREATE VIEW FOR pratos AS SELECT * FROM e. pratos_vegetarianos WHERE vegetariano; Comentário da b. Para que a consulta funcione, é preciso criar uma view para resposta: a tabela pratos. E a sintaxe para criar uma view é CREATE VIEW AS . Pergunta 9 1 em 1 pontos Considere a seguinte tabela de pratos disponíveis em um restaurante: CREATE TABLE pratos (nome text, pais_origem text, vegetariano boolean, preco float); Qual alternativa seleciona somente os pratos vegetarianos, mostrando a diferença entre preço médio do prato e preço do prato vegetariano mais caro de seu país de origem? Resposta SELECT nome, (SELECT max(preco) FROM pratos p2 Selecionada: WHERE p1.pais_origem = p2.pais_origem and vegetariano) preco as FROM pratos p1 WHERE vegetariano; Respostas: SELECT nome, (SELECT max(preco) FROM pratos p2 WHERE vegetariano GROUP BY pais_origem) preco as FROM pratos p1 WHERE vegetariano; a. SELECT nome, (SELECT max(preco) FROM pratos p2 WHERE p1.pais_origem = p2.pais_origem) preco as diferenca_pro_vegetariano_mais_caro FROM pratos p1 b. WHERE vegetariano; SELECT nome, (SELECT max(preco) FROM pratos p2 WHERE p1.pais_origem = p2.pais_origem and vegetariano) preco as diferenca_pro_vegetariano_mais_caro FROM pratos p1 WHERE vegetariano; C. SELECT nome, (SELECT max(preco) FROM pratos p2 WHERE p1.pais_origem = p2.pais_origem and vegetariano) preco as d. diferenca_pro_vegetariano_mais_caro FROM pratos p1; 12/1629/11/25, 20:08 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash... SELECT nome, (SELECT max(preco) FROM pratos WHERE vegetariano) preco as FROM pratos WHERE vegetariano; e. Comentário É preciso selecionar somente os pratos vegetarianos ("WHERE da resposta: vegetariano" no final) e mostrar a diferença entre cada prato e "alguma coisa" ("alguma coisa" preco). Essa "alguma coisa" deve ser preço mais caro do prato vegetariano daquele país. Para ser vegetariano, há "and vegetariano" no sub select, e, para ser do mesmo país, há "WHERE p1.pais_origem = p2.pais_origem", comparando os países do select mais interno (p2) com do select mais externo (p1). Pergunta 10 1 em 1 pontos 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. Obs: Todas as entradas se referem à tabela "funcionario". Resposta Entrada: Selecionada: + 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 + + d. 13/1629/11/25, 20:08 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash... Respostas: 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 + + a. 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 + + b. 14/1629/11/25, 20:08 Revisar envio do teste: Clique aqui para iniciar Quiz &ndash... Entrada: + + nome idade I 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 + + 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 + + d. 15/1629/11/25, 20:08 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash... Entrada: nome idade sexo + + Moacir 70 M Geraldo 67 M Josefina 63 F Ivone 70 F + + Saída: Syntax error... e. Comentário D. A consulta irá selecionar todos os homens com idade até 65 da resposta: anos e todas as mulheres com idade até 60 anos. Nas opções A e 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. Sábado, 29 de Novembro de 2025 20h07min42s BRT OK 16/16