Newsgroup: it.comp.software.database
Titolo: Categorie ...

Ciao a tutti, devo gestire un sistema di Categorie in cui posso avere un
numero arbitrario di sottocategorie, come posso fare ?
Io ho provato con una tabella che punta a se stessa, ma diventa ingestibile,
e soprattutto non riesco a fare una query che mi mostri tutte le categorie
con tutte le sottocategorie.
Utilizzo ASP con Access, ma non penso importi :-)
:-(
Come si fa ?
                Bruce

Bruce O'Canaan ha scritto:

Due tabelle??
Nella prima ci metti le categorie.
Nella seconda  le sottocategorie.
Anche se e' contrario alle principali regole della progettazione e solo 
perche' usi Access la soluzione potrebbe essere una forma del genere con
ID autoincrement.
Tab_Categorie:
ID_categoria
Descrizione
Tab_SottoCategorie
ID_categoria
ID_sottocategoria
Descrizione_sottocategoria
Alla prossima.
	MAX

 Descrizione_sottocategoria
Ma non mi risolve i problemi, ci avevo già pensato ...
Le sotto categorie possono avere un arbitrario numero di sottocategorie ... 
forse mi sono espresso male ...
Cioè ...
Categoria 1 --> sottocategoria 1 --> ... -->sottocategoria n
categoria 2 --> sottocategoria 2 --> ... -->sottocategoria k
...
E' questo il mio problema ... se eran solo categorie e sottocategorie di 
problemi non ce ne erano :-D
Ciao
        Bruce 

 con tutte le sottocategorie.
Si tratta di una struttura ad albero.
La soluzione che hai adottato e' corretta, pero' necessita di istruzioni 
ricorsive, introdotte nel linguaggio sql dalla versione 3.
Access non ti basta, se vuoi lavorare solo lato query.
In alternativa puoi gestire la struttura dal lato applicativo, creando 
una struttura (un nodo) che contenga le informazioni di quella 
(sotto)categoria e la chiave della categoria padre. Ognuno di questi 
nodi viene caricato separatamente (ciascuno esegue la query che lo 
carica, partendo dal nodo padre).
In rete puoi trovare parecchi esempi in vari linguaggi.
 > Utilizzo ASP con Access, ma non penso importi  :-)
Il "vecchio" ASP o .net?
Quasi tutti i database piu' diffusi (SQL Server, Oracle) utilizzano dei 
comandi che permettono la ricorsione.
Ciao,
Paolo

Mi sono riletto e non mi sono capito neanche io :-D
Il problema č che ogni categoria puň avere un numero arbitrario di Livelli 
di sottocategorie ...
Cioč ...
Cat1 --> SottoCategoria --> SottoSottoCategoria ... ecc.
Come faccio a gestire tutto ciň ?
Io avevo pensato ad una tabella che si punta del tipo
#ID
Padre
Nome
in cui padre contiene l'ID della categoria padre.
Cosě facendo perň
1) perdo l'integritŕ referenziale ...
2) se volessi fare una query che mi mostra a partire dai padri tutte le 
sottocategorie, sottosottocategorie ... non sono capace :-)
cioč ...
Cat 1 --> sott 1 -->sott 1.2 --> ... --> sott n
         --> sott 2 --> ... -->sott k
Cat 2 --> sott 1 --> sott 1.2 --> ... -->sott m
Spero di essermi spiegato meglio ...
Grazie mille a tutti ...
                Bruce

 Paolo 

 io uso ASP 2 (no .NET).
Da ASP chiami tue dll?
Se si', in questo modo potresti usare una classe che gestisca la 
struttura ad albero (VB ne ha già di predefinite).
Buon lavoro,
Paolo

 
Quello che non riesco a capire dall'esempio sopra e':
Ogni Cat una serie di SottoCategorie (fin qui OK)
Ogni SottoCategoria contiene una serie di SottoSottoCategorie (e fino a 
qui ok)
Ma poi mi perdo, nel senso:
Ogni SottoSottoCategoria puo' contenere altrei SottoSottoSottoCategorie
e via di questo passo??
Se si, la vedo dura da gestire.
Mentre se la cosa si ferma alla SottoSottoCategoria, risolvi con tre 
tabelle.
Cioa.
	MAX

 tabelle.
sono n non 3 ...
è per quello che usavo una tabella sola ...
Ciao
      Bruce

 categoria 2 --> sottocategoria 2 --> ... -->sottocategoria k
Io adotto un sistema simile per un mio programma. Ho una tabella categorie 
cosě strutturata:
IDCategoria
IDSuperiore
Nome
etc ...
IDSuperiore č settato a 0 se č una categoria, settato al numero IDCategoria 
se č la sottocategoria di Categoria. In tal modo riesco tramite script a 
ricostruire un albero di categorie e relative sottocategorie, 
indipendentemente da quante sono. 

Sembrerebbe un problema di "nested sets": forse puoi dare un'occhiata a 
http://www.mvps.org/access/queries/qry0023.htm
.
Anni fa l'avevo usato con Access per gestire le discussioni di un forum, se 
ben ricordo. In pratica si tratta di gestire un paio di campi in più sulla 
tabella, ma con Access che non ha i trigger (almeno non li aveva l'ultima 
volta che ho controllato) è un po' più complesso.
HTH.
Alessandro