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.
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
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.
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.
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.
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.
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.
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
Neste artigo você encontrará um resumo do Transtorno de Personalidade Esquizotípica, pertencente ao tópico de…
Olá, pessoal, tudo bem? As funções essenciais à justiça estarão em pauta hoje no nosso…
Confira quais são os hospitais de lotação! Iniciais de até R$ 17,9 mil! O edital…
Neste artigo você encontrará um resumo do Transtorno de Personalidade Evitativa, pertencente ao tópico de…
Olá, pessoal, tudo bem? Hoje vamos falar sobre controle de constitucionalidade. Dada a proximidade da…
Atenção, concurseiros! Neste domingo, 22 de dezembro, encerra o prazo para garantir sua inscrição no concurso…