Академический Документы
Профессиональный Документы
Культура Документы
Algo como,
. . . . where [not] exists (select 1 from . . . .)
a) tb_pesquisadores
Obs Cdigo do grupo de pesquisa Nome do grupo de pesquisa Descricao do grupo Data de incio do grupo Data final do grupo
2. Seguindo a notao para a restrio de chave primria, especifique-a para as tabelas criadas. Mais tarde, na aula de implementao de projeto de banco de dados, voc ter que especificar outros elementos, no entanto, neste momento, voc indicar somente a chave primria. 3. Inclua dados nas suas tabelas.
a) A coluna
papel_grupo
indica qual o papel que o pesquisador possui no grupo de pesquisa a que pertence. Teoricamente, pode pertencer a vrios grupos com papis diferentes em cada grupo. Eventualmente, um grupo pode ter somente um pesquisador. Inicialmente, quando a tabela foi carregada esta coluna no estava preenchida. Vamos preench-la segundo o seguinte critrio, por grupo, considerando a classificao da remunerao em ordem decrescente: O pesquisador com o maior salrio do grupo o lder do grupo; o segundo o vice-lder do grupo; e os demais so assistentes. Para os cargos de lder e vice-lder, o critrio de desempate a idade, privilegiando o mais idoso, considerando ano, ms e dia. Se tiverem o mesmo dia de nascimento, os pesquisadores com a mesma remunerao dentro grupo tero o mesmo cargo. Fica ressalvado que um pesquisador no pode liderar mais que um grupo. Desta forma, se ele pertencer a mais que um grupo e atender as qualificaes de liderana em ambos, ele ficar com o cargo de lder no grupo mais antigo e poder participar com outros cargos, inclusive como vice-lder, dos demais grupos. 4. Crie a procedure de nome
pr_atribui_papel_pesquisador_num_grupo
que atuar sobre os dados de um nico grupo. b) A procedure tem um parmetro de entrada: - Cdigo do grupo de pesquisa; c) Percorre os dados da tabela referente ao grupo de pesquisa recebido como parmetro e faz a atualizao da coluna
papel_grupo
da tabela
tb_pesq_grupos
Faa isto atravs de um cursor percorrendo os registros da tabela referentes aos pesquisadores do grupo corrente, em ordem adequada.
Se o grupo tiver apenas um pesquisador, ele o lder; no caso de dois pesquisadores, no existem pesquisadores assistentes. Se mais que um pesquisador possuir a mesma remunerao, o critrio de desempate a idade favorecendo o mais idoso. Persistindo o empate, ambos tero o mesmo cargo. 5. Crie uma segunda procedure de nome
pr_atribui_papel_pesquisador
que por meio de um cursor, percorre a tabela de grupos de pesquisa em ordem adequada. Esta procedure no possui parmetros. Trata cada um dos grupos de pesquisa e para cada um deles, invoca a procedure criada anteriormente passando como parmetro o grupo de pesquisa corrente. A sintaxe de invocao de procedure a seguinte:
exec pr_atribui_papel_pesquisador_num_grupo v_nummero_grupo
Confira o resultado da execuo da sua procedure verificando os dados finais da sua tabela.
Atividade II
Pela estrutura da soluo anterior, voc pode ter ficado com a impresso de que necessrio utilizar procedures aninhadas para cursores aninhados. Mas isto no verdade. Para que isto fique claro, crie a procedure
pr_atribui_papel_pesquisador_v2
que faz a mesma tarefa anterior, mas utiliza os cursores aninhados dentro desta nica procedure. Basicamente, voc ter que deslocar o contedo do texto de uma procedure dentro da outra com alguns cuidados.
Atividade III
Numa das aulas anteriores, voc criou a procedure
pr_lista_dados_segunda_cidade
para apresentar a(s) cidades(s), que esto classificadas na segunda posio superior em nmero de habitantes, em relao cidade cujo cdigo foi recebido como parmetro. Na ocasio foi considerada a classificao em ordem crescente, ou seja, a(s) cidade(s) com o menor nmero de habitantes est(o) na primeira posio. Este mesmo critrio se aplica nesta atividade. Isto foi realizado, utilizando a estrutura
top n.
Voc deve considerar que em razo do arredondamento do nmero de habitantes na ordem de 104, existem vrias cidades na mesma classificao. claro que se voc utilizar a tabela tb_cidades2 que foi classificada por habitantes na primeira aula sobre cursores, o resultado a este item pode ser facilmente obtido. No entanto, voc utilizar a tabela
tb_cidades1.
que, utilizando, adequadamente, a estrutura de cursor e considerando como referncia a cidade recebida no primeiro parmetro atravs do seu cdigo, apresenta todos os dados das
cidades que esto na j-sima posio superior em nmero de habitantes segundo o critrio de classificao citado acima. No coloque a sua procedure em loop infinito. Na verso anterior, voc utilizou a estrutura top n mais que uma vez para resolver este problema e, potencialmente, poderia ter que us-la muitas vezes, seguidamente, para apresentar os resultados esperados. Naquela ocasio, foi advertido de que no era a melhor soluo e invivel para grandes volumes. Faa uma reflexo sobre as duas formas de resolver o problema. Qual a considerao a fazer na comparao entre as duas estratgias?