Las claves primarias pueden ser simples, formadas por un solo campo o compuestas, más de un campo.
Retomemos el ejemplo de la playa de estacionamiento que almacena cada día los datos de los vehículos que ingresan en la tabla llamada "vehiculos" con los siguientes campos:
- tipo char (4),
- horasalida time,
Necesitamos definir una clave primaria para una tabla con los datos descriptos arriba. No podemos usar la patente porque un mismo auto puede ingresar más de una vez en el día a la playa; tampoco podemos usar la hora de entrada porque varios autos pueden ingresar a una misma hora. Tampoco sirven los otros campos.
Definimos una clave compuesta cuando ningún campo por si solo cumple con la condición para ser clave.
Usamos 2 campos como clave, la patente junto con la hora de llegada, así identificamos unívocamente cada registro.
create table vehiculos(
tipo char(4),
horasalida time,
);
Si vemos la estructura de la tabla con "describe" vemos que en la columna "key", en ambos campos aparece "PRI", porque ambos son clave primaria.
Es posible eliminar un campo que es parte de una clave primaria, la clave queda con los campos restantes. Esto, siempre que no queden registros con clave repetida. Por ejemplo, podemos eliminar el campo "horallegada":
siempre que no haya registros con "patente" duplicada, en ese caso aparece un mensaje de error y la eliminación del campo no se realiza.