Estoy construyendo una plataforma de gestión de proyectos en público y tengo una duda de diseño de base de datos que me está dando vueltas. El modelo tiene usuarios, proyectos y tareas. Una tarea pertenece a un proyecto y tiene un usuario asignado.
En mi tabla tasks, además del project_id y assigned_user_id, estoy tentado a agregar también el project_owner_id (el ID del dueño del proyecto). Esto es claramente redundante, porque puedo obtenerlo uniendo con la tabla projects. Pero en los dashboards, necesito filtrar y agrupar tareas por dueño del proyecto CONSTANTEMENTE.
Mi pregunta es: En casos de alto tráfico de lecturas, ¿vale la pena romper un poco la 3NF (Tercera Forma Normal) para tener esos datos 'cacheados' en la misma tabla y evitar un JOIN? ¿O es una mala práctica que me va a traer problemas de consistencia más adelante? ¿Cómo lo manejan ustedes en sus proyectos?