SóProvas


ID
1561504
Banca
Marinha
Órgão
Quadro Complementar
Ano
2013
Provas
Disciplina
Banco de Dados
Assuntos

Analise as informações a seguir.

militar(NIP,nome, salario, indicativo) 
organizacao(indicativo,nome organizacao_area)
 areas(area, adicional)

Baseando-se nas estruturas de tabelas acima, assinale a opção que apresenta a consulta SQL que atualiza o salário de
todos os militares acrescentando o adicional que cada um tem direito conforme a área em que eles pertençam.

Alternativas
Comentários
  • Questão maluca. Coloca varias alternativas e não explica como é obtido o adicional.

  • Thales, o cálculo do adicional é padrão em todas as alternativas. A questão não nos pede que entendamos isso.

    Com relação à resposta, temos:

    UPDATE militar m, organizacao o
    SET salario = m.salario * (SELECT ((a.adicional/100)+1)
    FROM areas a WHERE a.area = o.area)
    WHERE m.indicativo   = o.indicativo

    1) UPDATE militar m, organizacao o: Projeta os campos (atributos) que serão utilizados na atualização.

    2) SET salario = m.salario * (SELECT ((a.adicional/100)+1) FROM areas a WHERE a.area = o.area): Define que a atualização será no campo salário da tabela militar através do alias m e que o segundo fator da multiplicação é encontrado a partir da junção das tabelas areas e organizacao por meio do campo area.

    3) WHERE m.indicativo   = o.indicativo: Perceba que antes desse Where, há um parênteses fechando o SELECT utilizado como parte do cálculo do novo salário. Esse é um dos motivos que invalida outras alternativas. Aqui, é definida uma segunda condição, a junção das tabelas militar e organizacao através do campo indicativo.

    O segredo da questão é observar que se trata de um relacionamento m:n e que a tabela organizacao é a tabela desse relacionamento múltiplo. Sendo assim, é necessário fazer duas junções (militar-organizacao e organizacao-area) para conseguir calcular o adicional conforme a area do militar.