Criação e uso de Busca Fonetizada em Base de Dados Relacionais, em Português – Parte 02
Nossa tarefa será realizar a busca fonética da forma mais eficiente possível nesta tabela. Neste ponto devemos realizar a carga da tabela, para tanto criei uma base de inserção. Abaixo faço isso por insert, trabalhando no Oracle o preferível seria SQLLOADER, mas optei por essa forma para que os exemplos possam ser adaptados de forma mais rápida a qualquer banco de dados, e também por que carga de dados esta fora do escopo desse artigo.
Figura.3 (script2)
Neste momento podemos realizar uma busca válida com a função fonética, como abaixo, onde tanto faz digitar LUIZ com “Z” ou LUIS com “S”. obs.: neste momento a função FONETIZAR deve estar criada, ver o artigo //www.devmedia.com.br/articles/viewcomp.asp?comp=6300, e realize o procedimento lá descrito.
Figura.4(script 3)
Podemos constatar que para o nome completo já temos o retorno, mesmo escrevendo “LUIS” e não “LUIZ”, mas a aplicação deixaria bastante a desejar se soubéssemos apenas que havia “LUIZ” ou “AUGUSTO” no nome, ou ainda se nossa base tivesse milhões de dados, a busca não seria eficiente. Para resolvermos esses problemas criaremos uma tabela auxiliar.
Figura.5(script 4)
Neste momento iremos popular essa tabela, iremos supor a necessidade de popular uma tabela com milhares de registros, utilizaremos uma procedure de banco para tanto. Aqui faço um parêntese o ideal é que a cada registro inserido/alterado na tabela CLIENTE, acione uma TRIGGER que atualize a tabela auxiliar, fica como exercício para os leitores. A seguinte procedure de banco (Oracle 9i) pode ser usada para criar ou recriar os dados na tabela auxiliar
Figura. 6 (script 5)
Iremos então executar a procedure criada com a seqüência de comando abaixo:
BEGIN
FONETIZAR_CLIENTE;
COMMIT;
END;
Feito isso temos nossa tabela auxiliar populada.
Figura. 7
Acabamos de criar, e popular, uma tabela auxiliar com as partes fonetizadas do campo nom_cliente, por exemplo: o cliente EDSON ARANTES DO NASCIMENTO código 31701041 consta na tabela CLIENTE_FONETICA como: