Apresentamos abaixo as questões da prova do TRE-SP devidamente comentadas para o cargo de analista judiciário de TI.
Em uma situação hipotética, ao ser designada para atender aos requisitos de negócio de um usuário, uma Analista de Sistemas do TRE-SP escreveu expressões e comandos para serem executados em um Banco de Dados Relacional que visavam (1) criar uma tabela que contivesse dados de processos partidários, (2) controlar a segurança e o acesso a ela e (3) manipular dados nela. Desta forma ela, se valeu, correta e respectivamente, por exemplo, de alguns elementos de expressões tais como:
(A) INSERT, REVOKE e SELECT.
(B) CREATE, REVOKE e INSERT.
(C) CREATE, GRANT e ALTER.
(D) DROP, ALTER e UPDATE.
(E) INSERT, INDEX e CREATE.
Comentário: Ok! Questão introdutória do assunto de banco de dados, relaciona os comandos da linguagem SQL a uma taxonomia específica. Na questão são apresentados o conjunto de comados de criação de objetos ou data definition language (CREATE, DROP, ALTER), comandos relacionados à segurança dos dados ou data control language (GRANT e REVOKE) e os comandos utilizados para manipulação de dados ou data manipulation language (DELETE, INSERT, SELECT e UPDATE). Os comandos entre parênteses são apenas alguns exemplos dos representantes de cada subgrupo da linguagem SQL.
De posso dessas informações podemos encontrar nossa resposta na alternativa B, o que está de acordo com o gabarito apresentado pela banca.
Gabarito: B.
Durante a análise das características típicas de um Sistema Gerenciador de Bancos de Dados Relacional – SGBDR, um Analista de Sistemas verifica:
I. Oferece suporte a várias linguagens sem a necessidade de uma sintaxe definida em quaisquer uma delas no âmbito de Data Manipulation Language − DML e Data Definition Language − DDL, porém deve ter, pelo menos, uma das linguagens com sintaxe restritiva e bem definida no âmbito de Transaction Control Language − TCL e Data Control Language − DCL.
II. A Inserção, a atualização e a eliminação é de alto nível, ou seja, a capacidade de manipular a relação base ou relações derivadas como um operador único é aplicável não somente à recuperação de dados, mas também à inserção, alteração e eliminação de dados.
III. Representa a descrição do Banco de Dados no nível físico na forma de dados em tabelas, permitindo que usuários autorizados apliquem formas distintas de manipular os dados nessas tabelas.
Estão corretas as características que constam APENAS em
(A) II e III.
(B) III.
(C) I.
(D) I e II.
(E) II.
Comentário: Vamos comentar cada uma das alternativas acima.
Percebam que na alternativa I ele escreve com um vocabulário um pouco rebuscado, mas diz, mais ou menos, o seguinte. Não existe uma sintaxe bem definida para os comandos de manipulação de dados e criação de objetos em SQL. Isso é um absurdo, o sucesso da linguagem passa por uma sintaxe bem definida, portanto alternativa I está incorreta.
Na alternativa II o examinador diz que a existência dos comandos de INSERT, UPDATE e DELETE permite a utilização destes comandos para execução das tarefas de inserção, atualização e eliminação. Nada mais justo e correto, não acha? Sendo assim, a alternativa II está correta.
A ideia do modelo de dados relacional é justamente reduzir o conhecimento a respeito das estruturas físicas do banco de dados. Vejam que ele representa o modelo em um nível lógico. Desta forma, a alternativa também se encontra errada.
Juntando os comentários acima, podemos marcar nossa resposta na alternativa E, que bate perfeitamente com o gabarito da questão.
Gabarito: E.
No âmbito dos blocos PL/SQL, é fato que operações em BULK são utilizadas para melhorar o desempenho das instruções SQL e usar o mínimo possível do Context Switch. Todavia ao utilizar o %ROWCOUNT em operações com BULK o resultado retornado talvez não seja o esperado, pois ele irá retornar a quantidade total de linhas que foram retornadas ou modificadas e não a quantidade por cada uma das operações realizadas. Para isto, as operações em BULK possuem alguns atributos a mais que solucionam essa necessidade, ou seja, exibem a quantidade por cada uma das operações realizadas em um BULK como é o caso de SQL
(A) %BULK_ROWCOUNT
(B) ROWCOUNT_%BULK
(C) EXCEPTIONS_%BULK_LINE
(D) %BULK_EXCEPTIONS
(E) % LINECOUNT_BULK
Comentário: Essa questão deve ter sido inspirada neste texto.
Trabalhar com cursores é algo extremamente comum em blocos PL/SQL. Alguns atributos dos cursores, explícitos como implícitos, são bem conhecidos como o %ROWCOUNT que nos retorna a quantidade de linhas retornada por um SELECT ou a quantidade de linhas modificadas por outra operação DML.
Mas ao utilizar o %ROWCOUNT em operações com bulk o resultado retornado talvez não seja o esperado, pois ele irá retornar a quantidade total de linhas que foram retornadas ou modificadas e não a quantidade por cada uma das operações realizadas. Para isto, as operações em bulk possuem alguns atributos a mais, como o %BULK_ROWCOUNT que exibe a quantidade por cada uma das operações realizadas em um bulk.
Desta forma, podemos marcar nossa resposta sem medo na alternativa A. Que é o gabarito da questão!
Gabarito: A.
Considere as informações abaixo.
PROCESSO (Num_Processo, [Titulo_Eleitor, Nome_Eleitor, Zona_Eleitoral_Eleitor, Secao_Eleitoral_Eleitor, Status_Eleitor_no_Processo],
Data_Criacao_Processo, Data_Solucao_Processo).
Sabe-se que os seguintes requisitos se aplicam:
− Um Eleitor pode ser citado em um ou mais processos.
− Um Processo pode citar um ou mais eleitores, portanto, os dados de Eleitor, entre chaves na tabela (ou relação) acima, podem ser integrantes de um grupo de repetição.
− Os atributos grifados são chaves-primárias de seus respectivos grupos de atributos, ou seja, Num_Processo é chave dos dados de processo e Titulo_Eleitor é chave dos atributos de eleitor.
− O Status_Eleitor_no_Processo (ex. Ativo, Inativo, Desistente) pode ser diferente nos processos nos quais é citado, ou seja, o mesmo eleitor pode ter, por exemplo, o status de Desistente em um processo, mas Ativo em outro).
Após a aplicação da 3FN, a situação ficou como segue:
− PROCESSO (Num_Processo, Data_Criacao_Processo, Data_Solucao_Processo)
− ELEITOR (Titulo_Eleitor, Nome_Eleitor, Zona_Eleitoral_Eleitor, Secao_Eleitoral_Eleitor)
− CITAÇÃO (Num_Processo, Titulo_Eleitor, Zona_Eleitoral_Eleitor, Status_Eleitor_no_Processo)
Os atributos em negrito são as chaves identificadoras das tabelas (ou relações).
Um experiente Analista de Sistemas analisou a situação e concluiu, corretamente, que a normalização
(A) deve manter o atributo Num Processo em ELEITOR, para ficar integralmente correta.
(B) deve incluir o atributo Data_Solucao_Processo na CITAÇÃO, para ficar integralmente correta.
(C) está integralmente correta.
(D) deve retirar o atributo Zona_Eleitoral_Eleitor da CITAÇÃO, para ficar integralmente correta.
(E) deve incluir o atributo Status_Eleitor_no_Processo em PROCESSO, para ficar integralmente correta.
Comentário: Percebam que o processo de normalização foi feito de forma parcialmente correta. Primeiramente foram separados os atributos que descrevem cada uma das entidades do modelo. Desta forma, o atributo composto ELEITOR que inicialmente fazia parte da tabela de PROCESSO passou a ser uma entidade própria. A tabela de PROCESSO também ficou apenas com seus atributos. E uma nova tabela CITACAO foi criada para associar um processo a uma pessoa. O atributo status_eleitor_no_processo foi devidamente associado a citação, o que faz todo sentido.
Contudo, perceba que o atributo zona_eleitoral_eleitor aparece de forma incorreta na tabela CITAÇÂO. Ele pode ser obtido por meio do título de eleitor, o que gera uma dependência parcial no modelo e fere a segunda forma normal. Assim, nossa resposta aparece na alternativa D: “deve retirar o atributo Zona_Eleitoral_Eleitor da CITAÇÃO, para ficar integralmente correta.”
Gabarito: D
No processo ETL de um data warehouse: (I) a tradução de valores codificados conhecida como limpeza de dados (por exemplo, supondo que o sistema de origem armazena 1 para sexo masculino e 2 para feminino, mas o data warehouse armazena M para masculino e F para feminino) e (II) a geração de valores de chaves substitutas (surrogate keys) são
(A) elementos que possibilitam a conversão de drill-down para roll up.
(B) integrantes da etapa de carga.
(C) integrantes da etapa de transformação.
(D) integrantes das etapas de transformação e carga, respectivamente.
(E) manipulações de dados, aplicáveis no processo pivoting.
Comentário: Questão interessante! Apresenta parte das operações realizadas no processo de ETL, mais especificamente na etapa de transformação dos dados. Esse ajuste trabalha na padronização dos dados, facilitando o acesso aos dados e a geração de relatórios sobre os mesmos. Desta forma, nossa resposta se encontra na alternativa C.
Gabarito: C.
Considere que, em uma situação hipotética, uma equipe de Analistas de Sistemas do TRE-SP irá participar do desenvolvimento de um novo sistema com base na metodologia ágil Scrum. Para a escolha do Time Scrum, algumas tarefas foram solicitadas para definição do Product Owner, do responsável pelo Backlog do Produto e dos membros da Equipe de Desenvolvimento. Como base do teste, foi criada uma tabela no banco de dados denominada ELEICOES, que tem os campos indicados na 1a linha e os conteúdos possíveis na 2a linha, conforme abaixo.
Neste contexto, solicita-se que sejam apresentadas soluções para o que se pede abaixo.
a. Escrever um comando SQL para mostrar, em uma linha, a quantidade de candidatos do sexo masculino como "CandidatosHomens" e a quantidade de candidatas do sexo feminino como "CandidatasMulheres".
b. Escrever um comando SQL para apresentar todos os dados dos candidatos a Prefeito por ordem crescente de VotosValidos.
Comentário: Vamos tentar apresentar uma solução para cada uma das alternativas:
a. SELECT * FROM
(SELECT COUNT(SEXO) AS “CandidatosHomens”
FROM ELEICOES WHERE SEXO=”Masculino”) as M,
(SELECT COUNT(SEXO) AS “CandidatosMulheres”
FROM ELEICOES WHERE SEXO=”Feminino”) as F;
b. SELECT * FROM ELEICOES WHERE CARGO = “Prefeito”
ORDER BY VotosValidos ASC;
Gabarito: Discursiva! Ainda não sabemos! :)
Voltamos amanhã com as questões das provas de Técnico do concurso do TRE-SP.
Forte abraço e bons estudos,
Thiago Cavalcanti
Concurso PM SP para Soldado oferece salário de R$ 4,8 mil. Provas em fevereiro! Está…
Foram divulgados os resultados definitivos da prova objetiva e preliminares da prova discursiva do concurso…
Foram encerradas as inscrições do concurso público da Prefeitura de Morada Nova, localizada no município…
Inscrições encerradas Foi publicado o edital de concurso público da Prefeitura de Santa Teresa, Espírito…
Inscrições encerradas para editais 6 a 9. A Prefeitura de Guarulhos, em São Paulo, divulgou…
A Prefeitura Municipal de Santa Teresa (ES) publicou edital de concurso público com vagas para área…
Ver comentários
Fala Thiago. Na discursiva, fiz as duas queries e juntei com UNION ALL. Seria uma opção?
Assim você estaria inserindo uma nova linha na tabela. Veja que a questão pede duas colunas. Mas acredito que o examinador deva considerar uma parte da resposta como correta.
Forte abraço e bons estudos!
Olá Thiago,
Resolvi a discursiva de SQL assim:
select
sum(case when sexo = 'Masculino' then 1 else 0 end) as 'CandidatosHomens',
sum(case when sexo = 'Feminino' then 1 else 0 end) as 'CandidatasMulheres'
from ELEICOES;
Faz sentido! Acredito que esteja correto também!
Forte abraço e bons estudos!
Boas explicações! Parabéns mestre!