En primärnyckel är en restriktion som anger att värdena i dess kolumn(er) måste vara (ömsesidigt) unika och inte null. Detta för att garantera att den unikt identifierar varje rad i tabellen, vilket är mest användbart när man vill skapa främmande nycklar som refererar till denna tabell. Det är fortfarande värt att ha om du inte har andra tabeller, eftersom det kommer att förhindra att ditt bord hamnar i ett dåligt tillstånd där du till exempel har mer än ett av samma källvärde på ett visst datum.
De primära nyckelfälten kommer nästan alltid att ha ett index på sig och de används ofta för uppslagningar och JOINs, men de två begreppen är separata.
Vissa DBMS:er (t.ex. MySQL, SQL Server) skapar automatiskt ett klustrat index på primärnyckeln, vilket innebär att data i tabellen sorteras på disken efter fältet/fälten som består av primärnyckeln för att göra de vanliga operationerna ovan ännu snabbare. Postgres gör dock inte detta som standard.
Du kan ange primärnyckeln när du skapar tabeller med följande syntax:
create table datatable
(
date date,
yesterday real,
today real,
tomorrow real,
reading real,
source varchar,
PRIMARY KEY (source, date)
)
Du kan också lägga till ett nytt, automatiskt ökande heltalsfält för att fungera som din primärnyckel (allmänt kallad surrogatnyckel eller konstgjord nyckel ). Du kanske vill göra detta om du inte har några andra bra kandidater i dina dataposter, men det kan också ha andra fördelar (potentiellt snabbare JOINs till exempel).
create table datatable
(
id serial primary key,
date date,
yesterday real,
today real,
tomorrow real,
reading real,
source varchar
)