SóProvas


ID
1131586
Banca
CS-UFG
Órgão
UEAP
Ano
2014
Provas
Disciplina
Banco de Dados
Assuntos

Considere o banco de dados relacional EMPRESA, composto de duas relações , descrito a seguir. A relação E refere-se aos empregados, cuja o esquema é E(CPF, Nome, Salario, CPF do Supervisor, Depto), onde: CPF identifica unicamente cada empregado; CPF do Supervisor referencia o CPF do supervisor direto do empregado; Depto referencia o departamento em que o empregado está lotado; e Nome e Salário denotam o nome e o salário do empregado, respectivamente. A relação D refere-se aos departamentos, cujo esquema é D (Código, Nome), onde: Código identifica unicamente cada departamento; e Nome denota o nome do departamento.


Considere a expressão em SQL.

SELECT X.Nome, Y.Nome FROM E X JOIN E Y ON X.CPFdoSupervisor = Y.CPF

Essa expressão refere-se à seguinte consulta ao banco de dados EMPRESA: para os empregados que possuem supervisor direto, “quais os nomes do

Alternativas
Comentários
  • acho que seria a "c", pois X é o supervisor...

  • Questão correta. Na relação X é onde o campo CPFdoSupervisor foi usado, fazendo Join com ela mesma atráves da relação Y, ou seja, a relação X pertence aos funcionários e a Y pertence ao supervisor dos mesmos!

    É um relacionamento recursivo.


    Bons estudos.

  • X é empregado, pois tem CPFdoSupervisor como atributo referênciado!

  • Esse é o famoso conceito de auto-relacionamento (tabela que relaciona com ela mesmo).

     

    Então tem-se que a tabela E(CPF, Nome, Salario, CPF do Supervisor, Depto) relaciona a si mesmo perante atributo do CPF do Supervisor.

    Um empregado pertence a tabela E, onde tem o CPF do Supervisor, indicando seu supervisor. O supervisor pode ter um supervisor com nível maior, também indicado pelo atributo CPF do Supervisor, até chegar em um supervisor "extremo" ("chefe dos chefes"), sendo este campo NULL. Formando uma árvore.

     

    Voltando a questão:

    A consulta SQL: SELECT X.Nome, Y.Nome FROM E X JOIN E Y ON X.CPFdoSupervisor = Y.CPF

    -> Temos o SELECT na tabela E chamando o mesmo de X, e realizando o JOIN com a tabela E chamando de Y perante o atributo CPFdoSupervisor de X e CPD de Y. Quem tem o atributo CPFdoSupervisor marcado é o empregado (X) e o supervisor será o (Y).

     

    Logo:

    X.Nome, Y.Nome = nome empregado, nome do supervisor direto. Letra d)