Newsgroup: it.comp.software.database
Titolo: progetto database (lunghetto)

Ciao a tutti,
vorrei realizzare un database relazionale per indicizzare degli articoli di
riviste specialistiche, ma, dal basso del mio unico esame di basi di dati
(sostenuto peraltro diversi anni fa), ho alcuni dubbi che vorrei risolvere
grazie al cortese aiuto di qualche anima pia fra di voi.
Il tipo di query da risolvere č sostanzialmente: trovare tutti gli articoli
scritti da Caio, tutti quelli che parlano dell'argomento x, quelli
pubblicati sulla rivista y e via combinando.
I dati di interesse sono:
l'autore (cognome e nome)
l'articolo (titolo e breve descrizione)
la pubblicazione (rivista, numero, anno)
Il diagramma ER che ho realizzato prevede:
E: autore(codice_autore (PK), cognome, nome)
   |
(1,n)
   |
R:pubblica(rivista,numero, anno)
   |
(1,n)
   |
E:articolo(codice_articolo(PK),titolo,descrizione)
Secondo cio' che mi ricordo la traduzione in tabelle dovrebbe prevedere le
tabelle:
autore (codice_autore(PK), cognome, nome)
articolo (codice_articolo(PK), titolo, descrizione)
pubblica (codice_autore, codice_articolo (MP), rivista, numero, anno)
con
PK=primary key,
MP= multiple key
Che ve ne pare?
Una prima prova di implementazione su mysql funziona
(ex.
select autore.cognome, autore.nome,
articolo.titolo, articolo.descrizione,
pubblica.rivista, pubblica.numero, pubblica.anno
from autore, articolo, pubblica
where autore.cod_autore=pubblica.cod_autore
and articolo.cod_articolo=pubblica.cod_articolo
and titolo like'____'
da' risultati corretti),
pero':
- e' bene usare un codice numerico per l'autore ? se lo uso rischio di
inserire due  volte lo stesso autore, se uso solo il cognome come pk cosa
faccio se incontro due autori con cognome uguale ma nome diverso ?
dovrei usare cognome-nome come chiave multipla ? questo pero' non mi
incasinerebbe la tabella pubblica?
- che tipo di variabile dovrei usare per codice_autore e codice_articolo? un
INT AUTO_INCREMENT ?
e per l'anno di pubblicazione ? meglio un int o un char ?
Grazie a quelli che avranno avuto la pazienza di leggere fino a qui ed un
grazie doppio a chi vorra' darmi una mano.
Ciao
Alessandro

 Che ve ne pare?
personalmente scinderei pubblica aggiungendo la tabella riviste (o se non
cogliamo far confusione coi nomi chiamiamola fascicoli) cioè:
fascicolo(codice_fascicolo(PK),testata_rivista,numero,anno)
pubblica(codice_autore,codice_articolo(MP),codice_fascicolo)
cordialità,
Ale

Ti ringrazio per la dritta; terro' in considerazione il tuo suggerimento.
Ciao
Alessandro


 pubblicati sulla rivista y e via combinando.
Io vorrei fare praticamente la stessa cosa... forse con qualche
funzionalità in più ma non ho moltissimo tempo.
Se vuoi possiamo farlo insieme: sarà più divertente e occuperà meno
tempo... e verrà fatta meglio.
Personalmente conosco benissimo le basi di dati (e relativo SQL) oltre che
ai vari linguaggi che si possono utilizzare (anche se di solito tendo a
fare tutto su web (PHP o perl) per comodità d'uso).
Di solito uso Mysql o Firebird (gratuiti).
sistema operativo preferito: linux ma se facciamo la cosa in php, perl o
java non ci sono problemi!
Per contattarmi: 
mari...@libero.it
fammi sapere.
Mario.