Vamos ver dois exemplos de inserção.
Exemplo 1 - Suponha que desejamos inserir um registro de nome “André Peixoto”. Como o SGBD irá processar essa operação? De maneira bem simples, irá localizar o espaço disponível no fim do primeiro bloco e lá cadastrar esse registro. Observe agora que o primeiro bloco ficaria totalmente ocupado, sem espaços disponíveis.
Exemplo 2 - E se agora outro registro de nome “André Xavier” fosse inserido? Como o SGBD iria se comportar? Preste atenção no passo a passo abaixo, pois o SGBD iria alocar um novo bloco para incluir esse funcionário:
Observe que o SGBD cria ponteiros que direcionam o final de um bloco para o início do outro bloco a fim de prover mais espaço de armazenamento. Dessa forma, o resultado final serial algo como:
| Bloco físico do disco |
Nome | Sobrenome | Demais campos da tabela... |
|---|---|---|---|
| 1 | |||
| André | Costa | ... | |
| André | Barros Leite | ... | |
| André | Matias Lemos | ... | |
| André | Peixoto | ... | |
| Ponteiro: Continua no bloco 50. | |||
| 2 | |||
| Bernardo | Felix Coelho | ... | |
| (espaço disponível) | |||
| (espaço disponível) | |||
| (espaço disponível) | |||
| 3 | |||
| Caio | Ferreira Leite | ... | |
| Caio | Gomes da Costa | ... | |
| (espaço disponível) | |||
| (espaço disponível) | |||
| 4 | |||
| Daniel | Matos Lemos | ... | |
| Daniel | Costa | ... | |
| ... | |||
| ... | |||
| Demais blocos... | ... | ... | ... |
| 50 | |||
| André | Xavier | ... | |
| (espaço disponível) | |||
| (espaço disponível) | |||
| (espaço disponível) |