Artigo

Prova da Semana – Comentário da prova da ARTESP – Tecnologia da Informação – Banco de dados

Apresentamos abaixo as questões da prova do ARTESP devidamente comentadas para o cargo de Especialista em Regulação de Transporte – Tecnologia da Informação. Foram 7 questões que abordaram o assunto presente nas aulas de banco de dados. Vamos aos comentários.

 

 

  1. Ano: 2017 Banca: FCC Órgão: ARTESP Cargo: Especialista em Regulação de Transporte – Tecnologia da Informação Questão: 52.

Considere, por hipótese, que a ARTESP utiliza uma estratégia de backup conforme mostra a figura abaixo, na qual a escala vertical representa a quantidade de dados.

A figura ilustra a estratégia de backup I, que é semelhante a um backup II na primeira vez em que é realizado, na medida em que irá copiar todos os dados alterados desde o backup anterior. No entanto, cada vez que é executado após o primeiro backup, serão copiados todos os dados alterados desde o backup III anterior e não com relação ao último backup.

As lacunas I, II e III são preenchidas, correta e respectivamente, por

(A) incremental − diferencial − diferencial

(B) completo − diferencial − incremental

(C) diferencial − incremental − completo

(D) diferencial − completo − incremental

(E) incremental − completo − completo

Comentário: Na linha de uma imagem vale mais do que mil palavras peço que você observe a imagem a seguir. Perceba a diferença entre o backup incremental, diferencial e completo!

 

Observe que o backup incremental vai copiar os dados modificado desde o último backup, seja ele incremental ou completo. Já o backup diferencial vai trazer as modificações para o arquivo de backup que foram feitas desde o último backup full. Sendo assim, nossa resposta à questão encontra-se na alternativa C.

Gabarito: C

  1. Ano: 2017 Banca: FCC Órgão: ARTESP Cargo: Especialista em Regulação de Transporte – Tecnologia da Informação Questão: 54.

54. Considere, por hipótese, que a ARTESP optou pela utilização do RAID 5 como solução computacional para combinar alguns discos rígidos (HDs) para formar uma única unidade lógica de armazenamento de dados. Neste cenário, um Especialista em Tecnologia da Informação afirma, corretamente, que

(A) se um bloco de dados possui o byte 1111110X e paridade 1, o X indica um bit perdido. Como a paridade é 1, significa que o bloco é composto por quantidade par de bits 1, isso significa que o bit X só pode ser 1.

(B) durante a substituição de um HD é possível manter o sistema em funcionamento, com o uso de equipamentos que suportam hot-swaping, em condições ideais. Isso é possível porque o esquema de paridade permite recuperar os dados a partir das informações existentes nas demais unidades.

(C) neste método os dados são divididos em grandes blocos e cada um deles recebe um byte adicional de acordo com a seguinte regra: se a quantidade de bits 0 do bloco for par, o byte é setado para 0; se a quantidade de bits 0 for ímpar, o byte é setado para 1.

(D) as informações de paridade são distribuídas entre todos os discos do sistema e o espaço destinado a esta informação é equivalente à quarta parte do tamanho dos discos. Assim, um array formado por três HDs de 500 GB terá 1,75 TB para armazenamento e 250 GB para paridade.

(E) se em uma tarefa de verificação o sistema constatar que o byte de paridade de um bloco for 0, mas existir uma quantidade par de bits, certamente há um erro. Neste caso a restauração dos dados poderá ser feita apenas depois de o HD ter sido trocado.

Comentário: No RAID 5 cada um dos bits dentro de cada grupo fica guardado em um dos HDs. Quando um deles é perdido, a controladora sabe exatamente quais bits foram perdidos e têm condições de recuperá-los usando uma verificação muito simples. A controladora pode manter o sistema funcionando mesmo sem um dos HDs, realizando estes cálculos em tempo real para obter os dados que estavam armazenados nele. Quando o HD é finalmente substituído, a controladora reescreve todos os dados e o sistema volta ao estado original. Desta forma, podemos encontrar nossa resposta na alternativa B.

Observem agora que o comentário da alternativa A é incorreto em si mesmo. Ele afirma que a quantidade de bits “1” tem que ser par e, apesar de no byte já termos seis “1”s, ele sugere mudar o valor de X para um. Um absurdo!

Sobre a alternativa C, o RAID 5 usa um sistema de paridade para manter a integridade dos dados. Os arquivos são divididos em fragmentos de tamanho configurável e, para cada grupo de fragmentos, é gerado um fragmento adicional, contendo códigos de paridade.

O RAID 5 pode ser implementado com a partir de 3 discos. Independentemente da quantidade de discos usados, sempre temos sacrificado o espaço equivalente a um deles. Ou seja, quanto maior é a quantidade de discos usados no array, menor é a proporção de espaço desperdiçado. Esse comentário elimina a alternativa D.

Já na alternativa E, não temos obrigação de trocar um HD se identificarmos um bit corrompido. Podemos apenas ajustar o valor do bit e continuarmos utilizando o mesmo. Sendo assim, alternativa também incorreta!

Gabarito: B.

  1. Ano: 2017 Banca: FCC Órgão: ARTESP Cargo: Especialista em Regulação de Transporte – Tecnologia da Informação Questão: 71.

71. Um dos comandos disponíveis no PL/SQL do sistema gerenciador de bancos de dados Oracle (11g) é o que possibilita a alteração dos valores presentes em um registro de uma tabela. O comando do PL/SQL para atribuir o valor 0 (zero) ao atributo denominado Total, da tabela Teste, apenas para as situações em que o valor do atributo Caso, dessa mesma tabela seja igual a 200, é

(A) FOR TABLE Teste

PUT Total = 0

WHERE Caso = 200

(B) TABLE Teste

FIX Total = 0

WHERE Caso = 200

(C) SET Teste

UPDATE Total = 0

WHERE Caso = 200

(D) CHANGE Teste

MAKE Total = 0

WHERE Caso = 200

(E) UPDATE Teste

SET Total = 0

WHERE Caso = 200

Comentário: Essa é uma questão de PL/SQL que pode ser respondida tranquilamente com seu conhecimento de SQL. O comando UPDATE usado para atualização de valores de tuplas dentro de um SGBD segue, pelo menos neste comando básico, a sintaxe padrão do SQL. Vejamos como o ORACLE apresenta a sintaxe para o comando.

1. UPDATE table-Name [[AS] correlation-Name]

        SET column-Name = Value

        [ , column-Name = Value} ]*

        [WHERE clause] |

2. UPDATE table-Name

        SET column-Name = Value

        [ , column-Name = Value ]*

        WHERE CURRENT OF

A primeira forma sintática (1), chamada atualização pesquisada, atualiza o valor de uma ou mais colunas para todas as linhas da tabela para as quais a cláusula WHERE é avaliada como TRUE.

A segunda forma sintática (2), denominada atualização posicionada, atualiza uma ou mais colunas na linha atual de um cursor aberto e atualizável. Se as colunas foram especificadas na cláusula FOR UPDATE da instrução SELECT usada para gerar o cursor, somente essas colunas podem ser atualizadas. Se nenhuma coluna foi especificada ou a instrução SELECT não incluiu uma cláusula FOR UPDATE, todas as colunas podem ser atualizadas.

O termo Value pode ser definido da seguinte forma: Expression | DEFAULT

Especificar DEFAULT para o valor de atualização atualiza o valor da coluna para o padrão definido na tabela. DEFAULT é o único valor que você pode ser atribuído diretamente a uma coluna gerada. Sempre que você altera o valor de uma coluna referenciada pela cláusula de geração desta coluna, o Derby recalcula o valor da coluna inteira.

Observe que, pelo exposto acima, a única opção que apresenta uma sintaxe válida é a presente na alternativa E.

Gabarito: E.

  1. Ano: 2017 Banca: FCC Órgão: ARTESP Cargo: Especialista em Regulação de Transporte – Tecnologia da Informação Questão: 72.

72. O sistema gerenciador de bancos de dados MySQL (versão 5.6 e posteriores) admite o bloqueio e o desbloqueio para acesso às tabelas. Os dois comandos utilizados para essas funções de bloqueio e desbloqueio de tabelas são, respectivamente,

(A) GRANT e REVOKE.

(B) COMMIT e ROLLBACK.

(C) OPEN e CLOSE.

(D) LOCK e UNLOCK.

(E) START e END.

Comentário: Essa questão de bloqueio em banco de dados nos remete ao conceito de LOCK e UNLOCK. O MySQL permite que sessões de cliente adquiram os bloqueios de tabela explicitamente com a finalidade de cooperar com outras sessões no acesso a tabelas ou para evitar que outras sessões modifiquem tabelas durante o período em que a sessão requer acesso exclusivo a elas.

Uma sessão pode adquirir ou liberar bloqueios apenas para si mesmo. Uma sessão não pode adquirir bloqueios para outra sessão ou liberar bloqueios mantidos por outra sessão. Os bloqueios podem ser usados ​​para emular transações ou para obter uma velocidade na atualização das tabelas.

O LOCK TABLES adquire explicitamente os bloqueios de tabela para a sessão de cliente atual. Os bloqueios de tabela podem ser adquiridos para as tabelas base ou visões. Você deve ter o privilégio LOCK TABLES e o privilégio SELECT para cada objeto a ser bloqueado.

Para bloqueio sobre visões, o LOCK TABLES adiciona todas as tabelas usadas na view ao conjunto de tabelas a ser bloqueado. Se você bloquear uma tabela explicitamente com LOCK TABLES, todas as tabelas usadas nos triggers associados a essa tabela também serão bloqueadas implicitamente.

O UNLOCK TABLES libera explicitamente todos os bloqueios de tabela mantidos pela sessão atual. O LOCK TABLES libera implicitamente quaisquer bloqueios de tabela mantidos pela sessão atual antes de adquirir novos bloqueios.

Outro uso para UNLOCK TABLES é liberar o bloqueio de leitura global adquirido por meio da instrução FLUSH TABLES WITH READ LOCK, que permite bloquear todas as tabelas em todos os bancos de dados.

Um bloqueio de tabela protege somente contra leituras inadequadas ou gravações por outras sessões. Uma sessão segurando um bloqueio de WRITE pode executar operações em nível de tabela como DROP TABLE ou TRUNCATE TABLE. Para sessões com um READ LOCK, operações DROP TABLE e TRUNCATE TABLE não são permitidas.

Assim, após essa rápida explanação teórica sobre o uso de LOCK e UNLOCK no MySQL podemos marcar nosso gabarito na alternativa D.

Gabarito: D.

  1. Ano: 2017 Banca: FCC Órgão: ARTESP Cargo: Especialista em Regulação de Transporte – Tecnologia da Informação Questão: 73.

73. Na modelagem de um banco de dados relacional há diversos aspectos a serem considerados. Dentre tais aspectos, é correto afirmar que

(A) a função exercida por um conjunto de entidades ligado a um conjunto de relacionamentos denomina-se gatilho.

(B) uma modelagem de um banco de dados relacional suporta um número máximo teórico de conjuntos de entidades, não superior a 30.

(C) as propriedades descritivas de um conjunto de entidades são denominadas de atributos.

(D) conjuntos de relacionamentos não admitem atributos do tipo descritivo.

(E) um conjunto de relacionamentos recursivo liga dois ou mais conjuntos de entidades.

Comentário: O modelo relacional pode ser visto como um conjunto de entidade denominadas relações. Cada relação possui um conjunto de linhas ou tuplas. Cada tupla é uma instância do tipo ou entidade e possui nos seus atributos características descritivas da entidade.

Uma relação se associa com outro por meio de chave estrangeira, que liga uma ou várias tuplas de uma relação à uma ou várias tuplas de outra relação. Não existe número máximo teórico para a quantidade de tuplas em uma relação nem para a quantidade de relações dentro de um esquema. Veja que o Oracle não possui limitações para quantidade de tabelas em um banco de dados, nem de colunas em uma tabela.

Os conjuntos de relacionamento são as conhecidas tabelas de ligação que, geralmente, fazem o relacionamento N:N entre duas entidades. Se você lembrar do modelo ER, deve ter em mente que os relacionamentos possuem atributos. Esses atributos vão aparece no conjunto de relacionamento. Relacionamento recurso não é um termo usado na teoria de banco de dados relacional. Existe um auto relacionamento quando a chave estrangeira referenciada está na própria tabela. É o caso do atributo gerente da tabela empregado.

Gabarito: C.

  1. Ano: 2017 Banca: FCC Órgão: ARTESP Cargo: Especialista em Regulação de Transporte – Tecnologia da Informação Questão: 74.

74. Com o intuito de verificar se uma determinada relação R de um banco de dados relacional atende a segunda forma normal, deve-se verificar se

(A) atributos que não façam parte de qualquer chave candidata de R são total e funcionalmente dependentes da chave primária de R.

(B) o domínio de todos os atributos de R comportam valores considerados múltiplos.

(C) todos os atributos de R são do tipo literal ou numérico.

(D) a relação R tem uma chave primária composta por dois ou mais atributos.

(E) o número de atributos da relação R é múltiplo de 2.

Comentário: Sabemos que a segunda forma norma procura eliminar dependências parciais de atributos primários. Em outras palavras, precisamos procurar por atributos que façam parte de uma chave candidata composta e verificar se individualmente algum deles consegue determinar algum outro atributo, não chave da relação.

Veja que o acabamos de falar acima pode ser reescrito de outra forma. Os atributos que não façam parte de qualquer chave candidata de R são total e funcionalmente dependentes da chave primária de R. Assim, nossa resposta encontra-se na alternativa A.

Gabarito: A.

  1. Ano: 2017 Banca: FCC Órgão: ARTESP Cargo: Especialista em Regulação de Transporte – Tecnologia da Informação Questão: 75.

75. No sistema gerenciador de bancos de dados Oracle (11 g), considere o seguinte comando do PL/SQL, que faz uso da função FLOOR:

SELECT FLOOR (100.5)

O resultado da execução desse comando é

(A) 100.50

(B) 101.0

(C) 100

(D) 101

(E) 100.5

Comentário: A função acima nos remonta a matemática do segundo grau. Não sei se você se lembra das funções “piso” e “teto” aplicadas sobre um número racional. Ela vai retornar o número inteiro inferior (piso) ou superior (teto) ao valor passado como parâmetro. O piso de 4,55 é 4, já o teto do mesmo número é 5.

Sabendo da utilidade matemática desta função o Oracle e outros SGBDs oferecem essas funções nativamente em suas extensões à linguagem SQL. No PL/SQL, por exemplo, usamos as funções FLOOR(number) para representar a função piso e CEIL para executar a função teto. Assim, temos:

CEIL(32.65) à Result: 33

CEIL(32.1) à Result: 33

CEIL(32) à Result: 32

FLOOR(5.9) à Result: 5

FLOOR(34.29) à Result: 34

FLOOR(-5.9) à Result: -6

Gabarito: C.

Por hoje é só pessoal! Em breve voltamos com mais questões de BD e BI comentadas!

Não deixem de seguir minha página no facebook!

Forte abraço e bons estudos!

Thiago Cavalcanti

Deixe seu comentário

O seu endereço de e-mail não será publicado.

Veja os comentários
  • Nenhum comentário enviado.