Creo que la tabla es buena idea, pues los dias festivos son muy arbitrarios y cambian de región a región. Para contar los días laborables entre dos fechas Inicio y Final puedes
1. Contar los días entre esas dos fechas (función DaysBetween)
2. Descontar los fines de semanas (la función WeeksBetween cuenta las semanas entre dos fechas, que debe ser más o menos lo mismo que el número de fines de semana)
3. Descontar los días feriados
Para el último paso podrías hacer un select de tu tabla de dís festivos:
Código SQL
[-]
select count(*) from festivos where fecha between :inicio and :final
y descontar el número que te devuelva. Aunque quiza también hay que considerar que undía festivo puede caer en fin de semana y no puedes descontarlo dos veces. Según el motor de datos que uses podrías filtrar la consulta anterior. POr ejemplo, en MySQL puedes hacer eso:
Código SQL
[-]
select count(*) from festivos where fecha between :inicio and :final and dayofweek(fecha) between 2 and 6
// Saludos