Clave primaria
En el modelo relacional de las bases de datos, una clave principal es una elección específica de un conjunto mínimo de atributos (columnas) que especifican de forma única una tupla (fila) en una relación (tabla). De manera informal, una clave principal es "cuyos atributos identifican un registro" y en casos simples constituyen un solo atributo: una identificación única. Más formalmente, una clave primaria es una elección de clave candidata (una superclave mínima); cualquier otra clave candidata es una clave alternativa.
Una clave primaria puede consistir en elementos observables del mundo real, en cuyo caso se denomina clave natural, mientras que un atributo creado para funcionar como clave y no utilizado para la identificación fuera de la base de datos se denomina una clave sustituta. Por ejemplo, para una base de datos de personas (de una determinada nacionalidad), la hora y el lugar de nacimiento podrían ser una clave natural. El número de identificación nacional es otro ejemplo de un atributo que puede utilizarse como clave natural.
Diseño
En términos de bases de datos relacionales, una clave principal no difiere en forma o función de una clave que no es principal. En la práctica, varias motivaciones pueden determinar la elección de una clave como primaria sobre otra. La designación de una clave principal puede indicar el "preferido" identificador de datos en la tabla, o que la clave principal se utilizará para referencias de clave externa de otras tablas o puede indicar alguna otra característica técnica en lugar de semántica de la tabla. Algunos lenguajes y software tienen características de sintaxis especiales que se pueden usar para identificar una clave principal como tal (por ejemplo, la restricción PRIMARY KEY en SQL).
El modelo relacional, tal como se expresa a través del cálculo relacional y el álgebra relacional, no distingue entre claves primarias y otros tipos de claves. Las claves primarias se agregaron al estándar SQL principalmente como una conveniencia para el programador de aplicaciones.
Las claves primarias pueden ser un número entero que se incrementa, un identificador único universal (UUID) o pueden generarse mediante el algoritmo Hi/Lo.
Definiendo claves primarias en SQL
Las claves primarias se definen en el estándar ISO SQL, a través de la restricción PRIMARY KEY. La sintaxis para agregar una restricción de este tipo a una tabla existente se define en SQL:2003 de la siguiente manera:
ALTER CUADRO .cuadro Identificador■ ADD [ CONSTRAINT .limitación Identificador■ ] PRIMARÍA KEY () .columna Nombre■ [ {}, .columna Nombre■ }... ] )
La clave principal también se puede especificar directamente durante la creación de la tabla. En SQL Standard, las claves principales pueden constar de una o varias columnas. Cada columna que participa en la clave principal se define implícitamente como NOT NULL. Tenga en cuenta que algunos RDBMS requieren marcar explícitamente las columnas de clave principal como NOT NULL
.
CREATE CUADRO table_name () ...)
Si la clave principal consiste solo en una sola columna, la columna se puede marcar como tal usando la siguiente sintaxis:
CREATE CUADRO table_name () id_col INT PRIMARÍA KEY, col2 CARACTER VARYING()20), ...)
Claves sustitutas
En algunas circunstancias, la clave natural que identifica de forma única una tupla en una relación puede ser engorrosa de usar para el desarrollo de software. Por ejemplo, puede incluir varias columnas o campos de texto grandes. En tales casos, se puede utilizar una clave sustituta como clave principal. En otras situaciones, puede haber más de una clave candidata para una relación, y obviamente no se prefiere ninguna clave candidata. Se puede utilizar una clave sustituta como clave principal para evitar dar primacía artificial a una clave candidata sobre las demás.
Dado que las claves primarias existen principalmente como una conveniencia para el programador, las claves primarias sustitutas se utilizan a menudo, en muchos casos exclusivamente, en el diseño de aplicaciones de bases de datos.
Debido a la popularidad de las claves primarias sustitutas, muchos desarrolladores y, en algunos casos, incluso los teóricos han llegado a considerar las claves primarias sustitutas como una parte inalienable del modelo de datos relacional. Esto se debe en gran parte a una migración de principios del modelo de programación orientada a objetos al modelo relacional, creando el modelo híbrido relacional de objetos. En el patrón de registro activo similar a ORM, estas restricciones adicionales se colocan en las claves principales:
- Las claves primarias deben ser inmutables, es decir, nunca cambiadas o reutilizadas; deben eliminarse junto con el registro asociado.
- Las claves primarias deben ser identificadores de entero anónimo o numérico.
Sin embargo, ninguna de estas restricciones forma parte del modelo relacional ni de ningún estándar SQL. Se debe aplicar la debida diligencia al decidir sobre la inmutabilidad de los valores de clave principal durante el diseño de la base de datos y la aplicación. Algunos sistemas de bases de datos incluso implican que los valores en las columnas de clave principal no se pueden cambiar usando la instrucción SQL UPDATE
.
Clave alternativa
Por lo general, se elige una clave candidata como clave principal. Otras claves candidatas se convierten en claves alternativas, cada una de las cuales puede tener asignada una restricción UNIQUE
para evitar duplicados (una entrada duplicada no es válida en una columna única).
Las claves alternativas se pueden usar como la clave principal cuando se realiza una selección de una sola tabla o cuando se filtra en una cláusula where, pero normalmente no se usan para unir varias tablas.