Sto lavorando sul modulo di rilevazione presenze e sono riuscito a leggere i dati dalla macchina di temporizzazione nel seguente formato:
Id CheckIn Type Status
0000142 5/15/2015 6:00 PM 2 OK
0000142 5/15/2015 2:00 PM 1 OK
0000142 5/15/2015 6:00 AM 1 OK
0000142 5/15/2015 3:00 PM 2 OK
dove scrivi [ 1 - stamped in , 2 - stamped out
]
Dovrei progettare una tabella per memorizzare queste voci tenendo in considerazione quanto segue
- Ogni dipendente deve prima inserire un pugno e poi dare un pugno
- Alcuni dipendenti hanno 2 turni al giorno: 09: 00-01: 00 e 17: 00-09: 00
- Alcuni dipendenti hanno un servizio notturno dalle 09:00 alle 09:00 (il servizio inizia ieri sera)
quello che sto pianificando e ho bisogno del tuo gentile consiglio è il seguente:
- Per creare tabella
EmployeeCheckIn
[Id,CheckIn,Type,Status
] - Per creare un'altra tabella
ManipulatedEmployeeCheckIn
[Id,FirstIn,FirstOut,SecondIn,SecondOut
] doveFirstIn
eFirstOut
è In e Out per il primo turno eSecondIn
eSecondOut
sono In e Out per il secondo turno.
le mie domande
- Sto rompere la normalizzazione aggiungendo la seconda tabella?
- La seconda tabella conterrà molti valori NULL, si tratta di una cattiva progettazione?
- Come eliminare le voci multiple, ad esempio, alcuni dipendenti eseguiranno l'accesso due volte e usciranno 3 volte, quindi come rimuovere la duplicazione nelle voci ma con tempistiche diverse?
- Ultima domanda che è l'incubo di me, gli orari che iniziano questa sera e terminano domani mattina, come controllarli dal momento che non posso controllarli tramite il DateIn CheckIn
Se hai bisogno di ulteriori spiegazioni, sono pronto. Di te in anticipo