Debo usar claves primarias compuestas o no?

Parece que solo hay soporte de segunda clase para claves de base de datos compuestas en JPA de Java (a través de anotaciones EmbeddedId o IdClass). Y cuando leo sobre teclas compuestas, independientemente del idioma, la gente sigue apareciendo como algo malo. Pero no puedo entender por qué. ¿Las claves compuestas siguen siendo aceptables para usar en estos días? ¿Si no, porque no

He encontrado una persona que está de acuerdo conmigo:http: //weblogs.sqlteam.com/jeffs/archive/2007/08/23/composite_primary_keys.asp

Pero otro que no:http: //weblogs.java.net/blog/bleonard/archive/2006/11/using_composite.htm

¿Soy solo yo, o las personas no pueden distinguir dónde es apropiada o no una clave compuesta? Veo las claves primarias compuestas útiles cuando la tabla no representa una entidad, es decir, cuando representa una tabla de unión.

Un ejemplo simple:

Actor { Id, Name, Email } Movie { Id, Name, Year } Character { Id, Name } Role { Actor, Movie, Character }

Aquí, el actor, la película y el personaje obviamente se benefician de tener una columna de identificación como clave principal.

But Role es una tabla de unión de muchos a muchos. No veo ningún punto en crear una identificación solo para identificar una fila en la base de datos. Para mí parece obvio que la clave principal es{ Actor, Movie, Character }. También parece una característica bastante limitante, especialmente si los datos en la tabla de unión cambian todo el tiempo, podría encontrarse con colisiones de teclas primarias una vez que la secuencia de teclas primarias se ajusta a 0.

Entonces, volviendo a la pregunta original, ¿sigue siendo una práctica aceptable usar claves primarias compuestas? ¿Si no, porque no

Respuestas a la pregunta(20)

Su respuesta a la pregunta