En los sistemas de gestión de bases de datos relacionales , una clave única es una clave candidata . Todas las claves candidatas de una relación pueden identificar de forma única los registros de la relación, pero solo una de ellas se utiliza como clave primaria. Las claves candidatas restantes se denominan claves únicas porque pueden identificar de forma única un registro en una relación. Las claves únicas pueden constar de varias columnas. También se las conoce como claves alternativas . Las claves únicas son una alternativa a la clave primaria de la relación. En SQL, las claves únicas tienen 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 primaria al realizar una selección de una sola tabla o al filtrar en una cláusula WHERE , pero no se suelen utilizar para unir varias tablas.
Resumen
Las claves permiten a los usuarios de la base de datos y al software de aplicación identificar, acceder y actualizar la información en una tabla. Una tabla puede contener varias claves. Por ejemplo, en una tabla de empleados, tanto el número de empleado como el nombre de usuario son únicos. La aplicación de una restricción de clave (es decir, una restricción de unicidad) en una tabla también es una característica de la integridad de los datos de la base de datos. El sistema de gestión de bases de datos (DBMS) impide las actualizaciones que podrían generar valores de clave duplicados y, por lo tanto, garantiza que las tablas siempre cumplan con las reglas de unicidad deseadas. Por consiguiente, la selección adecuada de claves al diseñar una base de datos es un aspecto importante de la integridad de la misma.
Una tabla de base de datos relacional puede tener una o más claves únicas disponibles (denominadas formalmente claves candidatas ). Una de esas claves por tabla puede designarse como clave primaria ; las demás se denominan claves alternativas .
Cualquier clave puede constar de uno o más atributos. Por ejemplo, un número de la Seguridad Social podría ser una clave de un solo atributo para un empleado; una combinación de número de vuelo y fecha podría ser una clave compuesta por dos atributos para un vuelo programado.
En el modelado e implementación de bases de datos se utilizan varios tipos de claves .
En su definición más básica, "una clave es un identificador único" [ 1 ] , por lo que "clave única " es un pleonasmo . Las claves que se encuentran dentro de su entidad de origen son únicas dentro de esa entidad. Las claves que migran a otra entidad pueden ser únicas o no, dependiendo del diseño y de cómo se utilicen en la otra tabla. Las claves foráneas pueden ser la clave primaria en otra tabla; por ejemplo, un ID de persona puede convertirse en el ID de empleado en la tabla de empleados. En este caso, el ID de empleado es tanto una clave foránea como la clave primaria única, lo que significa que las tablas tienen una relación 1:1. En el caso de que la entidad persona contuviera el ID del padre biológico, no se esperaría que el ID del padre fuera único porque un padre puede tener más de un hijo.
Aquí se muestra un ejemplo de cómo una clave primaria se convierte en clave foránea en una tabla relacionada. El ID migra de la tabla Autor a la tabla Libro.
Esquema de la tabla de autores :Autor ( ID , Nombre , Dirección , Fecha de nacimiento )Esquema de la tabla de libros :Libro ( ISBN , ID del autor , Título , Editorial , Precio )Aquí, ID funciona como clave primaria en la tabla 'Autor', y también como clave foránea en la tabla 'Libro'. La clave foránea sirve de enlace y, por lo tanto, de conexión entre las dos tablas relacionadas en esta base de datos de ejemplo.
In a relational database, a candidate key uniquely identifies each row of data values in a database table. A candidate key comprises a single column or a set of columns in a single database table. No two distinct rows or data records in a database table can have the same data value (or combination of data values) in those candidate key columns since NULL values are not used. Depending on its design, a database table may have many candidate keys but at most one candidate key may be distinguished as the primary key.
A key constraint applies to the set of tuples in a table at any given point in time. A key is not necessarily a unique identifier across the population of all possible instances of tuples that could be stored in a table but it does imply a data integrity rule that duplicates should not be allowed in the database table. Some possible examples of keys are Social Security Numbers, ISBNs, vehicle registration numbers or user login names.
In principle any key may be referenced by foreign keys. Some SQL DBMSs only allow a foreign key constraint against a primary key but most systems will allow a foreign key constraint to reference any key of a table.
Defining keys in SQL
The definition of keys in SQL:
ALTERTABLE<tableidentifier>ADD[CONSTRAINT<constraintidentifier>]{PRIMARYKEY|UNIQUE}(<columnname>[{,<columnname>}...])Likewise, keys can be defined as part of the CREATE TABLE SQL statement.
CREATETABLEtable_name(id_colINT,col2CHARACTERVARYING(20),key_colSMALLINTNOTNULL,...CONSTRAINTkey_uniqueUNIQUE(key_col),...)CREATETABLEtable_name(id_colINTPRIMARYKEY,col2CHARACTERVARYING(20),...key_colSMALLINTNOTNULLUNIQUE,...)Differences between primary key constraint and unique constraint
Primary key constraint
- Una clave primaria no puede permitir valores nulos (una clave primaria no puede definirse en columnas que permitan valores nulos).
- Cada tabla no puede tener más de una clave primaria.
- En algunos sistemas de gestión de bases de datos relacionales (RDBMS) , una clave primaria genera un índice agrupado por defecto.
Restricción única
- Se puede definir una restricción de unicidad en las columnas que permiten valores nulos, en cuyo caso las filas que incluyen valores nulos pueden no ser realmente únicas en el conjunto de columnas definidas por la restricción.
- Cada tabla puede tener múltiples restricciones únicas.
- En algunos sistemas de gestión de bases de datos relacionales (RDBMS) , una restricción de unicidad genera un índice no agrupado por defecto.
Cabe destacar que, a diferencia de la restricción PRIMARY KEY, una restricción UNIQUE no implica NOT NULL para las columnas que participan en ella. Es necesario especificar NOT NULL para que la(s) columna(s) se conviertan en clave. Si bien es posible aplicar restricciones UNIQUE a columnas que admiten valores nulos, el estándar SQL establece que la restricción no garantiza la unicidad de dichas columnas (la unicidad no se aplica a las filas donde alguna de las columnas contiene un valor nulo).
Según el estándar SQL [ 2 ], una restricción de unicidad no garantiza la unicidad en presencia de valores nulos y, por lo tanto, puede contener varias filas con combinaciones idénticas de valores nulos y no nulos; sin embargo, no todos los sistemas de gestión de bases de datos relacionales (RDBMS) implementan esta característica según el estándar SQL. [ 3 ] [ 4 ]
Véase también
- Identificador único global (GUID), también conocido como identificador único universal (UUID)
- El identificador de objeto persistente (POID) es un identificador único de un registro en una tabla, utilizado como clave principal.
Referencias
- ↑ Awad, Elias (1985), Análisis y diseño de sistemas, Segunda edición , Richard D. Irwin, Inc., ISBN 0-256-02824-9
- ↑ Resumen de ANSI/ISO/IEC SQL Archivado el 25 de abril de 2012 en Wayback Machine
- ↑ "Restricciones - Material de referencia de bases de datos SQL - ¡Aprenda SQL, lea un manual de SQL, siga un tutorial de SQL o aprenda a estructurar una consulta SQL!" . www.sql.org . Consultado el 16 de agosto de 2018 .
- ↑ "Comparación de diferentes implementaciones de SQL" . troels.arvin.dk . Consultado el 16 de agosto de 2018 .
Enlaces externos
- Términos de referencia de bases de datos relacionales, Claves : Una descripción general de los diferentes tipos de claves en un SGBDR
- Modelado de datos
- Sistemas de gestión de bases de datos