|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#21 |
|
Messaggi: n/a
|
Attenzione! NODO CRUCIALE che mi sono scordato di dire.
Se vedi nella tabella CORSI ho aggiunto dopo diversi campi un "campo_note" per gestire in modo discorsivo situazioni tipo nei corsi di inglese dove il costo è per tutti i livelli X ma per quelli del mattino il cost è Y. Alla luce di questo di caspisce come da alcune eccezioni si noti che il costo è ad altezza di LIVELLO e non CORSO (anche se di solito è così). Tuttavia dato che dal DB non devo fare delle query particolari ho pensato che valesse la pena violare questa regola di normalizzazione per avere meno ridondanza di dati. |
|
|
|
#22 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
costi_e_rate(id, informazioni sui costi e sulle rate) composizione_corsi(id, insegnante, alievi min, allievi max) e in livello inserisci il riferimento a costi_e_rate_id e composizione_corsi_id... |
|
|
|
|
|
|
#23 | ||
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
Corso di informatica, luogo B, 4 giorni alla settimana: cicli 10/9 - 20/10, 21/10 - 20/11, 21/11 - 31/12 Ovviamente non puoi avere gli stessi cicli !!! Il secondo corso dura meno... Quote:
Corso di informatica livello avanzato: cicli 10/9 - 29/10, 30/10 - 31/12 Una cosa così non la puoi avere ? |
||
|
|
|
|
|
#24 | |
|
Messaggi: n/a
|
Quote:
Tra le altre cose ho un problemino sul giorni nel senso che un programma potrebbe essere: INGLESE Livello 1 Frequenza sett. 2 ore Lunedì 18.00 - 20.00 ... oppure INGLESE Livello 1 Frequenza sett. 2 ore Lunedì - Giovedì 18.00 - 19.00 ... Ciò con la frequenza settimanale divisa in due lezioni alla settimana da un'ora. Per evitare un campo multivalore tipo lunedì-giovedì all'interno della tabella dovrei crearne una di collegamento dato che uno stesso programma si può svolgere in più giorni e ovviamente in uno stesso giorno (della settimana) si svolgono più CORSI e LIVELLI. |
|
|
|
|
#25 | ||
|
Messaggi: n/a
|
Quote:
La frequenza settimanale è a livello di CORSO quindi tutti i corsi di informatica o di inglese ecc. hanno tot ore a settimana percui i cicli (dei programmi) coincidono, è per questo che esistono (i CICLI) infatti per avere modo di avere dei programmi coerenti che iniziamo e finiscono più o meno insieme (poi dipende dal giorno della settimana). Quote:
Ultima modifica di anonimizzato : 16-09-2006 alle 13:55. |
||
|
|
|
#26 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ti conviene anche qui fare una ulteriore tabella Orari
Orari (id_programma, giorno, da, a) con PK (id_programma, giorno) |
|
|
|
|
|
#27 |
|
Messaggi: n/a
|
Umh di questo passo la struttura verrà parecchio diversa da quella "pensata"
Non è che sia un male è solo che non riesco a capire più se quello che avevo fatto all'inizio era totalmente sbagliato oppure era una strada differente con PRO e CONTRO come qualsiasi altra. |
|
|
|
#28 |
|
Messaggi: n/a
|
A meno di grosse anomalie alla fine credo che terrò questa struttura.
Codice:
CREATE TABLE categorie_corsi (
categoria_corso_id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
categoria_corso_nome VARCHAR(255) NOT NULL,
PRIMARY KEY(categoria_corso_id)
);
CREATE TABLE giorni (
giorno VARCHAR(255) NOT NULL,
PRIMARY KEY(giorno)
);
CREATE TABLE corsi (
corso_id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
categoria_corso_id INTEGER UNSIGNED NOT NULL,
corso_nome VARCHAR(255) NOT NULL,
corso_frequenza_settimanale INTEGER UNSIGNED NOT NULL,
corso_iscrizione INTEGER UNSIGNED NOT NULL,
corso_iscrizione_note VARCHAR(255) NOT NULL,
corso_quota_partecipazione INTEGER UNSIGNED NOT NULL,
corso_quota_partecipazione_note VARCHAR(255) NOT NULL,
corso_prima_rata INTEGER UNSIGNED NOT NULL,
corso_prima_rata_note VARCHAR(255) NOT NULL,
corso_seconda_rata INTEGER UNSIGNED NOT NULL,
corso_seconda_rata_note VARCHAR(255) NOT NULL,
corso_terza_rata INTEGER UNSIGNED NOT NULL,
corso_terza_rata_note VARCHAR(255) NOT NULL,
saldo_prima_lezione ENUM('0','1') NOT NULL,
corso_durata INTEGER UNSIGNED NOT NULL,
corso_allievi_min INTEGER UNSIGNED NOT NULL,
corso_allievi_max INTEGER UNSIGNED NOT NULL,
corso_eta_min INTEGER UNSIGNED NOT NULL,
corso_metodo VARCHAR(255) NOT NULL,
corso_insegnante VARCHAR(255) NOT NULL,
corso_testi INTEGER UNSIGNED NOT NULL,
corso_inizio DATE NOT NULL,
corso_fine DATE NOT NULL,
corso_descrizione MEDIUMTEXT NOT NULL,
corso_numero_lezioni INTEGER UNSIGNED NULL DEFAULT null,
corso_numero_ore INTEGER UNSIGNED NULL DEFAULT null,
corso_numero_settimane INTEGER UNSIGNED NULL DEFAULT null,
PRIMARY KEY(corso_id)
);
CREATE TABLE livelli (
livello_id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
corso_id INTEGER UNSIGNED NOT NULL,
livello_nome VARCHAR(255) NOT NULL,
livello_note VARCHAR(255) NOT NULL,
PRIMARY KEY(livello_id),
INDEX FK1(corso_id)
);
CREATE TABLE luoghi (
luogo_id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
luogo_nome VARCHAR(255) NOT NULL,
luogo_indirizzo VARCHAR(255) NOT NULL,
PRIMARY KEY(luogo_id)
);
CREATE TABLE programmi (
programma_id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
livello_id INTEGER UNSIGNED NOT NULL,
luogo_id INTEGER UNSIGNED NOT NULL,
orario_da TIME NOT NULL,
orario_a TIME NOT NULL,
PRIMARY KEY(programma_id),
INDEX FK1(luogo_id),
INDEX FK2(livello_id)
);
CREATE TABLE programmi_giorni (
programma_id INTEGER UNSIGNED NOT NULL,
giorno VARCHAR(255) NOT NULL,
PRIMARY KEY(programma_id,giorno)
);
CREATE TABLE cicli (
corso_id INTEGER UNSIGNED NOT NULL,
ciclo_da DATE NOT NULL,
ciclo_a DATE NOT NULL,
PRIMARY KEY(corso_id,ciclo_da,ciclo_a)
);
Ultima modifica di anonimizzato : 16-09-2006 alle 19:21. |
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:08.



















