Newsgroup: it.comp.software.database
Titolo: Struttura DB

Per uso personale avrei bisigno di catalogare in un DB dei documenti, ho 
molti dubbi pero' su' come fare la struttura del DB, al momento sono 
arrivato a questo stato 
http://mio.discoremoto.virgilio.it/opendocument/
           'Articoli_2
Dovrei adesso definire per ogni Documento degli argomenti in modo da 
ottenere
ArtcoloTitolo             ArgomPrim                ArgomSecond 
   Categoria
Sintassi in Java         Programmazione             Java 
      Informatica
Mi e' stato consigliato come si vede dallo schema  di portare gli 
Argomenti su' una sola tabella e di legare la tebella Articoli e 
Argomenti con una tabella intermedia in modo da ottenere una relazione 
Molti a Molti. Il consiglio che vi chiedo e' come devo strutturare la 
tabella Argomenti e perche' ho bisogno di una relazione molti a molti 
tra le due tabelle ?
Ringrazio in anticipo per qualsiasi consiglio.Ciao JAck

 due tabelle ?
Non possiamo dirlo senza sapere alcune specifiche concettuali; ad es.
non è neppure scontato che Argomenti debba avere una tabella a se stante.

 Il tuo schema vieta questo?
Si, quello che tento di ottenere e' che il primo argomento determini un 
largo gruppo di documenti
Informatica,InterniCasa,rivisteMensili, con il secondo argomento 
determini un sottogruppo del primo
Informatica-Programmazione
Informatica-Reti
con il terzo argomenti un qualcosa di piu' specifico
Informatica-Programmazione-VisualBasic
InterniCasa-Salotti-Divani
Capisco che la spiegazione e' un po' fumosa, spero che almeno si 
intuisca quello che serve.
Ciao Jack

 intuisca quello che serve.
Avresti una bella gerarchia di tabelle di categorie da realizzare.
Nella tabella Articoli, debbono comparire le tre colonne delle categorie
a cui si riferiscono (a questo punto ti consiglio di rinominare ArgPrim e
ArgSec in maniera differente dato che sono cose differenti).
Infine aggiungi i vincoli ref che impediscono le combinazioni scorrette
tra categorie.
Togliere tutti gli ID autoincrementanti: non sono chiavi, e intralciano
l'integrità referenziale.
Tutto questo per essere proprio 'a la page' con la Teoria :-)
Avrai inoltre il vantaggio di fare varie query senza essere obbligato ad
un join in più per recuperare le categorie.
Ora torniamo al tuo primo post. Il trick della tabella Argomenti permette
di "condensare" tre argomenti su un solo valore; bisogna capire come
useresti questo valore (ti serve nel mondo "reale"?); eventualmente si può
dare più importanza all'attributo id di questa tabella: innanzitutto
non usando un autoincrementante, ma piuttosto usando uno schema di
codifica, tipo xx-yy-zz (da discutere).
Inoltre neppure io capisco perché ti hanno detto di fare una relazione
molti a molti, dato che un articolo avrà sempre e solo una categoria, se
ho capito bene.
Ciao

 ho capito bene.
Si, l' articolo avrai sempre una sola Categoria, pero' potra' avere 
argomenti diversi.
Esempio se un articolo parla di Subclassing in Visual Basic la Categoria 
sara' una,
Informatica ma questo articolo al suo interno parlera' di 
SistemaOperativo di Funzioni A.P.I.
e di implementazione in Visual Basic. Quindi se faccio una ricerca di 
articoli che parlano di S.O.
questo dovra' comparire, se faccio una ricerca delle funzioni API dovra' 
comparire, se faccio
una ricerca  di articoli che parlano di VB dovra' comparire. Ciao Jack

 ho capito bene.
Si, l' articolo avrai sempre una sola Categoria, pero' potra' avere


 argomenti diversi.
In tal caso l'attributo va su una tabella a parte. Mi risulta dispendioso
fare uno schema con le specifiche che arrivano una alla volta.
Prova intanto ad implementare la gerarchia di tabelle delle categorie e
ragioniamoci su.