Clave primaria

De Wikipedia, la enciclopedia libre
(Redirigido desde «Llave primaria»)
Saltar a: navegación, búsqueda

En el diseño de bases de datos relacionales, se llama clave primaria a un campo o a una combinación de campos que identifica de forma única a cada fila de una tabla. Una clave primaria comprende de esta manera una columna o conjunto de columnas. No puede haber dos filas en una tabla que tengan la misma clave primaria.

Una clave primaria debe identificar unícamente a todas las posibles filas de una tabla y no solo a las filas que se encuentran en un momento determinado. Ejemplos de claves primarias son DNI (asociado a una persona) o ISBN (asociado a un libro). Las guías telefónicas y diccionarios no pueden usar nombres o palabras o números del sistema decimal de Dewey como claves candidatas, porque no identifican unívocamente números de teléfono o palabras.

El modelo relacional, según se lo expresa mediante cálculo relacional y álgebra relacional, no distingue entre clave primaria y otros tipos de claves. Las claves primarias fueron agregadas al estándar SQL principalmente para conveniencia del programador. En una arquitectura entidad-relación, la clave primaria permite las relaciones de la tabla que tiene la clave primaria con otras tablas que van a utilizar la información de esta tabla.

Tanto claves únicas como claves primarias pueden referenciarse con claves foráneas.

Definiendo claves primarias[editar]

Las claves primarias están definidas el estándar ANSI SQL, mediante la directiva PRIMARY KEY. La sintaxis para aplicar tal directiva a una tabla existente está definida en SQL:2003 de esta manera:

  ALTER TABLE <identificador_de_la_tabla>
      ADD [ CONSTRAINT <identificador_de_la_directiva> ] 
      PRIMARY KEY ( <nombre_de_columna> {, <nombre_de_columna>}... )

La clave primaria puede especificarse directamente o de forma inmediata en el momento de la creación de la tabla también. En el estándar SQL, las claves primarias pueden estar compuestas por una o más columnas. Cada columna que forme parte de la clave primaria queda implícitamente definida como NOT NULL. Nótese que algunos sistemas de bases de datos requieren que se marque explícitamente a las columnas de clave primaria como NOT NULL.

  CREATE TABLE nombre_de_la_tabla (
     id_col  INT,
     col2    CHARACTER VARYING(20),
     ...
     CONSTRAINT clapri_tabla PRIMARY KEY(id_col),
     ...
  )

En el caso en que la clave primaria sea una sola columna, ésta puede marcarse como tal por medio de la siguiente sintaxis:

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

Definiendo claves únicas[editar]

La definición de claves únicas es sintácticamente muy similar a la de clave primaria.

  ALTER TABLE <identificador_de_la_tabla>
      ADD [ CONSTRAINT <identificador_de_la_directiva> ] 
      UNIQUE ( <nombre_de_columna> {, <nombre_de_columna>}... )

De la misma manera, las claves únicas pueden definirse como parte de la sentencia de SQL CREATE TABLE.

  CREATE TABLE nombre_de_la_tabla (
     id_col   INT,
     col2     CHARACTER VARYING(20),
     cla_col  SMALLINT,
     ...
     CONSTRAINT clave_única UNIQUE(cla_col),
     ...
  )


  CREATE TABLE nombre_de_la_tabla (
     id_col  INT  PRIMARY KEY,
     col2    CHARACTER VARYING(20),
     ...
     cla_col  SMALLINT UNIQUE,
     ...
  )