Clave primaria - Primary key

En el modelo relacional de bases de datos , una clave primaria 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 primaria es "qué atributos identifican un registro" y, en casos simples, constituyen un único 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 observables del mundo real, en cuyo caso se denomina clave natural , mientras que un atributo creado para funcionar como clave y no utilizado para identificación fuera de la base de datos se denomina clave sustituta . Por ejemplo, para una base de datos de personas (de una nacionalidad determinada), 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 usarse como clave natural.

Historia

Aunque se utiliza principalmente en la actualidad en el contexto de bases de datos relacionales, el término "clave principal" es anterior al modelo relacional y también se utiliza en otros modelos de bases de datos. Charles Bachman, en su definición de la base de datos de navegación, es la primera persona en definir claves primarias.

Diseño

En términos de bases de datos relacionales, una clave primaria no difiere en forma o función de una clave que no es primaria. En la práctica, varias motivaciones pueden determinar la elección de una clave como principal sobre otra. La designación de una clave primaria puede indicar el identificador "preferido" para los datos en la tabla, o que la clave primaria se utilizará para referencias de claves externas 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 pueden usarse para identificar una clave primaria 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 para conveniencia del programador de aplicaciones.

Definición de 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 tal restricción a una tabla existente se define en SQL: 2003 así:

ALTER TABLE <table identifier> 
    ADD [ CONSTRAINT <constraint identifier> ] 
    PRIMARY KEY ( <column name> [ {, <column name> }... ] )

La clave principal también se puede especificar directamente durante la creación de la tabla. En el estándar SQL, las claves primarias 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 TABLE table_name (
   
   ...
)

Si la clave principal consta de una sola columna, la columna se puede marcar como tal utilizando la siguiente sintaxis:

CREATE TABLE table_name (
   id_col  INT  PRIMARY KEY,
   col2    CHARACTER VARYING(20),
   ...
)

Llaves sustitutas

En algunas circunstancias, la clave natural que identifica de forma única una tupla en una relación puede resultar engorrosa de utilizar 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 que una clave candidata tenga primacía artificial 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 teóricos, han llegado a considerar las claves primarias sustitutas como una parte inalienable del modelo de datos relacionales. Esto se debe en gran parte a una migración de principios del modelo de programación orientado a objetos al modelo relacional, creando el modelo híbrido relacional de objetos. En el ORM como patrón de registro activo , estas restricciones adicionales se colocan en las claves primarias:

  • Las claves primarias deben ser inmutables, es decir, nunca cambiadas ni reutilizadas; deben eliminarse junto con el registro asociado.
  • Las claves primarias deben ser identificadores anónimos enteros o numéricos.

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 primaria durante el diseño de la base de datos y la aplicación. Algunos sistemas de bases de datos incluso implican que los valores de las columnas de clave primaria no se pueden cambiar mediante la UPDATEinstrucción SQL.

Clave alternativa

Normalmente, se elige una clave candidata como clave principal. Otras claves candidatas se convierten en claves alternativas, cada una de las cuales puede tener una UNIQUErestricción asignada para evitar duplicados (una entrada duplicada no es válida en una columna única).

Las claves alternativas se pueden utilizar como la clave principal al hacer una selección de una sola tabla o al filtrar en una cláusula where , pero no se suelen utilizar para unir varias tablas.

Ver también

Notas

Referencias