willy55 ha scritto:
Non mi trovo d'accordo nell'inserire un dato ridondante che può essere estrapolato dai dati presistenti con una query di selezione, e ciò non solo per i limiti stabiliti delle tre forme normali ma perchè la duplicazioni delle informazioni può comportare disallinamenti e necessità di ulteriori elementi di controllo con tempi più lenti nelle operazioni.
Giusta osservazione, ma, tralasciando il fatto che la struttura non sembra essere tutta, nemmeno in 2 regola formale, non si tratta di un campo fine a se stesso, ma che rende univoco lo stato dello studente. Promosso o bocciato. Cosa che ora non lo è. Inoltre snellisce anche le ricerche, perché con un unica query andrebbe a controllare solo il valore del campo promosso e bocciato, senza eseguire come minimo 4 query ed un filtro (deduco a naso). Cosa da ripetersi ogni volta che abbia la necessità di usare il campo voto per altri tipi di ricerche.
Gia ora si trova in una situazione veramente a rischio di incoerenza, perché se per sapere se uno studente è promosso e bocciato deve fare tutti questi giri, qualcosa non va.
Se non ho capito male, ora immette il valore -1 nel campo voto, per indicare se lo studente è assente o non si è presentato.
Se cosi fosse, è proprio un uso snaturato del campo voto e sopratutto crea dati imcoerenti che dovranno essere ulteriormente filtrati. Il campo voto non può essere un campo di controllo, ma un valore legato solo ad uni stato di anagrafica dello studente.
In più, lui ha dei campi check box che potrebbero essere eliminati se avesse un campo di stato dello studente, con i valori ad esempio, bicciato, promosso trasferito, assente , svenuto durante l esame
Quindi in realtà con un campo di stato, andrebbe ad eliminare campi superflui.
Senza considerare che se un domani il ministero dovesse cambiare il sistema di voto ed invece che in 30esimi, esprimerlo in 100 centesimi (possibilità molto plausibile), praticamente risulterebbero tutti bocciati e in quel caso non basterebbero query di selezione o modificare i valori minimi e massimi in tutte le query, ma bisognerebbe modificare tutti i voti, oppure aggiungere nuove query che filtrino i vecchi risultati con quelli nuovi in aggiunta a quelle che ha deve creare ora. Se poi dovessero sostituire il numerico con le lettere praticamente sarebbe più semplice castrarsi con un paio di mattoni.
Avere decine di query solo per sapere se uno studente è bocciato. Per me, come disse quello che si appicco per i piedi, non è il verso giusto.
Comunque per il mio modo di ragionare, usare voto che non è univoco, per determinare lo stato di uno studente è come spegnere ed accendere tutte le luci di un palazzo o di un singolo appartamento, avvitando e svitando tutte le lampadine invece che usare degli interrutori.