Ciao a tutti,
avrei una domanda da fare circa il processo di normalizzazione.
Ho un DB che presenta tra le altre cose una tabella apposita per i PROGRAMMI dei CORSI di un'associazione.
Questa tabella è composta da:
-PROGRAMMI-
ID programma
ID Livello (chiave esterna presa dalla tabella dei Livelli dei vari corsi)
Oraro di inizio
Orario di fine
es:
"Corso di Inglese"
"Programma1":
-Livello Base
-dalle 17.00 alle 18.00
-martedì e giovedì.
Quello che vorrei sapere è relativo ai GIORNI ovvero, un programma si può tenere in 1 o più giorni alla settimana per tutto l'anno così come, ovviamente, i vari giorni saranno associati a diversi programmi.
Quella che si viene a creare è quindi una relazione MOLTI a MOLTI M:N (tra programmi e giorni) ma la domanda è:
Come si gestiscono le relazioni M:N per quegli intervalli di valori FINITI e comuni come appunto i giorni della settimana o i mesi dell'anno ecc.
io ho creato 3 tabelle
PROGRAMMI (vedi sopra)
PROGRAMMI_GIORNI (ID programma, ID giorno)
GIORNI (ID giorno, nome_del_giorno).
ma avrei forse potuto anche fare:
PROGRAMMI (vedi sopra)
PROGRAMMI_GIORNI (ID programma, nome_del_giorno)
avrei una ridondanza nei nomi dei giorni es:
1 - lunedì
1 - giovedì
2 - martedì
3 - lunedì
3 - martedì
...
ma una tabella in meno!
oppure:
PROGRAMMI (ID programma,ora inizio,ora fine,livelloID,lunedì,martedì,mercoledì ....)
con 7 campi da "spuntare" a seconda dei giorni interessati dal programma.
In definitiva:
In un caso "normale" laddove la seconda tabella può aumentare i propri valori il modo più corretto è quello di avere i valori in una tabella a parte e risolvere M:N con una tabella di collegamento ma in questo caso che sò per certo che i valori non cambiano come si procede nel modo più corretto con l'opera di normalizzazione?
GIORNI può essere definito a tutti gli effetti un "SOGGETTO" della base dati e quindi meritare una tabella a se?!
Spero di essere stato sufficientemente chiaro e vi ringrazio anticipatamente per le risposte.
![]()