2009/5/22 Jorge Oliveira <[email protected]>:
>
> Agradeço aos colegas JotaComm e ao Osvaldo pelas informações.
>
> O motivo da minha dúvida, é porque trabalho com projetos de migração de
> sistemas legados escritos em COBOL para a baixa plataforma, usando Oracle e
> DB2.
>
> Estou fazendo testes com o COBOL e PostgreSQL para passar a utilizá-lo em
> projetos futuros.
>
> Como em alguns "cases" os bancos de dados são hierárquicos (o que permite a
> leitura sequencial dos registros nas tabelas), preciso acessar pontualmente
> um determinado indice em função da forma que o registro é lido na tabela do
> banco hierarquico (read next e read previus).
>
> Se tiverem uma idéia de como posso resolver, desde já agradeço
>


Nossa! Hierárquico me lembra o IMS da IBM (vagamente porque faz muito tempo...).

Creio que a grande diferença entre um banco de dados hierárquico, ou
um em rede, e um relacional é que neste último você não navega pelos
registros mas sim trata o "conjunto" de dados, portanto você não tem
algo do tipo "recupere o registro anterior" ou "recupere o próximo"
tão comuns nos bd navegacionais (se é que esta palavra existe). Num BD
relacional você declara o que deseja e não o como obter o que deseja.

Concordo que possa ser não trivial mas creio que você deveria avaliar
a possibilidade de modificar sua aplicação para que ele passe a
trabalhar sobre "conjuntos" (sim, é a mesma idéia da Teoria dos
Conjuntos que aprendemos na escola).

Uma possível solução é você utilizar cursor, ou seja, você recupera um
conjunto de dados e em sua aplicação utiliza o cursor para navegar
entre estes registros recuperados.
http://www.postgresql.org/docs/current/interactive/sql-declare.html
http://www.postgresql.org/docs/current/interactive/sql-fetch.html
http://www.postgresql.org/docs/current/interactive/sql-move.html
http://www.postgresql.org/docs/current/interactive/sql-close.html

Nos casos de hierarquia provenientes de um auto-relacionamento talvez
você possa utilizar os contrib ltree e tablefunc/connectby.
http://www.postgresql.org/docs/current/interactive/contrib.html

Osvaldo
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a