Prova da Semana – Comentário da prova do STM – Programação de Sistemas – Banco de dados e BI (Técnico)
Prezados Alunos,
Abaixo comentamos a prova de Técnico de Programação do STM.
-
Ano: 2018 Banca: CESPE Órgão: STM Cargo: Programação de Sistemas Questão: 61 a 65
Acerca dos conceitos de normalização de dados e dos modelos de dados, julgue os itens subsequentes.
61 Uma tabela estará na segunda forma normal (2FN) quando, além de estar na terceira forma normal (3FN), ela contiver dependências funcionais parciais.
62 A passagem à terceira forma normal (3FN) tem como objetivo principal gerar o modelo lógico de dados; por isso, ela não visa eliminar redundância de dados, como ocorre com as demais formas normais.
63 O modelo conceitual, que reflete uma estrutura simplificada do banco de dados, é responsável por registrar como os dados estão armazenados no sistema de gerenciamento de banco de dados (SGBD).
64 Comparativamente aos usados pelos usuários leigos, os modelos de dados utilizados por programadores são considerados menos abstratos, pois contêm mais detalhes de como as informações estão organizadas internamente no banco de dados.
65 A transformação do esquema de tabela não normalizada em um esquema relacional na primeira forma normal (1FN) consiste da eliminação das tabelas aninhadas.
Comentário: Vamos comentar cada uma das alternativas acima.
- Primeiramente a hierarquia entre as formas normais é crescente, para estar na segunda é preciso estar na primeira, para estar na terceira é necessário que esteja na segunda e assim por diante. Veja que a afirmação da alternativa vai no sentido oposto. Logo, temos uma alternativa incorreta.
- A passagem para a terceira forma normal tem como objetivo eliminar as dependências funcionais transitivas. O que está escrito na assertiva não chegar nem perto da definição. Sendo assim, a alternativa está errada.
- Quem descrever como os dados são armazenados no sistema de gerenciamento de banco de dados é o modelo físico, ele o faz descrevendo o modo como os dados são salvos em meios de armazenamentos, como discos e fitas, sendo exigido a definição tanto dos dispositivos de armazenamento físico como dos métodos de acesso (físico) necessários para se chegar aos dados nesse dispositivos, o que o torna dependente tanto de software como de hardware. Novamente, temos mais uma alternativa incorreta.
- Essa alternativa está correta. Quando descemos na hierarquia dos modelos de dado, aumentamos o nível detalhamento.
- Essa questão do aninhamento de tabela associada a primeira forma normal nem sempre é muito clara. Contudo, podemos perceber que, quando temos atributos compostos e multivalorados, há perda de atomicidade dos atributos. E a composição de diversos atributos atômicos pode ser vista como outra tabela. Logo, acabamos por ter uma tabela dentro da outra.
Gabarito: E E E C C
-
Ano: 2018 Banca: CESPE Órgão: STM Cargo: Programação de Sistemas Questão: 66 a 70
Julgue os próximos itens, que dizem respeito aos SGBDs Oracle, MySQL e PostgreSQL.
66 Em um pacote (package) no SGBD Oracle, a implementação dos métodos juntamente com quaisquer métodos privados e atributos permanece oculta no corpo do pacote.
67 Uma sequência (sequence) Oracle pode gerar uma série de números distintos, tanto na ordem crescente quanto na decrescente.
68 Nas tabelas do tipo InnoDB do MySQL, o armazenamento dos dados pode ser realizado por um ou mais arquivos separados.
69 Uma desvantagem do PostgreSQL em relação aos demais SGBDs é que ele não oferece recursos necessários para se realizar a replicação de dados.
70 No SGBD Oracle, uma coluna com restrição do tipo UNIQUE pode ser declarada como NOT NULL.
Comentário: Vamos responder cada uma das alternativas acima.
- Os pacotes PL/SQL agrupam funções e procedures relacionadas, juntamente com variáveis e cursores comuns. O pacote consiste em duas partes: uma especificação do pacote e um corpo de pacote. Na especificação, os métodos e atributos dos pacotes são expostos; a implementação dos métodos, juntamente com quaisquer métodos privados e atributos permanecem ocultos no corpo do pacote. A utilização de um pacote, em vez de uma procedure ou função independente, permite que a procedure ou função incorporada seja alterada sem invalidar nenhum objeto que referencia elementos da especificação do pacote, evitando assim a recompilação dos objetos que referenciam o pacote. Vejam que a alternativa está perfeitamente correta.
- Uma sequence é um gerador de números sequenciais, e pode ser parametrizada conforme sua necessidade. Vejamos o comando para criar a sequence:
- create sequence TESTE_SEQ
- minvalue 1
- maxvalue 9999999999
- start with 1
- increment by 1
- nocache
- cycle;
- O InnoDB prove o MySQL com um mecanismo de armazenamento seguro com transações (compatível com ACID) com commit, rollback, e recuperação em caso de falhas. InnoDB faz bloqueio a nível de registro e também fornece uma leitura sem bloqueio em SELECT em um estilo consistente com Oracle. O MySQl tem um alto poder de execução e de armazenamento. Dependendo da plataforma onde a ferramenta será utilizada, suas tabelas poderão ser armazenadas em espações extraordinários, ficando limitadas somente ao tamanho máximo de arquivos que a plataforma pode manipular. No caso, de tabelas do tipo InnoDB, cujo armazenamento pode ser realizado por um ou mais arquivos separados, é possível armazenadas até 65.536 TB (terabytes). Logo, a alternativa está correta.
- A partir da versão 9.0 do PostgreSQL, foi adicionado um recurso de Streaming Replication (SR) nativamente ao PostgreSQL, permitindo a replicação de transações, assim que concluídas sem necessidade de aguardar que um segmento seja completado. A replicação por meio de streaming funciona através de uma conexão comum. Sendo assim, observamos que o SGBD em questão de fato implementa mecanismos de replicação de dados, logo alternativa está errada.
- A constrait de integridade UNIQUE garante que uma coluna ou grupo de colunas seja única em toda a tabela. Uma coluna com essa restrição pode ser declarada NOT NULL. Se a coluna não for declarada com a constraint NOT NULL, qualquer número de linhas poderá conter valores NULL, desde que as linhas restantes tenham valores únicos nessa coluna. Sendo assim, temos mais uma alternativa correta.
Gabarito: C C C E C
-
Ano: 2018 Banca: CESPE Órgão: STM Cargo: Programação de Sistemas Questão: 71 a 75
Considerando as informações apresentadas na figura precedente (captura de tela de uma sessão do SQL*Plus), relativas a comandos SQL, julgue os itens que se seguem.
71 A instrução contida na linha 3 possibilita a inserção de informações em um buffer que poderá ser lido por outro procedimento ou pacote.
72 Empregada de forma correta no código em questão, pois se relaciona a um bloco anônimo de PL/SQL, a variável &numero_proc, na linha 2, não pode ser utilizada em comandos DML.
73 O código em tela não criará nenhum objeto no banco de dados, como, por exemplo, procedure, triggers, packages e functions.
74 Ao se fechar a sessão do SQL*Plus na qual foi capturada a tela em apreço, a variável definida na linha 2 persistirá no banco de dados.
75 Na linha 2, o trecho &numero_proc constitui uma variável do tipo bind.
Comentário: Vamos comentar cada uma das alternativas acima:
- O procedimento Oracle dbms_output.put_line permite que você escreva dados em um arquivo plano ou direcione os resultados do comando para uma tela. Este procedimento armazena uma linha no buffer. Logo, temos uma alternativa correta.
- A própria questão entra em contradição pois a variável é usada em um coando DML. Logo, a alternativa está incorreta.
- Essa afirmação está correta, pois não existe nenhum comando para a criação de outros objetos no enunciado. Temos apenas uma transação.
- Na linha 2 temos apenas uma consulta a base da dados, logo não existe a necessidade persistir nada no banco de dados. Vamos apenas comparar o valor da tupla armazenada com o parâmetro passado. Sendo assim, temos uma alternativa incorreta.
- Se pensarmos no termo &numero_proc, veremos que ele não se trata não uma variável do tipo bind.
A variável de ligação (bind variable) funciona como um parâmetro da instrução SQL, sendo um elo de ligação entre o servidor de banco de dados e o ambiente de programação ou interface de acesso que o utiliza, para a passagem de valores dinâmicos a cada execução do SQL.
Variáveis de ligação de entrada podem ocorrer em valores na cláusula WHERE de um SELECT, UPDATE ou DELETE, em valores na cláusula SET do UPDATE, na cláusula VALUES do INSERT ou ainda em parâmetros e valores em um bloco de código procedural. Já variáveis de ligação de saída são o meio de se obter os valores resultantes na cláusula de retorno de um SELECT ou como variáveis de saída de um bloco procedural.
As variáveis de ligação são definidas na fase de preparação de uma instrução SQL. Antes de cada execução desse SQL, deve ser feita a efetiva ligação dos parâmetros, atribuindo-lhes valores. Os bancos de dados possuem diferentes sintaxes para definir variáveis de ligação. Variáveis bind no Oracle são nomes precedidos por dois-pontos (:nome). Logo, temos uma alternativa incorreta.
Gabarito: C E C E E
-
Ano: 2018 Banca: CESPE Órgão: STM Cargo: Programação de Sistemas Questão: 101 a 102
A respeito de ETL, julgue os itens a seguir.
101 Em processos ligados a ETL, os dados são identificados e extraídos de diferentes fontes, incluindo sistemas de banco de dados e aplicações.
102 O ambiente ETL permite a visualização dos dados para análise de maneira multidimensional.
Comentário: Vejamos os comentários sobre cada uma das afirmações acima.
- Os processos ETL extraem dados de diversas fontes de dados, que podem ser arquivos de texto, documentos XML, JSON, banco de dados ou aplicação. Sendo assim, temos uma alternativa correta.
- A ferramenta ETL carregas os dados em um Data Warehouse que, por sua vez, fornece dados para analises multidimensionais. Estes podem ser exibidos em relatórios ou dashboards. Desta forma, temos uma alternativa incorreta.
Gabarito: C E
Qualquer dúvida estou às ordens,
Forte abraço e bons estudos,
Thiago Cavalcanti