Buscar

9-sql-expandido-conhecimentos

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Banco de Dados: 
Tipos e Tabela
Banco de Dados: Tipos e 
Tabela
3
Apresentação
Olá, pessoal! Tudo bem com vocês? Espero que sim! Vamos aprender conteúdo 
novo? Partiu! Na aula de hoje trabalharemos com os comandos de criação, 
manipulação e permissões de acesso. Além disso, iremos aprender a elaborar 
modelos físicos de dados e aprenderemos a manipular e manter sistemas de 
bancos de dados por meio da geração de consultas e relatórios, bem como a sua 
manutenção. Prepare-se para uma unidade bastante prática!
4
1. Alteração de Tabela 
Todos sabemos que o humano é passível de cometer um erro, isso pode acontecer 
na hora da criação da estrutura. Então não precisamos ficar preocupados, pois 
existem comandos que podemos utili- zar para a alteração da estrutura e inserir 
novas regras no momento da alteração da estrutura.
Portanto, após a criação da estrutura de uma tabela, pode-se incluir (ADD), excluir 
(DROP) ou modificar (CHANGE) colunas ou constraints. Para isso utilizaremos o 
comando ALTER.
• ALTER TABLE tbestudante ADD desc_email VARCHAR(60);
• ALTER TABLE tbestudante ADD descs_email VARCHAR(60) AFTER nome_
estudante;
Podemos também alterar o nome de uma coluna já existente, como também mudar 
o tipo se necessário.
• ALTER TABLE tbestudante CHANGE desc_email DS_EMAILESTU- DANTE 
VARCHAR(60);
Nesse outro caso, o comando modify apenas realiza a alteração do tipo 
do campo, mas o nome é mantido.
• ALTER TABLE tbestudante MODIFY DS_EMAILESTUDANTE var- char(160);
Para finalizarmos os comandos de alteração, mostraremos o comando de deleção, 
ou seja, o comando drop.
• ALTER TABLE tbestudante DROP COLUMN codigo_municipio
2. Exclusão de Tabela
Caso haja necessidade de eliminar a tabela do banco, podemos usar o comando 
DROP TABLE. Só precisamos de um certo cuidado com esse comando, porque, além 
de excluir fisicamente a tabela e junto com ela os dados, todas as constraints ou 
relacionamentos entre as tabelas deverão ser respeitos. Pode ser que a ope ração 
não seja finalizada devido a essas regras.
5
• DROP TABLE tbestudante.
Então finalizamos aqui os comandos chamados de DDL (Data Definition Language) 
ou Linguagem de Definição de Dados. Até agora criamos a estrutura para que seja 
possível colocar alguma informação nelas. Agora veremos os comandos chamados 
de DML (Data Manipulation Language) ou Linguagem de Manipulação de Dados.
A linguagem de manipulação de dados são comandos que permitem a modificação 
de conteúdo armazenado nas tabelas. Os co mandos mais utilizados são INSERT, 
UPDATE e DELETE.
Linguagem de programação
Fonte: Plataforma Deduca (2021).
#PraCegoVer: Imagem que representa o relacionamento entre os diferentes 
tipos de dados.
Para exemplificarmos os comandos e para que seja possível ver os resultados, 
aconselhamos que a criação a seguir seja executada no seu computador para que 
veja o resultado e crie esta estrutura:
Criar a tabela “tb_pais” conforme o script:
CREATE TABLE tb_pais (
cod_pais number (2),
nome_pais char (45), desc_nacionalidade char(35),
constraint pais_pk primary key (cod_pais), constraint pais_uk 
unique(nome_pais)
);
6
A relação de colunas da tabela poderá ser omitida quando forem inclusos valores 
para todas as colunas dessa tabela.
Estruturas de dados
Fonte: Plataforma Deduca (2021).
#PraCegoVer: Imagem que representa um conjunto de dados que vão formar a 
base de dados.
2.1 INSERT
Vamos os comandos de inserção:
• INSERT INTO – comando para inserir os dados
• tbpais – nome da tabela
• VALUES – valores que serão inseridos
Sempre que você estiver em dúvida sobre qual dos dois operadores deve ser 
primeiro quando a expressão é avaliada, use sempre parênteses para definir a 
prioridade das expressões.
2.3 UPDATE
O comando UPDATE é utilizado para modificar a(s) linha(s) existen tes.
UPDATE tabela SET COLUNA = Valor WHERE condição
Comandos:
7
Update tbpais set nm_pais=’Portugal’,
ds_nacionalidade=’Portug’ Where cd_pais = 3;
Update tbpais set ds_nacionalidade=’Portuguesa’ Where cd_pais = 3;
Para se utilizar o comando UPDATE, aplicamos a table já a cláusula SET devemos 
utilizar para informar a coluna cujo valor será alterado. Importante não esquecermos 
de utilizar a cláusula WHERE, pois restringe as atualizações apenas aos registros que 
atenderem suas condições. A cláusula WHERE iremos abordar logo adiante.
2.3 DELETE
O comando DELETE é utilizado para excluir os registros existentes.
Nunca omita a cláusula WHERE. No caso da omissão, todos os registros da tabela 
serão excluídos.
O comando DELETE é aplicado a uma tabela e pode ou não ter uma cláusula WHERE 
que restringe os registros que ele excluirá. Caso não seja informada a cláusula, 
excluirá todos os registros da tabela em questão.
2.4 SELECT
O comando SELECT permite a seleção e a manipulação para visualização das 
informações armazenadas no banco de dados. O comando SELECT permite, exibir 
os resultados de várias maneiras, por exemplo, mostrando todas as colunas 
sem mencionar os nomes; trabalhar com colunas específicas; permite também 
realizar opera ções aritméticas e alterar o nome do resultado final de uma coluna na 
visualização.
Algumas vezes as informações podem ser iguais em alguns campos. Para 
suprimirmos os registros iguais na visualização, podemos usar o comando DISTINCT.
2.5 WHERE
Alfanuméricos e Datas na cláusula WHERE devem estar entre aspas simples.
A cláusula WHERE é muito importante principalmente na hora de usar os comandos 
UPDATE e DELETE.
8
3. Criando Grupo de Dados
Em vários momentos, faz-se necessária a aplicação de funções de agregação não 
em todos os itens existentes em uma tupla, mas ape nas em determinados grupos 
de tuplas, ou seja, aplicação de agregação separada dentro da tabela, baseadas em 
determinado valor.
Uma das formas de se obter esse recurso, na linguagem SQL, é por meio da 
utilização do comando GROUP BY. Esse comando possibili ta a separação das tuplas 
em grupos diferentes em que todas as tuplas dentro de um determinado grupo 
possuem o mesmo valor avaliado pelas condições do GROUP BY, conforme descrito 
no exemplo.
Selecionar o sobrenome e a quantidade de contatos que possuem o mesmo 
sobrenome.
sobrenome, COUNT(*) FROM contato GROUP BY
sobrenome;
Note que todas as tuplas da tabela contato, nesta consulta, são divididas em grupos 
cujo sobrenome é igual.
Ao integrar a função COUNT (*), ocorre a contagem somente das tuplas de cada 
grupo, apresentando como resultado uma lista que contempla os sobrenomes e as 
quantidade de contatos de cada sobrenome.
O exemplo 2 apresenta em seu enunciado a seleção do sobrenome e a quantidade 
de contatos que possuem o mesmo sobrenome, desde que haja pelo menos dois 
contatos com o mesmo sobrenome.
sobrenome, COUNT(*) FROM contato
GROUP BY sobrenome HAVING COUNT (*) >1;
Foram citados vários tipos de operações básicas que poderiam ser adotadas na 
manipulação de dados (DML), dentre elas estava a operação HAVING.
Esta cláusula é usada sempre que for necessário filtrar quais grupos serão 
mostrados no resultado, ou seja, somente os grupos que satisfazem as condições 
estipuladas pela operação HAVING é que apare cerão nos resultados.
9
No entanto, existe uma diferença entre o uso do HAVING e do WHE- RE. Mesmo ao 
se analisar as suas funcionalidades, ambas são utilizadas quando desejamos filtrar 
os resultados de uma consulta.
A cláusula WHERE filtra as tuplas que são avaliadas em primeiro lugar, ou seja, esta 
cláusula é avaliada antes de qualquer função de agregação existente na consulta.
Já a cláusula HAVING só é avaliada após os grupos já estarem for mados e, dessa 
forma, é usada para filtrar esses grupos para o resul tado final.
Procedimentos 
em SQL e 
Estruturas
Procedimentos em SQL e 
Estruturas
3
Apresentação
Olá, meus queridos alunos. Hoje, falaremos um pouco sobre os procedimentos em 
SQL e estruturas, procedimentos em SQL, como Create Procedure e End. Estruturas 
de repetição também será apresentado, comoWhile e Loop, além de estruturas 
relacionais, como then, if, also. Vamos conhecer assunto novo! Partiu!
4
1. Acordo padrão do Java 
Procedures ou procedimentos são considerados coleções de comandos que ficam 
armazenados para facilitar o trabalho com o banco de dados. Os procedimentos são 
capazes de aceitar parâmetros de entrada e de oferecer o retorno de vários valores 
para o programa que realizou a chamada.
Também é possível adotar instruções de linguagens de programação para executar 
operações no banco de dados e, inclusive, realizar a chamada de outros procedimentos.
Estudo
Fonte: Plataforma Deduca (2021).
#PraCegoVer: Imagem que representa um homem relacionado a diversos 
símbolos de trabalho.
O retorno dos procedimentos pode ser configurado para fornecer a informação 
de sucesso ou falha na execução da chamada para o programa que disparou 
o procedimento. Agora podemos conhecer tipos e benefícios do uso dos 
procedimentos nos softwares e SGBDs.
• Procedimentos locais: 
São criados a partir do banco de dados do próprio usuário.
• Procedimentos temporários: 
Não ficam armazenados no sistema.
5
• Procedimentos de sistema: 
Ficam armazenados nos bancos de dados do tipo SQL Server.
• Procedimentos remotos: 
Possibilitam o uso de querys distribuídas.
• Procedimentos estendidos: 
São criados com a extensão do tipo .dll.
O procedimento controla os processos e as atividades. É executado de modo a 
proteger os objetos dos bancos de dados subjacentes.
Esse comportamento torna desnecessária a concessão de permis sões individuais 
de acesso a objetos. É possível definir a cláusula EXECUTE AS durante a criação 
do procedimento, o que irá permitir que o usuário ou as aplicações executem 
determinadas atividades no banco de dados sem a definição de permissões diretas.
O tráfego na rede entre cliente e servidor pode ser consideravelmente 
reduzido com a execução dos códigos dos procedimentos em um 
único bloco. Isso significa que esse bloco de código será executado 
a partir de uma única chamada enviada pela rede. Caso a criação 
do procedimento seja dispensada, cada linha de código é enviada 
individualmente, gerando, cada uma, uma chamada na rede entre 
cliente e servidor.
Atenção
A criação de um procedimento armazenado permite que a operação seja executada 
no banco a partir de aplicações e usuários diferentes. Por isso, são eliminadas 
gravações duplicadas do código em diferentes pontos de uso no sistema ou em 
aplicações.
6
Os procedimentos facilitam a manutenção do software e das 
funcionalidades de controle do banco de dados.
Atenção
O fato de os procedimentos estarem concentrados em um único lugar, para serem 
utilizados a partir de diversos pontos da aplicação e usuários, facilita o processo de 
mudança de parâmetros e funcionalidades, pois basta fazer a alteração em um lugar 
que todos os programas e aplicações utilizarão o procedimento com base nesse 
mesmo lugar.
Desse modo, o desempenho da aplicação pode ser melhorado com o uso dos 
procedimentos, pois estes são compilados apenas na primeira vez que são 
executados, e nas demais vezes o código compi lado é aproveitado para novas 
execuções.
CREATE PROCEDURE
Os procedimentos são criados por meio do comando CREATE PRO CEDURE, 
cuja configuração e sintaxe poderão ser conhecidas a se guir. Na criação de 
um procedimento, podemos definir tipos de parâmetros, variáveis locais, testes, 
condições etc.
A sintaxe correta para criação de um procedimento é:
CREATE PROCEDURE nome_procedimento ({ nomes_parametros | tipos_parametros 
}) 
[ DECLARE declaracao_variaveis ] BEGIN 
comandos_procedimentos 
END
Vamos a alguns exemplos de criação de procedimentos diversos com parâmetros 
ou não.
O primeiro exemplo traz a criação de um procedimento simples para seleção das 
vendas realizadas por uma loja:
7
CREATE PROCEDURE sp_vendas AS 
BEGIN 
SELECT * FROM VENDAS END
Agora, vamos a um exemplo de criação de um procedimento que utilize parâmetros:
CREATE PROCEDURE sp_vendas @codigo int 
AS BEGIN 
SELECT * FROM VENDAS WHERE codigo=@codigo END
2. Estruturas de repetição
As estruturas de repetição são recursos pelos quais trechos de có digo podem ser 
utilizados repetidamente, até que uma determinada condição seja alcançada. Para 
a criação de estruturas de repetição com a linguagem SQL, temos as estruturas 
WHILE, LOOP e REPEAT, que conheceremos em seguida com mais detalhes.
Compreendendo o assunto
Fonte: Plataforma Deduca (2021).
#PraCegoVer: Imagem que representa um quebra-cabeças colorido.
WHILE
O WHILE é um recurso que permite que o código contido dentro dele seja executado 
somente se a condição definida e testada no cabeçalho for verdadeira.
A sintaxe do WHILE é:
8
WHILE condição DO declarações 
END WHILE;
Podemos ainda visualizar o uso do WHILE em um procedimento. O exemplo a seguir 
demonstra a criação de um contador simples. Vejamos:
identificador CREATE PROCEDURE contador(quantidade_maxima int)
BEGIN
DECLARE contador INT DEFAULT 0; 
WHILE contador < quantidade_maxima DO SET contador = contador + 1; 
END WHILE identificador;
LOOP
O funcionamento do comando LOOP é semelhante ao do WHILE, porém a condição 
de interrupção do laço não é informada no cabeçalho de declaração. Portanto, fica a 
cargo do programador definir, dentro do LOOP, uma condição para que o LOOP seja 
abandonado.
identificador LOOP declarações
END LOOP identificador;
REPEAT
O comando REPEAT é basicamente utilizado para a mesma finalidade dos comandos 
anteriores, mas trabalha com a execução das declarações para depois realizar a 
validação da condição.
A sintaxe do comando REPEAT é:
identificador REPEAT declarações 
UNTIL condição 
END REPEAT identificador
9
3. Estruturas condicionais
Os procedimentos e as funções podem ainda ser incrementados com o uso das 
estruturas para criação de condições disponíveis na linguagem SQL.
Os comandos IF - THEN criam fluxos de execução nos procedimen tos e nas 
funções, assim como ocorre nas linguagens de programa ção. Diversas ações e 
diferentes fluxos podem ser definidos a partir do uso dessas estruturas.
São três as variações de estruturas condicionais:
IF - THEN
IF - THEN - ELSE
IF - THEN - ELSE - ELSIF – ENDIF
O nível mais simples de criação de uma estrutura condicional é feito com o uso do 
IF - THEN. No exemplo a seguir, veremos algumas definições que serão realizadas 
se a condição for atendida. Caso a condição seja falsa, a execução passará para 
as próximas linhas de código, sem executar as definições da condição que não foi 
atendida: 
IF (condição) THEN Definições 
END IF;
Uma condicional com IF - THEN também pode ser associada com a função EXISTIS 
para a criação de estrutura mais complexa. A seguir, veremos um exemplo com 
o uso desses dois comandos para excluir dados de uma tabela de acordo com a 
condição estabelecida. Na situação exemplificada, se houver um registro na tabela 
de vendas com código 20, a condição será verdadeira e todas as vendas de có digo 
serão removidas da tabela.
IF EXISTS(SELECT 1 FROM VENDAS WHERE codigo = 20) THEN 
DELETE FROM VENDAS WHERE codigo = 20 
End If; 
End
Controle e 
gerenciamento 
de transações de 
Bancos de Dados
Controle e gerenciamento 
de transações de Bancos 
de Dados
3
Apresentação
Olá, estudante. Seja bem-vindo(a) à unidade relacionada ao controle e gerenciamento 
de transações de bancos de dados. Aqui, você estudará o conceito associado ao 
controle e ao gerenciamento aplicados à transação de bancos de dados, bem como 
as técnicas e procedimentos utilizados principalmente nos sistemas operacionais e 
nos sistemas distribuídos de forma geral, para gerenciar as transações.
4
Controle de transação
O controle de transação é um conjunto de técnicas e procedimentos utilizados 
principalmentenos sistemas operacionais e nos sistemas distribuídos de forma 
geral para gerenciar as transações.
Assim, as transações são um conjunto de operações que devem ser executadas de 
forma única, sem erros. O conceito de transação é utilizado tanto nos bancos de dados 
locais quanto nos distribuídos e também nos sistemas operacionais, no gerenciamento 
de recursos para os processos e nos threads (ELMASRI; NAVATHE, 2018).
Evolução da linguagem Java
Fonte: Autor (2020).
#PraCegoVer: No fluxograma, é possível ver um exemplo de circulto de transa-
ções.
O gerenciamento das transações está presente em diversas áreas e por isso 
apresenta avanços significativos. Trata-se de um problema muito complexo, não 
sendo possível apresentar uma única solução viável.
Um dos atributos de um bom controle de transações é a presença da característica 
isolamento. Essa característica é alcançada bloqueando todo o banco de dados 
enquanto as operações da transação são executadas. Isso é realizado para garantir 
a consistência dos dados. 
5
Atualização Java
Fonte: Autor (2020).
#PraCegoVer: na imagem, existem um esquema representando a arquitetura de 
um banco de dados com todos os seus elementos interligados.
A escala, também chamada de scheduling, são as sequências geradas a partir das 
operações da transação. 
Transações 
Estudante, considerando a escala abordada anteriormente, é possível aplicar 
algoritmos de otimização para escolher a melhor sequência de execução das 
operações, otimizando o controle de transações.
Uma transação pode ser única ou formada por um conjunto de transações, compondo 
uma escala. A fim de se aprofundar mais nisso, estudante, veja o recurso a seguir:
• Transação. 
As transações são utilizadas principalmente no gerenciamento dos sistemas 
operacionais e nos sistemas gerenciadores de bancos de dados, inclusive os 
distribuídos.
6
• Escala de transações. 
A escala de transação funciona como uma lista de tarefas que devem ser 
executadas em que é preciso definir a melhor ordem para as execuções.
Nesse sentido, é possível afirmar que uma transação pode ter conflito serializável ou 
ter uma visão serializável.
Banco de Dados
Fonte: Plataforma Deduca (2021).
#PraCegoVer: na imagem, existe uma sequenciação de sistema de dados, li-
gando usuários, programadores, consultas, programas, SGBD, catálogo e banco 
de dados.
Assim, no conflito serializável, há maior restrição e são utilizados grafos para 
modelar a precedência das operações. Além disso, não deve haver ciclos. Esse 
método demanda maior computação para executar e, em contrapartida, oferece 
maior precisão na otimização. Ao final, é gerado um plano serial, que é utilizado pelo 
escalonador para executar as operações na melhor sequência.
Já na visão serializável, há menos restrições. A modelagem não é realizada com 
grafos de forma otimizada. Nessa técnica, são lidos os mesmos valores de dados e 
comparados ao estado final do banco de dados, sendo equivalente a um plano serial. 
7
Bloqueios
Considerando esse aspecto, uma das técnicas para garantir a consistência nos 
dados durante o controle de acessos concorrentes é fazer o bloqueio do item. 
Quando um dado do banco de dados precisar de uma atualização externa, esse item 
é bloqueado para que nenhum outro acesso ao dado seja permitido. Essa técnica 
permite que o dado não seja lido enquanto é alterado ou que haja duas alterações 
simultâneas.
O bloqueio do dado pode ser um bloqueio compartilhado, ou um bloqueio exclusivo, 
conforme você pode observar a seguir.
Bloqueio compartilhado: Somente é garantido o acesso à leitura do dado, não sendo 
possível alterá-lo enquanto o bloqueio estiver ativo. 
Bloquei exclusivo: Não é possível ler ou escrever nos dados. Esse é um bloqueio 
mais rígido e não permite que os nós da rede leiam dados desatualizados ou em 
atualização. 
Inclusive, o bloqueio compartilhado, embora não permita gerar inconsistência nos 
dados, possibilita que seja realizada uma leitura errada do dado. Em outras palavras, 
pode haver a leitura de um dado desatualizado e esse valor é repassado aos demais 
nós da rede, propagando o erro.
Consistência
Fonte: Autor (2021).
#PraCegoVer: na imagem, existe uma tabela contendo a definição de consistên-
cia e seriabilidade.
8
Se, por algum motivo, for necessário ler os dados sem realizar o bloqueio, essa 
atitude pode gerar inconsistências no banco de dados se houver transações 
concorrentes, ou seja, se houver mais de uma transação tentando acessar o mesmo 
dado. Essa transação concorrente pode ser gerada por quaisquer nós da rede que 
queira acesso ao dado.
Um problema que pode levar a inconsistências é o deadlock, quando uma transação 
(T1) está bloqueando um recurso que é pedido por outra transação (T2) e essa outra 
(T2) também detém um recurso necessário a T1. Identificado o deadlock, uma das 
transações precisa ser desfeita, ou seja, é necessário realizar um rollback para que 
as modificações sejam revertidas. 
Sem uma política robusta de gerenciamento de deadlock, o banco de dados iria parar 
nesse momento, pois não haveria como resolver esse impasse.
Agora, estudante, veja agora como prevenir e tratar o deadlock. Em alguns tipos de 
sistemas é computacionalmente e financeiramente viável prevenir um deadlock, 
mesmo com os altos custos para o desempenho do sistema (atraso no sistema).
Desta forma, na maioria dos sistemas comerciais, em que é possível haver falhas, os 
deadlocks são tratados ao invés de prevenidos. Dado que o sistema tem uma baixa 
ocorrência de deadlock, não é preciso gastar recursos com a prevenção.
O deadlock pode ser tratado da seguinte forma: podemos proibir a liberação de 
um novo item para a transação se esta não liberar o item anterior. Ou seja, uma 
transação só pode ser detentora de um único recurso por vez.
O protocolo de bloqueio garante a serialização dos itens se, e somente se, para todas 
as escalas (scheduling) possíveis de execução, as relações forem acíclicas (não 
terem ciclos).
Outro problema relacionado a concorrências de transações é o starvation, situação 
caracterizada por uma transação que nunca consegue acesso (bloqueio) a um item 
desejado. No starvation sempre há outras transações pedindo e liberando somente 
o bloqueio compartilhado, enquanto a transação em questão, que deseja escrever no 
item, necessita do bloqueio exclusivo para realizar a escrita.
Por outro lado, a técnica de bloqueio em duas fases tenta garantir a serialização das 
operações e evitar o starvation. 
Assim, estudante, para cumprir com os requisitos do protocolo, as transações devem 
obedecer a duas fases principais:
9
• Fase de expansão
Nessa fase, a transação pode obter bloqueio dos dados, sendo imprescindível 
obter todos os dados necessários antes de iniciar a próxima fase. Nessa fase, 
a transação não pode liberar nenhum item de dado.
• Fase de encolhimento
Após a fase de expansão, temos a fase de encolhimento. Nessa fase, 
a transação não pode pedir novos bloqueios, devendo realizar todas as 
operações somente com os dados que foram reservados na fase anterior. 
Se algum dado for necessário e não tiver sido reservado, ou se todas as 
operações estiverem estornadas, espera-se a próxima fase de expansão.
Vale frisar que a técnica de bloqueio em duas fases não garante contra a ocorrência 
de deadlock, mas protege contra o starvation. Além disso, o bloqueio em duas fases 
pode ser com bloqueio rigoroso, ou com bloqueio severo.
Inclusive, vale ressaltar que todos os bloqueios são mantidos até a transação 
ser totalmente efetivada, ou seja, executar todas as operações com sucesso. No 
bloqueio em duas fases severo, somente os bloqueios exclusivos são mantidos até a 
transação ser efetivada. 
Esses dois estilos da técnica diferem basicamente na quantidade e nos tipos de 
itens que são mantidos em bloqueio até a conclusão da transação.
Outra técnica é o protocolo de bloqueio baseado em árvore, em que uma transação 
T só pode bloquear um item filho se já tiverbloqueio sobre os pais. Imagine os 
itens de dados como uma árvore, em que os dados “pais” estão acima dos dados 
“filhos”. Então, para se ter bloqueio ao dado abaixo, é preciso ter acesso a todos os 
superiores a ele, na mesma linha de execução. Essa técnica é chamada de conflito 
serializável e garante prevenção de deadlock.
11
Referências
ELMASRI, R.; NAVATHE, S. B. Sistemas de banco de dados. 7. ed. São Paulo: 
Pearson, 2018.
MEDEIROS, L. F. de. Banco de dados: princípios e prática. Curitiba: Intersaberes, 
2013.
RAMAKRISHNAN, R. Sistemas de gerenciamento de banco de dados. Porto Alegre: 
AMGH, 2008.

Continue navegando