Eu os usei para facilitar o trabalho com árvores (como tópicos de comentários). Você pode armazenar o caminho da raiz da árvore para um único nó em uma matriz, cada número na matriz é o número da ramificação desse nó. Então, você pode fazer coisas assim:
SELECT id, content
FROM nodes
WHERE tree = X
ORDER BY path -- The array is here.
O PostgreSQL irá comparar os arrays elemento por elemento da maneira natural, então
ORDER BY path
irá despejar a árvore em uma ordem de exibição linear sensata; então, você verifica o comprimento de path
para descobrir a profundidade de um nó e isso lhe dá o recuo para obter a renderização correta. A abordagem acima leva você do banco de dados para a página renderizada com uma passagem pelos dados.
O PostgreSQL também tem tipos geométricos , tipos de chave/valor simples e suporta a construção de vários outros tipos compostos .
Normalmente é melhor usar tabelas de associação tradicionais, mas não há nada de errado em ter mais ferramentas em sua caixa de ferramentas.