Ambiente
- PostgreSQL 9.1
- Java
Problema
Cercherò di illustrare il problema qui nel modo più semplice possibile:
Sto provando a registrare la seguente relazione:
Nodo 1 = > Nodo 2 = > Nodo 3
Dove il Nodo 1 è il genitore del Nodo 2 e il Nodo 2 è il genitore del Nodo 3. Nella tabella del database, il progetto iniziale sta monitorando questi dati in un elenco collegato. Tuttavia, sto trovando questo estremamente inefficiente perché ogni volta che voglio tracciare il lignaggio di dire Nodo 1, dovrei recuperare il Nodo 2, quindi con il Nodo 2, vorrei recuperare il Nodo 3. Dato che mostrerei il lignaggio del Nodo 1 per l'utente, dovrei fare 3 chiamate separate al database per visualizzare queste informazioni.
Mi piacerebbe anche tornare indietro, ma per semplicità ho lasciato questa parte.
Alternative
Alcune alternative che ho considerato, ma non posso andare in questo momento sono Neo4j e altre soluzioni come questo. Purtroppo, in questo momento, devo rimanere in Postgresql.
Domanda
Esiste uno schema di progettazione tale da poter recuperare tutte queste informazioni contemporaneamente? Se c'è, come implementeresti con l'esempio sopra?
UPDATE
Con il commento di @ MichaelT e la ricerca di Common Table Expressions, sono stato indirizzato a questo link, che sembra fornire maggiori informazioni al riguardo: link