Magna Concursos
2448878 Ano: 2012
Disciplina: TI - Banco de Dados
Banca: FUNDATEC
Orgão: PROCERGS

As questões 23, 24 e 25 baseiam-se na Figura 13, que exibe as declarações SQL que permitiram criar duas tabelas, no Banco de Dados Oracle 11g, que armazenarão dados de um sistema informatizado de controle de projetos sociais.

CREATE TABLE "TbProjeto"(
"IdProjeto" NUMBER(6) NOT NULL,
"TxTitulo" VARCHAR2(250),
"TxObjetivo" VARCHAR2(4000),
"DtInicio" DATE,
"DtTermino" DATE,
"VlAprovado" NUMBER(14,2),
CONSTRAINT PK_PROJETO PRIMARY
KEY("IdProjeto"));

CREATE TABLE "TbMeta"(
"IdMeta" NUMBER(9) NOT NULL,
"IdProjeto" NUMBER(6),
"TxMeta" VARCHAR2(250),
"DtInicio" DATE,
"DtTermino" DATE,
"VlPrevistoExecucao" NUMBER(14,2),
CONSTRAINT PK_META PRIMARY
KEY("IdMeta"));

Figura 13 - Declarações SQL

O Administrador de Banco de Dados (DBA), responsável pela base de dados onde estão presentes as tabelas "TbProjeto" e "TbMeta", verificou um problema de integridade referencial entre as duas tabelas da Figura 13. O DBA observou que não existe uma constraint que valide o valor inserido na coluna "IdProjeto", da tabela "TbMeta", de forma a garantir que exista, na tabela "TbProjeto", um registro que contenha um valor igual na coluna "IdProjeto". O DBA recebeu autorização da alta gerência para excluir todos os registros presentes na tabela "TbMeta" onde, para o valor armazernado na coluna "IdProjeto", não haja um registro correspondente na tabela "TbProjeto", com o
mesmo valor armazenado na coluna "IdProjeto". Assinale o item cuja sequência de instruções permitem criar, com sucesso, uma constraint do tipo foreign key na tabela "TbMeta", fazendo referência a tabela "TbProjeto", de forma a garantir a integridade dos registros da tabela "TbMeta":

I.

DELETE FROM "TbMeta" WHERE "IdProjeto" NOT
IN (SELECT "IdProjeto" FROM "TbProjeto");

ALTER TABLE "TbMeta" ADD CONSTRAINT
PROJETO_META_FK FOREIGN KEY("IdProjeto")
REFERENCES "TbProjeto"("IdProjeto") VALIDATE;

II.

DELETE FROM "TbMeta" MT WHERE NOT
EXISTS(SELECT 1 FROM "TbProjeto" PJ WHERE
PJ. "IdProjeto" = MT."IdProjeto");

ALTER TABLE "TbMeta" ADD CONSTRAINT
PROJETO_META_FK FOREIGN KEY("IdProjeto")
REFERENCES "TbProjeto"("IdProjeto") VALIDATE;

III.

DELETE FROM "TbMeta" MT WHERE (SELECT
COUNT(1) FROM "TbProjeto" PJ WHERE
PJ."IdProjeto" = MT."IdProjeto") = 0;

ALTER TABLE "TbMeta" ADD CONSTRAINT
PROJETO_META_FK FOREIGN KEY("IdProjeto")
REFERENCES "TbProjeto"("IdProjeto");

IV.

DELETE FROM "TbMeta" MT WHERE (SELECT
COUNT(1) FROM "TbProjeto" PJ INNER JOIN
"TbMeta" MT2 ON MT2."IdProjeto" = PJ."IdProjeto"
WHERE MT2."IdProjeto" = MT."IdProjeto") = 0;

ALTER TABLE "TbMeta" ADD CONSTRAINT
PROJETO_META_FK FOREIGN KEY("IdProjeto")
REFERENCES "TbProjeto"("IdProjeto");

Quais estão corretas?

 

Provas

Questão presente nas seguintes provas