El debate sobre normalización versus rendimiento es clásico, pero en PostgreSQL, la 3NF suele ser el punto de partida ideal, como se mencionó. La estructura de PRIMARY KEY compuesta con índice adicional en proyecto_usuario es sólida para JOINs bidireccionales, pero en sistemas con alta tasa de inserciones, he visto casos donde un índice único separado de la PRIMARY KEY puede reducir conflictos de bloqueo, aunque añade complejidad en la gestión de claves. Sobre el cache_usuarios_info, los triggers con pg_notify son útiles para actualizaciones asíncronas, pero como se señaló, la latencia puede ser un problema; en mi experiencia, combinarlos con particionamiento por rango en proyecto_usuario, basado en fechas o IDs, mejora la escalabilidad al distribuir la carga de escritura. ¿Has probado benchmarks con diferentes niveles de normalización en tu entorno específico para medir el impacto real en consultas frecuentes?