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
