Una Composite Key, también conocida como clave compuesta, es un conjunto de dos o más columnas en una tabla de base de datos relacional que, cuando se combinan, garantizan la unicidad de cada fila. A diferencia de una clave primaria simple que utiliza una sola columna, la unicidad de una Composite Key no se puede lograr con ninguna de sus columnas individualmente, sino solo con la combinación de todas ellas. Esto es fundamental para modelar relaciones donde la identidad de una entidad depende de múltiples factores.
Las Composite Keys son ampliamente utilizadas en sistemas de bases de datos relacionales como PostgreSQL, MySQL, Oracle SQL y SQL Server. Por ejemplo, en una tabla de 'inscripciones' para cursos, la clave primaria podría ser una Composite Key formada por 'student_id' y 'course_id', ya que un estudiante puede inscribirse en múltiples cursos y un curso puede tener múltiples estudiantes, pero una combinación específica de estudiante y curso solo puede ocurrir una vez. Otro ejemplo común es en tablas de unión (join tables) o tablas de muchos a muchos, donde las claves foráneas de las tablas participantes se combinan para formar la clave primaria de la tabla de unión.
Para un arquitecto, la elección de usar una Composite Key implica consideraciones importantes. Ofrecen una representación más natural y semánticamente rica de las relaciones de datos, eliminando la necesidad de claves sustitutas artificiales en ciertos contextos. Sin embargo, pueden aumentar la complejidad de las consultas (especialmente en joins), el tamaño de los índices y el rendimiento de las operaciones de búsqueda y actualización, ya que se deben comparar múltiples columnas. La decisión debe sopesar la integridad referencial y la expresividad del modelo de datos frente a la eficiencia de las operaciones de base de datos y la simplicidad del desarrollo de aplicaciones. En sistemas distribuidos o NoSQL, aunque el concepto de clave primaria puede variar, la idea de usar múltiples atributos para identificar unívocamente un registro persiste, a menudo implementado a través de claves de partición compuestas o índices secundarios compuestos.