VincMc ha scritto:
Tieni presente che per ogni corso di solito c'è associato un solo operaio. E' come se avessero tante patenti specializzate che hanno, ovviamente, conseguito in tempi diversi.
Esattamente, ma non è che ogni operaio ha tutte le patenti. Quindi nella tabella avrai tanti record quante saranno tutte le patenti di tutti gli operai. Anche perché potresti avere il caso (improbabile lo ammetto ma pur sempre possibile) che un operaio "salti" un aggiornamento per poi fare il successivo. Con la tua struttura non lo gestisci... E se una patente diventa obsoleta? Avrai dei campi che resteranno sempre inutilizzati. O se saltano fuori nuove patenti? Dovrai modificare la struttura della tabella, invece che aggiungere solo un record nella tabella delle patenti.
VincMc ha scritto:
non mi è chiaro poi come gestire la questione delle due scadenze
Credo dovresti gestirle come due corsi diversi, perché in effetti quello sono. Nella tabella dei corsi, ogni record descriverà il corso sia per il nome che per la validità, quindi avrai due record: uno per "RLS", con validità tre anni e uno con "RINNOVO RLS" con validità un anno.
Avendo fissato queste informazioni, penserei ad inserire i record nella tabella OperaiCorsi: inserisci Sgrubak che ha fatto il corso RLS oggi e Pippo che ha fatto il rinnovo tredici mesi fa. Per sapere i corsi scaduti, basta fare una select che prelevi tutti gli operai che hanno (oggi - DataConseguimentoCorso) > validità.
Poi si può variare ancora la struttura per rendere il tutto ancora più scalabile e mirato, ma dipende cosa vuoi realmente ottenere. Magari anche una struttura così semplificata ti è sufficiente per gestire la situazione.