SóProvas


ID
29113
Banca
CESGRANRIO
Órgão
Petrobras
Ano
2008
Provas
Disciplina
Banco de Dados
Assuntos

Considere o seguinte enunciado para responder às questões de nos 31 a 34.
Uma empresa de geração de energia deseja armazenar um conjunto de dados importantes sobre os tipos de energia com que
trabalha e os seus campos de geração. Cada tipo de energia possui um código (identificador único), um nome e uma descrição.
Além disso, cada campo de geração possui um código (identificador único), um nome, uma região e um valor médio por
kW. Assume-se que:
. cada campo de geração de energia é de um, e somente um, tipo de energia;
. pode existir mais de um campo de geração para cada tipo de energia;
. podem ser previstos alguns tipos de energia para os quais ainda não existem campos de geração.

Suponha o seguinte esquema de relação que modela o problema descrito anteriormente, para responder às questões de nos 33 e 34.

TipoEnergia (codigo, nome, descricao)
CampoGeracao (codigo, nome, codigoTipoEnergia, regiao, valorMedioPorkW)
observação: o campo codigoTipoEnergia armazena o valor do código do tipo de energia de um campo de geração.

Qual comando SQL padrão retorna o código e o nome (somente) de todos os tipos de energia que possuem, pelo menos, um campo de geração em uma região chamada 'Santos'?

Alternativas
Comentários
  • a) e e) Errado o * seleciona todas as colunas
    como o o campo codigoTipoEnergia armazena o valor do código do tipo de energia de um campo de geração. o item correto e o d.
  • a) SELECT * FROM TipoEnergia WHERE codigo IN (SELECT codigoTipoEnergia FROM CampoGeracao WHERE regiao = 'Santos');
    Retorna todas as 3 colunas de TipoEnergia sendo que o enunciado só pede 2. Errado


    b) SELECT te.codigo, te.nome FROM TipoEnergia te WHERE te.codigo IN (SELECT cg.codigo FROM CampoGeracao cg WHERE cg.regiao = 'Santos');
    Retorna as 2 colunas de TipoEnergia que o enunciado pede, porém a coluna especificada na subquery se refere à chave primária da tabela CampoGeracao ao invés da chave estrangeira que referencia TipoEnergia (esta é a pegadinha desse item). Errado


    c) SELECT te.codigo, te.nome FROM TipoEnergia te, CampoGeracao cg WHERE te.codigo=cg.codigo AND cg.regiao = 'Santos';
    Idem acima, com a junção sendo feita entre chaves primárias de tabelas distintas e não entre chave primária e estrangeira referente. Errado


    d) SELECT te.codigo, te.nome FROM TipoEnergia te, CampoGeracao cg WHERE te.codigo=cg.codigoTipoEnergia AND cg.regiao = 'Santos';

    Retorna as 2 colunas de TipoEnergia que o enunciado pede, com a junção sendo feita entre a chave primária de TipoEnergia e a chave estrangeira de CampoGeracao que referencia TipoEnergia. Correto
     
    e) SELECT DISTINCT te.* FROM TipoEnergia te, CampoGeracao cg WHERE te.codigo=cg.codigoTipoEnergia AND cg.regiao = 'Santos';

    Atenderia ao enunciado se não retornasse todas as 3 colunas de TipoEnergia ao invés das 2 pedidas. Errado