Uma chave primária é uma restrição que especifica que os valores em suas colunas devem ser (mutuamente) exclusivos e não nulos. Isso é para garantir a identificação exclusiva de cada linha na tabela, o que é mais útil quando se deseja criar chaves estrangeiras que se referem a essa tabela. Ainda vale a pena ter se você não tiver outras tabelas, pois isso evitará que sua tabela fique em um estado ruim onde, por exemplo, você tenha mais de um valor de origem em uma determinada data.
Os campos de chave primária quase sempre terão um índice neles, assim como são usados frequentemente para pesquisas e JOINs, mas os dois conceitos são separados.
Alguns DBMSs (por exemplo, MySQL, SQL Server) criam automaticamente um índice clusterizado na chave primária, o que significa que os dados na tabela são classificados no disco pelos campos que compõem a chave primária para tornar as operações comuns acima ainda mais rápidas. No entanto, o postgres não faz isso por padrão.
Você pode especificar a chave primária na criação da tabela usando a seguinte sintaxe:
create table datatable
(
date date,
yesterday real,
today real,
tomorrow real,
reading real,
source varchar,
PRIMARY KEY (source, date)
)
Você também pode adicionar um novo campo inteiro de incremento automático para atuar como sua chave primária (geralmente chamada de chave substituta ou chave artificial ). Você pode querer fazer isso se não tiver outros bons candidatos em seus itens de dados, mas também pode ter outros benefícios (JOINs potencialmente mais rápidos, por exemplo).
create table datatable
(
id serial primary key,
date date,
yesterday real,
today real,
tomorrow real,
reading real,
source varchar
)