Artigo

Projeto zerando suas dúvidas – Parte 02 – banco de dados e business Intelligence

Recebi essa prova do aluno LP, primeiramente ele tinha uma dúvida na questão de normalização, mas achei por bem fazer algo mais! Abaixo comentamos as questões de BD e BI da prova. Um conteúdo bem interessante cobrado para o cargo de analista de sistemas da Faculdade de Direito de Franca (FDF), na parte de CONHECIMENTOS ESPECÍFICOS E INFORMÁTICA. Espero que gostem!

  1. Ano: 2016 Banca: FDF Órgão: FDF Cargo: Analista de Sistemas Questão: 31

A normalização tem como objetivo central reagrupar informações para eliminar redundâncias de dados e eventuais atributos multivalorados. O processo de normalização é baseado exclusivamente nas Formas Normais (FN), sendo assim, suponha a existência de uma relação T qualquer, a qual se baseia no modelo de dados relacional, compostas pelos atributos atômicos A, B, C, D, E. A relação T possui como chave-primária os atributos A e B e as dependências funcionais válidas abaixo destacadas:

  • DF1: (A,B) -> C
  • DF2: (A,B) -> E
  • DF3: (A,B) -> D
  • DF4: C -> D

Com base nas dependências funcionais, pode-se concluir que a relação T encontra-se:

A) na 1FN e não na 2FN
B) na 2FN e não na 3FN
C) na 3FN e não na FNBC
D) na FNBC e não na 3FN

Comentário: Questão bem interessante. Nela você precisa entender qual a importância das formas normais e da dependência funcional dentro deste contexto. A primeira forma normal está baseada na atomicidade dos atributos dentro de uma relação, para uma relação está na primeira forma normal não devemos possuir atributos compostos ou multivalorados.

As próximas 3 formas normais, 2FN, 3FN e FNBC, estão baseadas em dependências funcionais. A 2FN diz que não deve existir dependência parcial, ou seja, não existe dentro de uma chave primária composta um atributo que, unicamente, determine outro. A 3FN pede para eliminarmos dependências funcionais transitivas. Esse fato acontece na questão quando C -> D. Desta forma podemos dizer que a relação está na 2FN e não está na terceira. O que leva nossa resposta a alternativa B.

Para finalizar a formo normal de boyce-codd diz que todo determinante deve ser chave candidata. Ela é uma restrição mais severa da terceira forma normal. Basicamente a FNBC vai eliminar situações em que um atributo não chave determina parte de uma chave candidata composta.

Gabarito: B

  1. Ano: 2016 Banca: FDF Órgão: FDF Cargo: Analista de Sistemas Questão: 32

Um Sistema Gerenciador de Banco de Dados Relacional (SGBD-R) garante a integridade dos dados através das consistências básicas, essas impostas pelas Regras de Integridade de Entidade (RIE) e Regras de Integridade Referencial (RIR). Dadas duas relações R1 e R2 e uma chave estrangeira (fk) em R1 que referência à chave primária de R2, três ações podem ser tomadas.

Identifique a seguir as afirmativas verdadeiras ( V ) e as falsas ( F ) para as implicações da RIR.

( ) Impedimento: a operação de atualização não é efetivada

( ) Cascata: Se ocorrer uma exclusão de uma tupla (t) de R2, então exclui toda a tupla de R1 tal que (fk) faça referência à chave-primária de (t); Se ocorrer uma alteração da chave-primária de uma tupla (t) de R2, então altera o valor da (fk) de toda tupla de R1 que faça referência ao valor antigo da chave-primária de (t) para o novo valor da chave-primária de (t)

( ) Anulação: Se ocorrer uma exclusão ou alteração de uma tupla (t) de R2, então para toda tupla de R1 tal que (fk) faça referência à chave-primária de (t) faça (fk) referenciar o valor antigo da chave-primária

( ) Anulação: Se ocorrer uma exclusão ou alteração de uma tupla (t) de R2, então para toda tupla de R1 tal que (fk) faça referência à chave-primária de (t) faça (fk) = NULL

Selecione a alternativa que indica adequadamente a sequência correta, de cima para baixo:

  1. A) V ● V ● F ● F
  2. B) F ● V ● F ● F
  3. C) V ● F ● V ● F
  4. D) V ● V ● F ● V

Comentário: Uma forma de classificar as restrições de integridade de dentro de um modelo relacional é dividi-las em Regras de Integridade de Entidade (RIE) e Regras de Integridade Referencial (RIR). O primeiro grupo garante que a identificação dos dados acontece sem ambiguidade, o segundo, por sua vez, garante que os relacionamentos sejam válidos.

Existem algumas implicações decorrentes de cada uma dessas regras. Do ponto de vista das RIE, dada uma tupla t de uma relação R quando ocorre inclusão (I) ou atualização (A) de t, então, se algum atributo da chave primária de t for NULL OU se existe outra tupla em R com o mesmo valor da chave primária de t, então teremos um IMPEDIMENTO, senão teremos uma EFETIVAÇÃO. Quando ocorre uma operação de exclusão (E) de t em R nenhuma consistência de entidade deverá ser feita ou verificada.

Quando analisamos do ponto de vista de RIR, dadas duas relações (R1e R2) e uma chave estrangeira che em R1 que faz referência à chave primária de R2, três ações podem ser tomadas:

  • IMPEDIMENTO: a operação de atualização não é efetivada

  • CASCATA: se ocorre uma exclusão (E) de uma tupla t de R2, então E toda tupla de R1 tal que che faça referência à chave primária de t. Outra possibilidade de uso da cascata ocorre na operação de atualização (A), se ocorre A da chave primária de uma tupla t de R2, então o valor da che de toda tupla de R1 que faça referência ao valor antigo da chave primária de t é atualizado para o novo valor da chave primária de t.

  • ANULAÇÃO: se ocorre E ou A de uma tupla t de R2, então para toda tupla de R1 tal que che faça referência à chave primária de t faça che= NULL.

Após essa rápida descrição dos termos e das implicações existentes em RIE e RIR podemos analisar cada uma das alternativas da questão. Verificamos primeiramente que a definição de impedimento está correta, logo, a primeira alternativa pode ser marcadas com verdadeiro (V).

Para entendermos melhor a segunda afirmação imagine um funcionário e seus dependentes em uma determinada empresa. Se o funcionário for demitido e excluído do sistema seus dependentes também serão. Agora imagine que a matrícula do funcionário que é chave da relação é atualizada. Cada dependente deste funcionário deve ter sua chave estrangeira atualizada. Nestes termos acho que fica mais claro o entendimento da alternativa. Observamos, também, que ela está verdadeira (V).

Vejam que a terceira e a quarta afirmações se referem a definição de anulação que é basicamente passar o valor da chave estrangeira para nulo. Esse fato está descrito na quarta afirmação, que, portanto, é verdadeira (V). Tornando a terceira afirmação incorreta (F)

Desta forma temos a seguinte sequência: V – V – F – V, que está presente na alternativa D.

Gabarito: D

  1. Ano: 2016 Banca: FDF Órgão: FDF Cargo: Analista de Sistemas Questão: 35

Um DBA (Database Administrator) necessita gerar uma cópia de segurança (backup) de um esquema de banco de dados, esse, presente em um SGBD-R intitulado de PostgreSQL versão 9.3, independente de utilização por outros usuários, criando um arquivo de texto contendo instruções SQL. Tais comandos, ao serem executados pelo servidor de Banco de Dados, reproduzirá o banco de dados no estado idêntico em que se encontrava quando o arquivo de backup foi confeccionado. O DBA deverá utilizar qual utilitário do PostgreSQL?

A) pg_dump
B) psql
C) sql_backup
D) gunzip

Comentário: A questão não deixa muito claro se quer o utilitário que faz ou gera o arquivo de backup, neste caso seria o pg_dump ou se o comando utilizado para restaurar o backup, neste caso o psql. Pela resposta acredito que a segunda opção seja a solicitada. Contudo, existe a possibilidade de recurso.

Vejam os textos extraídos do site do postgres sobre o pg_dump e o psql.

pg_dump: “The idea behind this dump method is to generate a text file with SQL commands that, when fed back to the server, will recreate the database in the same state as it was at the time of the dump. PostgreSQL provides the utility program pg_dump for this purpose. The basic usage of this command is:

pg_dump dbname > outfile”

psql: “is a terminal-based front-end to PostgreSQL. It enables you to type in queries interactively, issue them to PostgreSQL, and see the query results. Alternatively, input can be from a file. In addition, it provides a number of meta-commands and various shell-like features to facilitate writing scripts and automating a wide variety of tasks.”

Os links acima podem embasar um recurso sobre a questão. Por enquanto, o gabarito oficial está na alternativa B.

Gabarito: B

  1. Ano: 2016 Banca: FDF Órgão: FDF Cargo: Analista de Sistemas Questão: 40

Considere a tabela intitulada de tb_empregado definida conforme a instrução DDL (Data Definition Language) descrita a seguir:

CREATE TABLE tb_empregado(
id_empregado INTEGER,
nome VARCHAR(20) NOT NULL,
salario NUMERIC(8,2),
cargo VARCHAR(30),
CONSTRAINT pk_id_emp PRIMARY
KEY(id_empregado));

As tuplas já existentes na tb_empregado são as seguintes:

questao04-fig

Analise, criteriosamente, as instruções DDL abaixo quanto a sua execução:

  1. ALTER TABLE tb_empregado ALTER COLUMN nome TYPE VARCHAR(40);
  2. ALTER TABLE tb_empregado ADD column CPF INTEGER UNIQUE;
  3. ALTER TABLE tb_empregado ALTER COLUMN cargo TYPE CHAR(35) NOT NULL;

É possível concluir que:

A) Apenas a instrução I será executada sem erro
B) Apenas a instrução II será executada sem erro
C) Apenas a instrução III será executada sem erro
D) Apenas a instrução III não será executada por erro

Comentário: Vejamos o que aconteceria se tentarmos executar cada um dos comandos acima. O primeiro executaria sem problema, seria apenas um aumento de um tamanho de campo.

O segundo comando pede para criar uma coluna com restrição de unicidade sem especificar quais seriam os valores desta coluna. Não seria possível cria-las com um valor default pois ele seria repetido em várias tuplas. Esse fato fere a restrição de integridade, o que geraria um erro durante a execução.

Essa próxima alternativa geraria um problema semelhante ao anterior (estamos supondo que os valores em branco da coluna cargo são nulos). Veja que você nâo pode incluir uma restrição NOT NULL em uma coluna que tenha valores nulos. Primeiro é preciso modificar os valores do atributo ou excluir as colunas. Em seguida é possível executar o comando. Desta forma esse comando, no estado descrito para a tabela, também geraria um erro.

Combinando as três alternativas podemos encontrar nossa resposta na alternativa A.

Gabarito: A

Esse foi mais um comentário do projeto Zerando suas dúvidas! Vem com a gente! Mande suas dúvidas por e-mail, carta, facebook ou pelo site do estratégia! :)

Forte abraço,

Thiago

Deixe seu comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Veja os comentários
  • Excelente Professor, ajudou bastante !!!!
    Lucas Ponce em 30/06/16 às 14:14