Imagem de fundo

Seja um banco de dados para uma árvore genealógica simples...

Seja um banco de dados para uma árvore genealógica simples, composto de uma única relação, conforme definido a seguir pelo comando CREATE TABLE da SQL.


Os atributos id_mae e id_pai são chaves estrangeiras que referenciam a mãe e o pai de uma pessoa, respectivamente.


CREATE TABLE pessoa (

id INT NOT NULL,

nome VARCHAR(40) NOT NULL,

id_mae INT NULL,

id_pai INT NULL,

PRIMARY KEY (id),

FOREIGN KEY(id_mae) REFERENCES pessoa(id),

FOREIGN KEY(id_pai) REFERENCES pessoa(id) )


A expressão SQL que segue foi escrita para obter informação do banco de dados:


SELECT * FROM pessoa F

WHERE EXISTS (

SELECT * FROM pessoa P

WHERE P.id_pai = F.id_pai AND F.id <> P.id)

OR EXISTS ( SELECT * FROM pessoa P

WHERE P.id_mae = F.id_mae AND F.id <> P.id)



Considerando que o símbolo '<>' representa um operador de comparação que significa 'diferente de', e a expressão 'compartilhar um parente' denota 'ter um parente em comum' (por exemplo, se duas pessoas 'compartilham um primo', significa que este é primo de ambas as pessoas), então a execução da expressão SQL dada resulta nas:


A

pessoas que compartilham o pai e a mãe com pelo menos uma outra pessoa.


B

pessoas que compartilham o pai ou a mãe com pelo menos uma outra pessoa.


C

pessoas que compartilham o avô paterno e a avó materna com pelo menos uma outra pessoa.


D

pessoas que compartilham o avô paterno ou a avó materna com pelo menos uma outra pessoa.