Recientemente he adoptado un proyecto con un modelo Employee
que debe contener las horas disponibles de la persona como un atributo.Representación de períodos de tiempo en la IU y la base de datos
El formulario existente usa 168 casillas de verificación para representar cada hora de la semana y almacena la información como siete cadenas binarias de 24 bits en la base de datos, cada bit actúa como booleano verdadero o falso para su hora correspondiente de ese día.
Realmente me gustaría hacer la transición a algo un poco más elegante y manejable, pero no he podido encontrar soluciones simples que coincidan con la flexibilidad de la implementación existente.
Almacenar periodos de tiempo como inicio y finalización puede ser tan tedioso como la entrada cuando puede haber múltiples por día, y probablemente haría que consultar la disponibilidad en un momento particular sea más complicado.
¿Existe una mejor práctica para manejar este tipo de información, tanto en la interfaz de usuario como en la estructura de la base de datos?
PostgreSQL admite nativamente los intervalos de tiempo como un tipo de datos. – Pointy
Eso definitivamente es bueno saberlo, pero no estoy seguro de que realmente resuelva el problema. Si no me equivoco, esos intervalos no están vinculados a una hora de inicio o finalización específica, por lo que tendrían que usarse como parte de una estructura de datos más compleja para representar toda la información requerida. Creo que lo que realmente estoy buscando es una manera limpia y manejable de ingresar, almacenar y consultar 168 booleanos. O una mejor forma de representar cada hora de la semana. – Luke
Bueno, podría emparejar un campo de intervalo con un campo de fecha, de modo que el campo de fecha daría la hora de inicio y el intervalo de la duración. No sé si eso sería mejor o peor que solo dos campos de fecha; dependería de la semántica y las consultas que te gustaría ejecutar. – Pointy