Hola.
Buena pregunta la tuya.
Lo cierto es que las dos opciones que proponen en tu equipo son correctas.
Dependiendo del SGBD te recomendaría una u otra.
Yo suelo trabajar con Oracle y me decanto siempre por la primera opción.
Crear una clave primaria numérica y pensar en la clave compuesta simplemente como una clave alternativa.
Así se gana tiempo a la hora de realizar consultas que crucen esta tabla, especialmente si esa tabla contiene muchos registros (filas).
Piensa que la integridad referencial está asegurada, ya que esa tabla contendrá una clave primaria única, que podrá ser referenciada con claves foráneas (de una manera mucho más sencilla), y cumple las Formas Normales del esquema Relacional.
Para tranquilizar a los partidarios de la clave compuesta deberías asegurar que no se introduce ningún duplicado de la clave alternativa. Esto lo puedes hacer (dependiendo del SGBD) utilizando clausulas como CHECK y en caso de
Oracle existe la restricción UNIQUE que especifica una regla que obliga a un grupo de uno o más campos de una tabla a contener valores únicos.
Tal vez otra solución sería crear un índice único múltiple para los campos de la clave alternativa (la compuesta). Ahunque nunca lo he utilizado para eso.
Espero haber ayudado.
Un saludo.