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

As questões 12 e 13 baseiam-se nesse texto introdutório, assim como o constante nas Figuras 5(a), 5(b) e 5(c). Sabe-se que a empresa "XYZ Transportes Ltda" possui um SGBD Oracle 11g onde são armazenados os dados de seus sistemas. Na base de dados desse SGBD, o Administrador de Banco de Dados (DBA) criou as tablespaces "TS_DADOS" e "TS_INDICES", sendo esta última destinada, especificamente, para armazenar apenas dados de índices. A Figura 5(a) exibe as declarações SQL que permitiram criar e alterar, no banco de dados Oracle 11g, as tabelas "TB_PESSOA" e "TB_DOCUMENTO", nas quais estão armazenados dados de clientes, fornecedores e notas fiscais de entrada e saída da referida empresa. Sobre a Figura 5(b), considere os seguintes aspectos: (1) ela exibe, intencionalmente, apenas, um trecho de código, escrito em PL/SQL, contendo uma consulta SQL; (2) a consulta existente nesse código foi executada sobre uma das tabelas da Figura 5(a); e (3) esse trecho de código apresenta problemas de desempenho, ao ser executado no banco de dados referenciado nessa questão. A Figura 5(c) exibe a janela do Oracle SQL*Plus, que mostra, intencionalmente, apenas parte do Plano de Execução, que passou a ser exibido após se ter realizado ajuste na tabela "TB_DOCUMENTO" e executado determinada declaração nessa janela.

CREATE TABLE TB_PESSOA(

CO_PESSOA NUMBER(10) NOT NULL,

NO_PESSOA VARCHAR2(100) NOT NULL,

NU_CNPJ_CPF VARCHAR2(14),

ST_CLIENTE CHAR(1) NOT NULL,

ST_FORNECEDOR CHAR(1) NOT NULL);

ALTER TABLE TB_PESSOA ADD CONSTRAINT

PK_PES PRIMARY KEY(CO_PESSOA) USING

INDEX TABLESPACE TS_INDICES;

COMMENT ON COLUMN

TB_PESSOA.CO_PESSOA IS 'Chave primária da

tabela TB_PESSOA';

CREATE TABLE TB_DOCUMENTO(

NU_DOCUMENTO VARCHAR2(10) NOT NULL,

CO_PESSOA NUMBER(10) NOT NULL,

TP_PAGAMENTO CHAR(1) NOT NULL,

QT_PARCELAS NUMBER(2),

VL_DOCUMENTO NUMBER(14,2));

ALTER TABLE TB_DOCUMENTO ADD

CONSTRAINT FK_PES_DOC FOREIGN

KEY(CO_PESSOA) REFERENCES

TB_PESSOA(CO_PESSOA);

COMMENT ON COLUMN

TB_DOCUMENTO.NU_DOCUMENTO IS 'Chave

primária da tabela TB_DOCUMENTO';

Figura 5(a) - Declarações SQL executadas em um banco de dados Oracle 11g

DECLARE

X TB_PESSOA.CO_PESSOA%TYPE;

BEGIN

X:= P_CODIGO_CLIENTE;

EXECUTE IMMEDIATE

'SELECT SUM(NVL(VL_DOCUMENTO,0)) ' ||

'INTO : P_TOTAL ' || 'FROM TB_DOCUMENTO ' ||

'WHERE CO_PESSOA = ' ||

TO_CHAR(X) INTO V_TOTAL_CLIENTE;

END;

Figura 5(b) - Trecho de código, em PL/SQL

Enunciado 3572535-1

Figura 5(c) - Parte do Plano de Execução, visto após ajustes na tabela "TB_DOCUMENTO"

O DBA da empresa "XYZ Transportes Ltda" executou, no banco de dados Oracle 11g, o código PL/SQL, exibido na Figura 5(b), retirado de uma procedure do módulo financeiro. Ao executar tal código, verificou que o mesmo apresentava problemas de desempenho. Para resolver esse problema, o DBA procedeu da seguinte forma: (1) criou um índice na tabela "TB_DOCUMENTO"; e (2) executou, no Oracle SQL*Plus, determinada declaração SQL, cuja parte do Plano de Execução é mostrado na Figura 5(c). Nesse caso, pode-se afirmar que, para se obter o resultado da Figura 5(c), bastou, antes, executar, no Oracle SQL*Plus, a seguinte declaração:

I. CREATE INDEX IX_DOC_COPESSOA ON TB_DOCUMENTO(CO_PESSOA) TABLESPACE TS_INDICES;

II. CREATE INDEX IX_DOC_COPESSOA ON TB_DOCUMENTO(CO_PESSOA) USING INDEX TABLESPACE TS_INDICES;

III. CREATE INDEX IX_DOC_COPESSOA ON TB_DOCUMENTO(CO_PESSOA);

IV. CREATE INDEX IX_DOC_COPESSOA ON TB_DOCUMENTO(CO_PESSOA) TABLESPACE TS_DADOS;

Quais estão corretas?

 

Provas

Questão presente nas seguintes provas

Analista de TI - Banco de Dados

60 Questões