Durante la ricreazione del mio CMS, volevo un'alternativa all'approccio padre/figlio tradizionale per la gestione della gerarchia sitemap/pagina. Mi ero ricordato di aver visto il modello del set annidato qualche tempo fa, ma non riuscivo a ricordare come veniva chiamato. Quindi, mi sono imbattuto in un approccio simile che voglio valutare e confrontare le proprietà, assicurandomi di non incorrere in limitazioni stupide in seguito perché non sono andato con quello che è già testato nel tempo. Quindi, si prega di avvisare se A) è già stato inventato (come si chiama ?!), B) ci sono difetti fondamentali nelle proprietà, o C) è un buon approccio (si prega di dare una buona giustificazione!).Il mio alernativo a insiemi nidificati per insiemi di dati gerarchici a profondità arbitraria: buono o cattivo?
Considerate questo elenco:
- casa
- Chi siamo
- Contattaci
- Prodotti
- abbigliamento
- Libri
- Elettronica
- Knowledge Base
- Altre cose
Nel modello set nidificato, credo si memorizzano i/descrittori Destra Sinistra per ogni nodo con una profondità prima attraversamento:
Home 1-18
About Us 2-3
Contact Us 4-5
Products 6-13
Clothing 7-8
Books 9-10
Electronics 11-12
Knowledge Base 14-15
Other stuff 16-17
Ed ecco il mio "modo sbagliato" che sto iniziando a mi piace di più:
Home 1-9
About Us 2-2
Contact Us 3-3
Products 4-7
Clothing 5-5
Books 6-6
Electronics 7-7
Knowledge Base 8-8
Other stuff 9-9
Piuttosto che una coppia sinistra/destra, sto memorizzando ID e LAST_CONTAINED_ID. Ho trovato che molte delle proprietà sono gli stessi (o molto simile):
- Il nodo radice è ID = 1
- Per "foglie", entrambe le proprietà sono uguali, mentre con rami, non sono
- il numero totale di "sotto-nodi" per ogni nodo è LAST_CONTAINED_ID - ID
- Tutti contenute nodi hanno un ID> ID del contenitore, ma < = del contenitore LAST_CONTAINED_ID
- I nodi antenati hanno un ID < il bambino ID , ma anche un LAST_CONTAINED_ID> = l'ID figlio
- La profondità è la somma dei antenato nodi
Inoltre, l'ID serve una, identificatore univoco specifico per ordine (senza spazi!). Ho trovato più semplice anche memorizzare i riferimenti DEPTH e PARENT per semplicità, ma questo è praticamente lo stesso per i set nidificati anche da quello che ho capito.
Quindi, questo conta come un insieme annidato? Ed è già un approccio comune (ma perché non ne avevo sentito parlare prima ...)? C'è una buona ragione per cui dovrei usare un vero set annidato su questo?
Apprezzo i tuoi pensieri.
FYI, il modello di serie nidificato è un modo di avere una singola tabella in un archivio RDBMS tutte le informazioni necessarie per una gerarchia di una profondità sconosciuta (cioè una lista infinita senza ricorsione): http://en.wikipedia.org/wiki/Nested_set_model#Example – landons