stringtranslate.com

Clave primaria

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 ). [a] [1] De manera informal, una clave principal es "qué atributos identifican un registro" y, en casos simples, constituye 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 se utiliza para identificación fuera de la base de datos se denomina 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. [b] El número de identificación nacional es otro ejemplo de atributo que puede utilizarse como clave natural.

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 primaria sobre otra. La designación de una clave principal puede indicar el identificador "preferido" para los datos de la tabla, o que la clave principal se utilizará para referencias de claves externas de otras tablas o puede indicar alguna otra característica técnica más que 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, expresado mediante el 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 comodidad del programador de aplicaciones. [ cita necesaria ]

Las claves primarias pueden ser un número entero incrementado, un identificador único universal (UUID) o pueden generarse utilizando el algoritmo Hi/Lo .

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 dicha restricción a una tabla existente se define en SQL:2003 de la siguiente manera:

ALTER TABLE < identificador de tabla > AGREGAR [ CONSTRAINT < identificador de restricción > ] CLAVE PRIMARIA ( < nombre de columna > [ { , < nombre de columna > } ... ] )                       

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. [ cita necesaria ]

CREAR TABLA nombre_tabla ( ... )     

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

CREAR TABLA nombre_tabla ( id_col INT CLAVE PRIMARIA , col2 CARÁCTER VARIABLE ( 20 ), ... )           

Claves sustitutas

En algunas circunstancias, la clave natural que identifica de forma única una tupla en una relación puede resultar complicada de utilizar para el desarrollo de software. Por ejemplo, puede implicar 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 darle a una clave candidata una primacía artificial sobre las demás.

Dado que las claves primarias existen principalmente para comodidad del 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 medida a una migración de principios del modelo de programación orientada a objetos al modelo relacional, creando el modelo híbrido objeto-relacional. En el patrón de registro activo tipo ORM , estas restricciones adicionales se imponen a las claves primarias:

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 de las columnas de clave principal no se pueden cambiar mediante la UPDATEdeclaración SQL. [ cita necesaria ]

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 UNIQUEasignada una restricción para evitar duplicados (una entrada duplicada no es válida en una columna única). [2]

Las claves alternativas se pueden usar como clave principal al realizar una selección de una sola tabla o al filtrar en una cláusula donde , pero normalmente no se usan para unir varias tablas.

Ver también

Notas

  1. ^ Los términos correspondientes son respectivamente teóricos (atributo, tupla, relación) y concretos (columna, fila, tabla).
  2. ^ Con suficiente precisión, dos personas no pueden nacer exactamente en el mismo lugar y exactamente en el mismo instante.

Referencias

  1. ^ "Agregar o cambiar la clave principal de una tabla en Access". Microsoft . Consultado el 20 de enero de 2020 . Una clave principal es un campo o conjunto de campos con valores que son únicos en una tabla.
  2. ^ Clave alternativa: preguntas frecuentes sobre Oracle