Universidade Federal do Pará Centro de Ciências Exatas e Naturais Departamento de Informática Disciplina: Estrutura de Dados II Prof.: Sampaio Arquivo Direto Por: Sebastião Farias Júnior Ricardo Souza Mat.:9908803801 Mat.:9908801101 1- Arquivo Direto » Consiste na instalação dos registros em determinados endereços, baseados no valor de uma chave primária, ao contrário do arquivo indexado que utiliza uma estrutura auxiliar(índice) »Utiliza uma função que calcula o endereço de um registro, eliminando a necessidade de um índice »Objetivo principal é o mesmo do arquivo indexado, que é obter acesso aleatório eficiente Representação de acesso a um arquivo direto. NÚMERO NOME IDADE SALÁRIO argumento 1 1100 ANTONIO 34 x=‘JOSE’ 2 3 4 5 1335 JOSE 27 800 1787 ADEMAR 43 2327 3255 PEREIRA 25 2005 3553 MARIA 29 1500 E=f(x) x:chave primária E=2 1700 2 - Cálculo do endereço. -Funções Determinísticas: associa um único valor da chave de acesso a cada endereço. -Funções Probabilísticas: geram para cada valor da chave primária um endereço ”tão único quanto possível”. F(x)=[(x - 900) / 61] +1 Número Endereço 1000 2 1050 3 1075 3 1100 4 1300 7 1350 8 Número 1400 1440 1480 1600 1700 1800 Endereço 9 9 10 12 14 15 1 2 3 4 Número 1000 1050 1100 1075 Nome Jose Fernanda Pamela Anderson Idade 25 32 27 19 Elo 4 1300 1350 1400 Antonio Vanessa Valéria 33 21 18 5 6 7 8 Tabelas de dispersão. Métodos: -Método da divisão. Chave Endereço 4 0 5 1 6 2 7 3 8 Endereço= (chave mod 4) -Método da separação. 71 = 00010¦00111 00010 xor 00111 00101 = 5 logo f(x)=5 -Método da multiplicação. f(x)=71*n ex.:n=2 0001000111 00010001110=14 logo f(x)=14 -Método da dobra (soma dos pares). 5 6|3 9|0 2 9 4|0 2 4 1 logo f(x)=41 3 - Tratamento de colisões - Aspecto mais importante na organização de arquivos direto. - Conseqüência do uso de funções não determinísticas. - Ocorre quando a dois valores diferentes da chave de acesso é atribuídos o mesmo endereço. - Soluções: endereçamento aberto e encadeado. Função Coincidindo endereço Chave Endereço 4 0 5 1 6 2 7 3 8 Endereço= (chave mod 4) 3.1 - Tratamento por endereçamento aberto: - Ao ocorrer uma colisão em uma operação de inserção, é feita uma busca sobre o arquivo para localização de um endereço livre. - Métodos de busca: pesquisa seqüencial, pesquisa no bloco, realeatorização. Chave Endereço 0 01 10 10 01 00 02 02 00 15 04 15 06 7 X mod 5 07 3.2 - Tratamento por encadeamento - Todos ou parte dos registros que colidem em um endereço gerado são juntados(organizados) em uma lista de encadeada. - Meios de organização: utilização de encadeamento puro e áreas de extensão. Exterior/Puro 01 10 00 03 06 19 X mod 5 15 Interior/Extensão 01 10 03 00 05 07 15 09 X mod 5 4- Operações: 4.1 - Acesso a um registro - Acesso serial: uso de uma função de cálculo de endereço que preserva a ordem dos registros pelo valor da chave de acesso. Exemplo - Acesso Aleatório: Uso de uma função de cálculo de endereço ao argumento de pesquisa C, obtendo-se o endereço E=F(C). 01 10 00 03 06 19 X mod 5 15 4.2 - Inserção de um registro -A função de cálculo de endereço (F) é aplicada à chave C do registro a ser inserido, resultando o endereço E=F(C). - Se houver colisões, utiliza-se um dos métodos de tratamento de colisão citados anteriormente 4.3 - Remoção de um registro - Acessa o registro que se quer excluir, se necessário é colocado o valor “excluído” no seu campo de estado. Caso esteja encadeado em alguma lista de colisão, pode ser dela removido, ou não. 4.4-Alteração de um registro • Se a alteração não mudar o valor da chave de acesso nem aumentar o comprimento do registro, este é simplesmente lido, alterado e gravado no mesmo endereço • Caso contrário, o registro é excluído, alterado e novamente inserido, de acordo com a operação de inserção em arquivos diretos Número 1 Argumento de Pesquisa 2 E=F(C) C=Laura E=2 3 Nome 1100 Antônio 1800 Laura 2950 Sandra Salário 1500 7500 6500 1100 4.5 - Leitura exaustiva - É efetivada pela aplicação sucessiva da operação de acesso a um registro. 4.6 - Reorganização do arquivo - Efetuada periodicamente por motivos de eficiência de acesso. - Áreas de extensão: reagrupa os registros de uma mesma lista em posições contíguas da área. - Encadeamento puro: reagrupamento dos registros de cada lista em posições tão próximas quanto possível.