sql >> Base de Datos >  >> RDS >> PostgreSQL

Cómo y por qué agregar claves primarias a mi tabla de base de datos SQL cuando ya tengo un índice

Una clave primaria es una restricción que especifica que los valores en su(s) columna(s) deben ser (mutuamente) únicos y no nulos. Esto es para garantizar que se identifique de forma única cada fila de la tabla, lo cual es muy útil cuando se desea crear claves externas que se refieran a esta tabla. Todavía vale la pena tenerlo si no tiene otras tablas, ya que evitará que su tabla entre en mal estado donde, por ejemplo, tiene más de uno del mismo valor de origen en una fecha en particular.

Los campos de clave principal casi siempre tendrán un índice y se usan a menudo para búsquedas y JOIN, pero los dos conceptos están separados.

Algunos DBMS (por ejemplo, MySQL, SQL Server) crean automáticamente un índice agrupado en la clave principal, lo que significa que los datos de la tabla se ordenan en el disco por los campos que comprenden la clave principal para que las operaciones comunes anteriores sean aún más rápidas. Sin embargo, postgres no hace esto de manera predeterminada.

Puede especificar la clave principal en la creación de tablas usando la siguiente sintaxis:

create table datatable 
(
    date date, 
    yesterday real, 
    today real, 
    tomorrow real, 
    reading real, 
    source varchar,
    PRIMARY KEY (source, date)
)

También puede agregar un nuevo campo entero de incremento automático para que actúe como su clave principal (generalmente denominada clave sustituta). o llave artificial ). Es posible que desee hacer esto si no tiene otros buenos candidatos en sus elementos de datos, pero también puede tener otros beneficios (JOINs potencialmente más rápidos, por ejemplo).

create table datatable 
(
    id serial primary key,
    date date, 
    yesterday real, 
    today real, 
    tomorrow real, 
    reading real, 
    source varchar
)