|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Messaggi: n/a
|
Progetto Database
Ciao a tutti,
in questi giorni, con molta umiltà, stavo cercando di implementare la struttura di un Database per un sito che amministro da un pò di tempo che per ora è totalmente statico. Il sito è www.lalocomotivaweb.it quello che volevo fare era creare un DB che archiviasse le numerose informazioni sui corsi principalmente. Pur non essendo certo difficile ho notato che dai dati presenti si venivano a creare moltre relazioni M:N (molti a molti) Ora ho "risolto" in questo modo (nel file allegato). Volevo sapere, alla luce di quello che potete vedere da sito, se il DB regge oppure ci sono errori macroscopici o mancanze. Allego anche uno screenshot. Grazie a tutti coloro che vorranno darmi un aiuto o suggerimento. Scusate ma è il mio primo progetto. Cerco di spiegare un pò le tabelle Corso: identificazione generica dei vari programmi, es: Corso di inglese di 1° livello (base) Corso di inglese di 2° livello (medio) ecc. CORSI: Nella quasi totalità dei casi hanno informazioni generiche quale il costo, la durata in mesi, il metodo di insegnamento utilizzato, il luogo di svolgimento (ovvero le aule e non le palestre ad esempio.) e sono comuni per tutti i livelli. LIVELLI: Ovvero una delle varie parti del Corso (se inteso come categoria) In inglese potrebbe essere inteso in base al livello di insegnamento mentre in informatica in base al software studiato, in ginnastica se per adulti o per ragazzi ecc. PROGRAMMA: è la mega tabella di collegamento che ho creato per identificare in modo univoco le relazioni: un programma può essere ProgrammaID Corso: INGLESE Livello: Livello 1 Giorno: martedì Orario da: 18.00 Orario a: 20.00 Luogo: Aule corsi Ciclo: dal 07/10/2006 al 04/02/2007 il ciclo è importante per esempio perchè uno stesso identico corso potrebbe essere fatto più avanti ma sempre nello stesso posto allo stesso giorno con gli stessi orari ecc. in questo modo ho un record PROGRAMMAID "univoco". CICLI: Una sorta di periodo di svolgimento, lo hanno solo alcuni corsi, ed immaginatelo come i trimestri i scuola. Dal DATA al DATA LIVELLI_INFORMATICA Lo impostata solo come sotto-tabella dei corsi di informatica che in base al livello studiato cambiano in durata e costi in quanto non esiste un valore univoco di costo e durata come per gli altri corsi questo per evitare di aver nella tabella LIVELLI dei campi quasi sempre vuoti come "numero lezioni", "numero ore", "costo" associate solo ai corsi di informatica. Ultima modifica di anonimizzato : 25-07-2007 alle 20:51. |
|
|
|
#2 |
|
Messaggi: n/a
|
uppettino
|
|
|
|
#3 |
|
Member
Iscritto dal: Nov 2000
Città: Treviso
Messaggi: 158
|
Mi potresti spiegare meglio che tipo di informazioni ti servono?
Il tuo schema secondo me si può semplificare ma vorrei capire cosa ti serve e cosa no... |
|
|
|
|
|
#4 |
|
Messaggi: n/a
|
Ciao,
quello che mi serve è mostrare sulle pagine del sito tutti i vari programmi disponibili per i corsi presentati sul sito www.lalocomotivaweb.it Ogni Corso come vedi ha dei dati comuni quali: LUOGO, COSTO, DURATA, METODO, ecc. (anche se non sempre) e poi una differenziazione per i LIVELLI (se ve ne sono, altrimenti si intende come UNICO) circa: GIORNI, ORARI, CICLO (periodo da/a) ecc. quello che vorrei fare è avere meno dati ridondati possibili ed una struttura efficiente senza impazzire nel mare di relazione 1:N M:N che presenterebbe. Quello che non mi serve è qualcosa a livello di UTENTE in quanto non esiste interazione, tipo iscirizioni online ecc. è solo una vetrina dei Corsi proposti. Ho aperto un thread qua dove un utente mi dice che il DB non è male, ma credo anch'io si possa fare qualcosa per migliorarlo. Grazie per la risposta. Ultima modifica di anonimizzato : 16-09-2006 alle 10:47. |
|
|
|
#5 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Mi sembra che vada bene...duplicazioni non ne vedo...
Fammi capire la relazioni luogo-programma... Io metterei una relazione luogo-corso...ma bisogna vedere se è corretta... Lo stesso corso si può svolgere in più luoghi ? In questo momento stai esprimendo che lo stesso programma si può svolgere in più luoghi... |
|
|
|
|
|
#6 | |
|
Messaggi: n/a
|
Quote:
guarda il corso di ginnastica ad esempio:http://www.lalocomotivaweb.it/corsi-di-ginnastica.htm Lo stesso corso può svolgersi in diverse palestre quindi mi sembrava giusto metterlo a livello di PROGRAMMA come si vede. Quello che hanno in comune e che è condiviso a livello di CORSI è la durata, la frequenza settimanale, il costo, l'insegnate ecc. GINNASTICA DOLCE e GINNASTICA DI MANTENIMENTO, che hanno quote, diverse, li tratti a tutti gli effetti come corsi diversi ... anche perchè lo sono pur essendo sempre "ginnastica". |
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Però allora non capisco la distinzione fra Programma e Corso...
Prendendo come esempio quella pagina sai dirmi come verrebbero composte le tabelle Programma e Corso ? |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
ok ok ci sono arrivato...va bene... Io eliminerei la relazione Ciclo... Sei sicuro che siano preventivabili cicli successivi a quello corrente ?
|
|
|
|
|
|
#9 | |
|
Messaggi: n/a
|
Quote:
Cmq vedo che l'avevi notato |
|
|
|
|
#10 | |
|
Messaggi: n/a
|
Quote:
Ci sono ad esempio 4 cicli 1° Ciclo 02 Ottobre 2006 2° Ciclo 27 Novembre 2006 3° Ciclo 05 Febbraio 2007 4° Ciclo 02 Aprile 2007 In questo caso non è specificata la data di fine per ogni ciclo quindi pensavo di fare in modo da renderla facoltativa nell'interfaccia (PHP) |
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ho capito anche ciclo...ok...va bene, ma non mi torno una cosa...
Posto così com'è in luoghi diversi non potresti realizzare cicli diversi...ti torna ? Secondo me cicli dovrebbe avere come FK programma_id e dovrebbe essere una relazione tutta chiave... L'ciclo_id in questo caso è una informazione non necessaria... |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Anche livelli secondo me ha qualche problema... Tutti i livelli del corso costano uguale ?
|
|
|
|
|
|
#13 | |
|
Messaggi: n/a
|
Quote:
|
|
|
|
|
#14 | |
|
Messaggi: n/a
|
Quote:
quindi ho due campi "quota di partecipazione" sia in CORSI che LIVELLI_INFORMATICA. Dici che debba spostare questo campo in PROGRAMMI? Il fatto è che non avviene quasi mai questa differenziazione a livello di PROGRAMMA. |
|
|
|
|
#15 | |
|
Messaggi: n/a
|
Quote:
intendi una tabella CICLI tipo: PogrammaID data_da data_a dove programmaID è PK e FK contemporaneamente. quindi a tutti gli effetti una tabella sottoinsieme di PROGRAMMI che mette le informazioni del periodo solo per quei programmi che hanno cilci diversi giusto? |
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Per ogni luogo in cui il corso si svolge c'è una tupla nella relazione programmi, ok ?
In questa tupla di programmi quindi ci sono orari e giorni diversi per ogni luogo, ma non puoi avere cicli in date diverse !!! Senza contare che hai gli stessi cicli per ogni livello del corso... |
|
|
|
|
|
#17 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
Select * from Cicli where programma_id = XXXX; ti ritorna tutti i cicli di un dato programma... |
|
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ricapitolando i farei qualche modifica...a meno di non scriversi tutto a penna e portarla in una forma normale, io farei così:
Categorie(id_categoria (PK), nome, descrizione) Corsi(id_corso (PK), id_categoria (PK), nome, descrizione) Livelli(id_livello (PK), id_corso (FK), costi, rate, allievi, insegnanti e così via) Luoghi(id_luogo (PK), ...così com'è ora) Programmi(id_programma (PK), id_livello (FK), id_luogo (FK), orari vari) Cicli(id_programma, da, a) tutta chiave |
|
|
|
|
|
#19 | |
|
Messaggi: n/a
|
Quote:
|
|
|
|
|
#20 | ||||
|
Messaggi: n/a
|
Quote:
Quote:
Quote:
Quote:
Non vedo il problema |
||||
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:33.


















