Creo que la mayoría de las personas que han desarrollado aplicaciones de bases de datos del mundo real de tamaño significativo le dirán que las claves sustitutas son la única solución realista.
Sé que la comunidad académica no estará de acuerdo, pero esa es la diferencia entre la pureza teórica y la practicidad. .
Cualquier consulta de tamaño razonable que tenga que hacer uniones entre tablas que usan claves no sustitutas donde algunas tablas tienen claves primarias compuestas rápidamente se vuelve inmantenible.