Tipos de datos para guardar una hora en sql
Veamos
Si todos tus registros de ENTRADA-SALIDA, serán solamente por aquellos PRACTICANTES registrados, yo quitaría aquellos que les antepongo un asterisco
Id int primary key not null, (esta NO puede ser PK, ya que no podrías registras mas de una entrada por practicante)
idRegistro int primary key identity
* Nombre varchar (50) not null,
* Agencia varchar (20) not null,
* Area varchar (25) not null,
* Puesto varchar (20) not null,
* Turno varchar (15) not null,
* Horas_Trabajador time (7) not null,
Hora_Entrada smalldatetime not null,
Hora_Salida smalldatetime not null,
Hora_Entrada_Comida smalldatetime not null,
Hora_Salida_Comida smalldatetime not null,
* Horas_Extra smalldatetime not null,
Creo que los campos con (*), no pertenecen a la tabla donde guardaras las entradas y salidas.
Ahora bien, por otro lado, creo que debería haber solamente una IDRegistro, que es el identificador del registro y el ID de practicante, pero como FOREING KEY.
Yo guardaría solo la fecha-hora, como registro, ya sabemos que la primera, es ENTRADA, la siguiente es SALIDA, la siguiente ENTRADA y la ultima SALIDA.
¿Quieres saber cuanto trabajo?
Fácil, tomas la primera y la ultima y obtienes mediante un DATEDIFF las horas.
¿Qué tiene muchos registros intermedios?
Entonces es un PRACTICATE digno de investigación, ya que sale y entra en MUCHAS OCASIONES.
------------ Hasta aquí, ¿todo bien?