Baixe o app para aproveitar ainda mais
Prévia do material em texto
Questão 1/10 - Sistema Gerenciado r de Banco de Da dos Uma das principai s razões p ara a cr iação de uma view e stá na necessidade de aumentar a e ficiência do banco de dados. Ao contrário de um query comum o resultado da view está registrado fisicamente no banco. Sendo assim, toda a complexidade da criação da view só tem impacto no processamento durante o processo de criação. Depois, todas as consultas a view têm u m cu sto de p rocessamento igual ao da consulta a qualquer tabela. Considerando o query SQL a seguir, crie o seu próp rio query para criar uma view chamad a de CientistasHora que co ntenha o número total de horas de cada cientista. Observe que você deverá utilizar pelo menos um tipo de jo in e q ue os d ados deverão ficar ord enados pelo nome do cientista e m ordem crescente. Resposta: DROP VIEW IF EX ISTS CientistasHora ; CREATE VIEW Cienti stasHora AS SELECT C.No me, A.Projeto, P.H oras FROM Cientistas C LEFT JOIN Atribuido A A ON (C.ID = A.Cient ista) LEFT JOIN Proj etos P ON (A.Projet o = P.Codigo); SELECT Nome, Ho ras FROM CientistasH ora ORDER BY No me ASC; Questão 2/10 - Sistema Gerenciado r de Banco de Da dos O trab alho de gestão e manut enção d e banco de dado s, e ventualmente, nos apresenta desafios interessantes, não é raro temos ace sso apenas aos dado s ar mazenados e a estrutura da tabela. E te mos que desen volver novos Scripts SQL para a solução d e pr oblemas inéditos . Neste caso, o primeiro passo é se mpre analisar um fra gmento da tabela p ara perceber a semântica contida nos dados. Sendo assim, con sidere o seg uinte quadro co mo sendo um a amostra dos dad os contidos na tabela Livros em um banco de dados sobre sua responsabilidad e. Apesar deste fragmento ser peq ueno, esta tabela contém vária s dezena s de Gigab ytes de dad os torna ndo suas operações excessivamente lentas. O analista de banco de dados solicitou que você criasse uma view chamada liv ros_Id ioma contendo os idiomas e o total de livros po r idio ma (pub_lang) acreditando q ue essa view irá ter um impacto positivo na operação diária do banco de dad o s. Para resolver esta questão você deve e screver um q uery SQL que ate nda as especificações pas sadas e crie a view necessária: Resposta: DROP VIEW IF EX ISTS livros_Idioma; CREATE VIEW livro s_Idioma AS SELECT pub_lang, COUNT(pub_lang) FROM Livros GROUP B Y pub_lang Questão 3/10 - Sistema Gerenciado r de Banco de Da dos A grande diferença e ntre uma proced ure e uma function é que esta últi ma devolve d ados para o siste ma e, pode ser facilmente utilizada par a a recuperaç ão de informação e m um Banco de Dado s. Consid erando o có digo da fu nction armazenada e m um d eterminado banco de dados, escreva o query SQL que reto rne uma lista de nomes de cons umidores (nomeConsumidor) e seu nível de crédito sab endo que a tabela Consumidores tem o campo NomeCo nsumidor e ca mpo limiteCredito. Observe também que o r esultado deve ser o rdenado pelo campo NomeCon sumid or. Para completar esta tarefa você d everá escrever o qu ery SQL que atende a s especificações ac ima usando os d ados contidos na Fu nction o u especificados no enunciado . Resposta: DELIMITER $$ CREATE FUNCT ION nomeConsumidor( ) RETURNS LIST DETERM INISTIC BEGIN DECLARE nList LI ST; SELECT No meConsumidor, selectNivelCo nsumidor(limiteCredito ) FROM Consu midores RETURN nList; END; Questão 4/10 - Sistema Gerenciado r de Banco de Da dos Para concluir um trabalho ini ciado por um dos seus coleg as de trabalho você terá que criar uma tabela chamada de GerenteDepartamen to que fará o relacionamento estre as duas tabelas que ele já criou com pelo menos duas chaves estrangeiras com deleç ão em cascata. Observe, que p ara completar esta tarefa, ele lh e deixou o có digo de cr iação d as duas tabelas. Como pod e ser visto a seguir: Observe que também d evem ser registradas a data de pro moção, data em que o funcionário assumiu a função de gerente e a data final, data e m q ue ele deixa d e ser gerente. Po r fim, não esq ueça que esta tab ela deve ter u ma cha ve primária composta. P ara co mpletar esta tarefa, além da s datas, será necessário relacionar o e mpregado co m o departa mento. Uma vez que tenha entendido a relação entre os dad os, crie a tabela necessária . Questão 7/10 - Sistema Gerenciado r de Banco de Da dos Uma d as pr incipais razões para a pop ularidade do modelo relacional e da linguage m SQ L é a facilidad e d e recuperação de informações. O desenvolvedor pode, sem muito esforço, cruzar informações em tabelas diferentes ou, criar comandos aritiméticos q ue pr emitem a nalisar os dados armazenados e descobrir nova s informações. Considerando o query SQL a se guir, que cria um conjunt o de tabelas em um ba nco de dados, escreva o seu pró prio query SQL q ue devolva u ma lista de todos os cientistas, seus p rojetos e o número de horas empregado por cada um ne ste pr ojeto. Não se esqueça que lista deve ser ordenada por nome de projeto e por no me de cientista sempre em ordem crescente. Resposta: SELECT p.No me, c.Nome, a.Projet o, p.Horas FROM cientistas c LEFT JOIN Atribuido A a on (c.ID = a. Cientista) LEFT JOIN Proj etos p on (a.Projet o = p.Codigo ) ORDER BY p.No me ASC, c.No me ASC; Questão 8/10 - Sistema Gerenciado r de Banco de Da dos Uma estraté gia eficiente d e aumentar a operacionalidade de um banco de dad os é a criação de views. Podemos entender uma view co mo sendo uma tab ela especial, quase virtual, q ue não tê m dados próprios mas que existe no banco po r meio de algum tipo de relacionamento criado entre os dados das outras tabelas. Ainda que simplista, esta definição p ermite vislumbrar a utilidade das vi ews. Muitas vezes, temos q ue criar views para atender a necessidad e de aumento de eficiência dos Bancos de Dado s que Gere nciamos. Sendo assim, considera ndo o q uery SQL a seguir, escreva o seu próprio query SQL d e forma a criar uma view chamada de ProjetosHora que contenha o nome dos proj etos e o número de horas gasto em cada um. O bserve que os dad os devem estar ordenad os em ordem crescente pelo no me do projeto. Resposta: DROP VIEW IF EX ISTS ProjetosHora ; CREATE VIEW Pro jetosHora AS SELECT p.No me, p.Horas FROM Projetos p LEFT JOIN Proj etos ON (Cient istas.ID = AtribuidoA.Ci entista) LEFT JOIN Proj etos ON (AtribuidoA.Projet o = Projetos.Codigo) ; SELECT Nome, Ho ras FROM Pro jetosHora ORDER BY No me ASC; Questão 9/10 - Sistema Gerenciado r de Banco de Da dos Seu super visor lhe solicitou a criação de um Trigg er para uma deter minada tabela em um b anco de d ados SQ L co m as seguintes funcionalidades: a ntes que q ualquer valor inteiro s eja inserido e m um campo de uma deter minada tabela, este valor acrescid o de 4 unidades deverá ser inserido em outra t abela. Além disso, caso e xista este me smo valor em al guma linha de uma terce ira tabela, esta li nha deverá ser deletada. P or fim, ca so este valor e xista e m uma q uarta tab ela, este valor deverá ser atualizado para o resultado d a so ma do valor inicial com 5 0 unidades. Para testar o seu Trigger,ele lhe indicou o seguinte q uery SQL para a criação das quatro tabelas de teste: Para completar esta tarefa você terá que escrever o código que cria o Trigger especificado sabendo que a tabela associada a este Trigger será a tabela TesteTrigger1 e que todas as outras tabela s neces sárias se guem a or den nu mérica apresentada no script S QL acima Resposta: DELIMITER $$ CREATE TRIGGER T1 AFTER Insert TesteTrigger1 FOR EACH ROW BEGIN set @valor1 = NEW.TesteTrigger1.Valor1; set @valor2 = NEW.TesteTrigger2.Valor1; set @valor3 = NEW.TesteTrigger3.Valor1; set @valor4 = NEW.TesteTrigger4.Valor1; SET @valor = NULL; if(NEW. Valor1 IS NOT NULL) THEN uestão 10 /10 - Sistema Gerenciador de Banco de Da dos Utilizamod proced ures para automatizar processos repetitivos na gestão do nosso Banco de Dados. Suponha, por exemplo, que você p recisará calcular a média em di versas tabelas, o u q ue far á um arred ondamento qualquer em todas elas, ou ainda, que precisará faz er contas com datas. Todos estes casos, são casos o nde o uso de uma procedure pode poupar trabalho e prob lemas. Consider ando o query SQL a seguir, que cria um co njunto de tabelas e m um banco de dados. Escreva o seu próprio query SQL p ara criar um procedu re que receba o nome de um parceiro e devolva: o nome do parceiro, a organização a que ele faz parte e o código desta or ganização. Resposta: DELIMITER // DROP PROCEDUR E IF EXISTS nome_org_id; // CREATE PROCEDUR E nome_org_id(IN in_ nome varc har(60)) BEGIN SELECT p.Nome , t.No meTipo, p.Orgao ID FROM Parceiros p INNER JOIN tipoorg t on (p.OrgaoId = t.O rgaoId) WHERE p.Nome = in_no me; END // DELIMITER ; SET @in_nome = " Teste Nome"; CALL nome_o rg_id(@in_no me);
Compartilhar