·

Análise e Desenvolvimento de Sistemas ·

Bases de Dados

Envie sua pergunta para a IA e receba a resposta na hora

Fazer Pergunta

Texto de pré-visualização

31/05/2023, 18:46 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash... b. Um rapaz está procurando um lugar para marcar um encontro. Ele está em dúvida entre um restaurante, um bar ou um café. Como o rapaz está com pouco dinheiro, ele vai considerar somente as opções mais baratas de cada categoria, e desde que o preço da diversão não saia mais que 100 reais. c. Um investidor pretende comprar um restaurante, um bar e um café. Mas o café ele só vai comprar se custar menos de 100 mil reais. d. Uma construtora aluga espaços para estabelecimentos comerciais, como restaurantes, bares e cafés. Um analista dessa construtora está montando um relatório com ensaios de aluguéis mais rentáveis para a construtora. e. A consulta não significa nada, pois possui um erro de sintaxe. Comentário da resposta: b. A consulta retornará a princípio três registros: o restaurante mais barato, o bar mais barato e o café mais barato. Mas cada uma dessas três linhas só será exibida se seu preço correspondente for menor que 100. Pergunta 2 1 em 1 pontos 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? Resposta Selecionada: d. 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". https://senacsp.blackboard.com/webapps/assessment/review/review.jsp?attempt_id=31415799_1&course_id=_211762_1&content_id=_94931... 2/13 31/05/2023, 18:46 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash... Respostas: a. 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". b. 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". c. Descrição acessível: Figura possui um retângulo cujo texto possui duas linhas. Primeira linha é "Livro". Segunda linha é "título, autor, editora, ano". https://senacsp.blackboard.com/webapps/assessment/review/review.jsp?attempt_id=31415799_1&course_id=_211762_1&content_id=_94931... 3/13 31/05/2023, 18:46 Senac Ambiente Virtual de Aprendizagem ELBERLAN RAMOS DA SILVA Revisar envio do teste: Clique aqui para iniciar o Quiz SP_GRAD_686276_2302_01 2301-BANCO DE DADOS Revisar envio do teste: CLIQUE AQUI PARA INICIAR O QUIZ Usuário ELBERLAN RAMOS DA SILVA Curso 2301-BANCO DE DADOS Teste Clique aqui para iniciar o Quiz Iniciado 31/05/23 18:25 Enviado 31/05/23 18:45 Data de vencimento 07/06/23 23:59 Status Completo Resultado total 10 pontos Tempo decorrido 19 minutos Resultado 10 de 10 pontos Respostas, Respostas enviadas, Respostas abertas, Respostas corretas, Comentários 1 em 1 pontos Pergunta 1 Considere as seguintes tabelas: CREATE TABLE bares (nome text, preco float); CREATE TABLE restaurantes (nome text, preco float); CREATE TABLE cafés (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(preco) FROM bares) UNION SELECT nome, preco FROM restaurantes WHERE preco = (SELECT min(preco) FROM restaurantes) UNION SELECT nome, preco FROM cafés WHERE preco = (SELECT min(preco) FROM cafés) ) as lazer WHERE preco < 100; Resposta Selecionada: b. Um rapaz está procurando um lugar para marcar um encontro. Ele está em dúvida entre um restaurante, um bar ou um café. Como o rapaz está com pouco dinheiro, ele vai considerar somente as opções mais baratas de cada categoria, e desde que o preço da diversão não saia mais que 100 reais. c. Um investidor está procurando um estabelecimento para comprar. Ele está analisando um certo conjunto de restaurantes, bares e cafés. Ele pretende comprar o mais barato entre todos esses estabelecimentos, desde que o preço não ultrapasse 100 mil reais. https://senacsp.blackboard.com/webapps/assessment/review/review.jsp?attempt_id=31415799_1&course_id=_211762_1&content_id=_94931... 1/13 31/05/2023, 18:46 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash... d. Livro 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”. e. 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”. Comentário da resposta: 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 3 1 em 1 pontos 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 https://senacsp.blackboard.com/webapps/assessment/review/review.jsp?attempt_id=_31415799_1&course_id=_211762_1&content_id=_94931... 4/13 31/05/2023, 18:46 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash... PHL-4506 BRASIL PHL4F06 Descrição acessível: Figura mostra duas placas de carro. Placa de cima é uma placa cinza (padrão antigo - não se lê o tipo da estado e nome do município) e a placa de baixo é uma placa Mercosul (padrão novo - fundo branco, teto azul, tipo do estado, sem estado, sem nome do município e com bandeira do Brasil). A placa cinza possui remarcação PHL4506, enquanto que a placa azul Mercosul possui a identificaçã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? Com 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”. (Placa do Mercosul: tire suas dúvidas e saiba o que já mudou. Quatro rodas. Disponível em: <https://quatrorodas.abril.com.br/auto-servico/placa-de-mercosul-tir e-suas-duvidas-e-saiba-o-que-ja-mudou-no-projeto/>. Acesso em: mar. 2020.) Considere a notícia acima e a existência de diversos bancos de dados no Brasil que armazenam veículos em seus registros. Considere que cada um desses bancos de dados têm uma tabela de veículos, cuja chave primária é a placa. Considere ainda que em cada banco de dados há outras tabelas que apontam para a tabela de veículos por meio de chaves estrangeiras. Dadas essas considerações, assinale a alternativa correta. https://senacsp.blackboard.com/webapps/assessment/review/review.jsp?attempt_id=_31415799_1&course_id=_211762_1&content_id=_94931... 5/13 31/05/2023, 18:46 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash... Resposta Selecionada: d. 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 alguma subterfúgio como por exemplo a desabilitação das chaves estrangeiras durante a operação. Respostas: a. 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. b. Quando um veículo trocar de placa, bastará atualizar diretamente a chave primária na 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 reexecução 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. d. 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 alguma subterfúgio como por exemplo a desabilitação das chaves estrangeiras durante a 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. Comentário da resposta: d. Embora a existência de chaves estrangeiras possa complicar a 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 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 https://senacsp.blackboard.com/webapps/assessment/review/review.jsp?attempt_id=_31415799_1&course_id=_211762_1&content_id=_94931... 6/13 31/05/2023, 18:46 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash... Resposta Selecionada: b. A proporção de companhias cadastradas que operaram voos registrados na tabela voos. Respostas: a. A quantidade 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 quantidade total de companhias cadastradas. d. Não representa nada, pois seja qual for o conteúdo das tabelas esse comando sempre retorn 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 “count(distinct companhia) FROM voos” (quantidade de companhias que operaram voos) por “SELECT count(*) FROM companhias” (quantidade de empresas cadastradas). Ou seja, temos a proporção de empresas que operaram voos pelo total de empresas cadastradas. Pergunta 5 Considere a tabela municipio criada com o seguinte comando: CREATE TABLE municipio ( id int auto_increment primary key, nome text, uf varchar(2) ); Considere ainda o seguinte estado para a essa tabela: > select * from municipio; id | nome | uf 1 | São Paulo | SP 2 | Osasco | SP 3 | Mateiros | TO Dado o estado definido acima, considere a execução do seguinte comando: INSERT INTO municipio(nome, uf) VALUES ('Salvador', 'BA'); Considera agora as seguintes afirmações: I – A execução do comando acima incorrerá em erro. II – A chave primária deve ser especificada no comando INSERT. Assinale agora a opção correta. Resposta Selecionada: b. As sentenças I e II são falsas. Respostas: a. As sentenças I e II são verdadeiras e a I é a explicação da II. b. As sentenças I e II são falsas. c. A sentença I é verdadeira, mas a II é falsa. d. Apenas a sentença I é verdadeira. Comentário da resposta: b. A chave primária foi especificada com a opção auto_increment, o que dispensa a especificação da chave primária no comando INSERT. 31/05/2023, 18:46 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash... Resposta Selecionada: b. As sentenças I e II são falsas. c. A sentença I é verdadeira, mas a II é falsa. d. As sentenças I e II são verdadeiras, mas a II não é a explicação da I. Comentário da resposta: b. A chave primária foi especificada com a opção auto_increment, o que dispensa a especificação da chave primária no comando INSERT. Pergunta 6 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 identifica corretamente os resultados obtidos para essas consultas. Resposta Selecionada: e. As consultas I, II, III e IV terão o mesmo resultado, independentemente do conteúdo das tabelas. Respostas: a. As consultas I e II terão o mesmo resultado. As consultas III e IV possuem erros de sintaxe. b. 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. c. 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. d. 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. e. As consultas I, II, III e IV terão o mesmo resultado, independentemente do conteúdo das tabelas. Comentário da resposta: e. No MySQL, o JOIN padrão (consulta II) e 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, podemos de duas formas possíveis: “tabela 1 JOIN tabela 2 JOIN tabela 3 ON condição 1 and condição 2” (consulta III) = “tabela 1 JOIN tabela 2 ON condição 1 JOIN tabela 3 ON condição 2” (consulta II). 31/05/2023, 18:46 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash... Resposta Selecionada: e. As consultas I, II, III e IV terão o mesmo resultado, independentemente do conteúdo das tabelas. Comentário da resposta: e. No MySQL, o JOIN padrão (consulta II) e 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, podemos de duas formas possíveis: “tabela 1 JOIN tabela 2 JOIN tabela 3 ON condição 1 and condição 2” (consulta III) = “tabela 1 JOIN tabela 2 ON condição 1 JOIN tabela 3 ON condição 2” (consulta II). Pergunta 7 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; d. SELECT DISTINCT m.nome as nome_medico FROM medico m FULL JOIN consulta c ON c.id_medico = m.id WHERE data != curdate() or data is null; e. Dada a modelagem apresentada, não é possível realizar a consulta desejada em ú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 “data is null”. Para que a consulta devolva os médicos com consulta marcada em outros dias que não a data corrente, temos o “data != curdate()”. Com o DISTINCT, a consulta SQL devolverá 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. 31/05/2023, 18:45 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash... 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, y int); GRANT SELECT ON db1.* TO u1; GRANT SELECT, DELETE ON db1.tb1 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 ( ) Access denied for user ( ) Query OK ( ) You have an error in your SQL syntax A sequência correta dessa associação é: https://senacsp.blackboard.com/webapps/assessment/review/review.jsp?attempt_id=31415799_1&course_id=_211762_1&content_id=_9493... 10/13