En mi experiencia, generalmente debe almacenar los datos como UTC, con la zona horaria relevante en una columna separada. Tener una tabla para las zonas horarias y almacenar la clave de la zona horaria es lo más razonable que se puede hacer con una base de datos relacional.
Sin embargo, en este caso, todos sus datos ya están en una hora local, por lo que en este caso puede almacenar la hora local en la columna de hora y agregar una columna para la zona horaria. De esa manera, no tiene que convertir las fechas que ya están en la base de datos.
No es necesario almacenar la compensación, a menos que termines notando que la conversión de fecha y zona a compensación lleva demasiado tiempo.