Definición: ¿Qué significa la clave principal?
Una clave primaria es una columna de tabla de base de datos relacional especial (o combinación de columnas) designada para identificar de forma única cada registro de tabla.
Se utiliza una clave principal como identificador único para analizar rápidamente los datos dentro de la tabla. Una tabla no puede tener más de una clave principal.
Las principales características de una clave principal son:
- Debe contener un valor único para cada fila de datos.
- No puede contener valores nulos.
- Cada fila debe tener un valor de clave principal.
Una clave principal puede utilizar uno o más campos que ya están presentes en el modelo de datos subyacente, o se puede crear un campo adicional específico para que sea la clave principal.
Techinfo explica la clave principal
El concepto de clave principal es fundamental para una base de datos relacional eficiente. Sin la clave principal y los conceptos de clave externa estrechamente relacionados, las bases de datos relacionales no funcionarían.
De hecho, dado que una tabla puede contener fácilmente miles de registros (incluidos los duplicados), es necesaria una clave principal para garantizar que un registro de tabla siempre se pueda identificar de forma única.
Todas las claves que provienen de atributos y observables del mundo real se denominan claves primarias naturales, a diferencia de las claves primarias sustitutas que, en cambio, se asignan arbitrariamente a cada registro.
Casi todas las personas tratan con claves primarias naturales con frecuencia, pero sin saberlo, en la vida cotidiana.
Por ejemplo, a los estudiantes se les asignan rutinariamente números de identificación (ID) únicos, y todos los ciudadanos estadounidenses tienen números de Seguro Social asignados por el gobierno y de identificación única. Las direcciones postales o los números de licencia de conducir son ejemplos de claves primarias que se utilizan para identificar (respectivamente) ubicaciones o automóviles de manera única.
Como otro ejemplo, una base de datos debe contener todos los datos almacenados por un banco comercial. Dos de las tablas de la base de datos incluyen CUSTOMER_MASTER, que almacena datos básicos y estáticos del cliente (nombre, fecha de nacimiento, dirección, número de seguro social, etc.) y ACCOUNTS_MASTER, que almacena varios datos de la cuenta bancaria (fecha de creación de la cuenta, tipo de cuenta, límites de retiro o información de cuenta correspondiente, etc.).
Para identificar de forma única a los clientes, se selecciona una columna o combinación de columnas para garantizar que dos clientes nunca tengan el mismo valor único. Por tanto, determinadas columnas se eliminan inmediatamente, por ejemplo, apellido y fecha de nacimiento.
Un buen candidato a clave primaria es la columna designada para contener números de Seguro Social. Sin embargo, es posible que algunos titulares de cuentas no tengan números de seguro social, por lo que se elimina la candidatura de esta columna.
La siguiente opción lógica es usar una combinación de columnas, como agregar el apellido a la fecha de nacimiento a la dirección de correo electrónico, lo que da como resultado una clave primaria larga y engorrosa.
La mejor opción es crear una clave primaria separada en una nueva columna llamada CUSTOMER_ID. Luego, la base de datos genera automáticamente un número único cada vez que se agrega un cliente, lo que garantiza una identificación única.
A medida que se crea esta clave, la columna se designa como la clave principal dentro del script SQL que crea la tabla, y todos los valores nulos se rechazan automáticamente.
El número de cuenta asociado con cada CUSTOMER_ID permite el manejo seguro de las consultas de los clientes y tiempos de búsqueda rápidos (como con cualquier tabla indexada).
Por ejemplo, se le puede pedir a un cliente que proporcione su apellido al realizar una consulta bancaria. Es probable que una consulta de apellido común (como Smith) arroje varios resultados.
Al consultar datos, el uso de la característica de unicidad de la clave principal garantiza un resultado.