Il consiglio di mettere tutto in una tabella è giusto, inutile avere tutti quei dati replicati.
Per esempio la tabella potrebbe avere i campi:
id, un int unsigend auto_increment
dipendente, sarà un id se hai la tabella dipendenti e spero di si
data, conterrà la data in cui si è premuto il pulsante e presumibilmente sarà la data corrente nel formato YYYY-MM-DD
orario_inizio (hh:mm:ss formato 24h)
orario_fine (hh:mm:ss formato 24h)
Alla pressione del pulsante:
- verifichi con una select se esiste un record che abbia la coppia dipendente-data
--- se non c'è vuol dire chè è la prima volta che si preme il pulsante e si è ad inizio turno, quindi con un'insert inserisci una entry contenente dipendente, data, orario_inizio
--- se c'è leggi i dati che ha recuperato
------ se il campo orario_fine è compilato vuol dire che il pulsante per il fine turno era già stato premuto e non fai niente
------ se il campo orario_fine è vuoto vuol dire che si è a fine turno e fai una update sulla riga aggiornando orario_fine
Probabilmente pui risparmiarti il campo id, come chiave primaria dovrebbe funzionare anche la coppia dipendente-data che dovrebbe sempre essere univoca
Questo sistema non tiene conto di turni a cavallo di due date, turni notturni per intenderci, ma basta cambiare un po' la logica, l'idea resta questa.