PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come e perché aggiungere chiavi primarie alla tabella del mio database SQL quando ho già un indice

Una chiave primaria è un vincolo che specifica che i valori nelle sue colonne devono essere (reciprocamente) univoci e non nulli. Questo è così che può essere garantito per identificare in modo univoco ogni riga nella tabella, che è molto utile quando si desidera creare chiavi esterne che fanno riferimento a questa tabella. Vale comunque la pena averlo se non hai altre tabelle, in quanto impedirà alla tua tabella di entrare in uno stato negativo in cui, ad esempio, hai più di uno dello stesso valore di origine in una data particolare.

I campi della chiave primaria avranno quasi sempre un indice su di essi e vengono utilizzati spesso per ricerche e JOIN, ma i due concetti sono separati.

Alcuni DBMS (ad es. MySQL, SQL Server) creano automaticamente un indice cluster sulla chiave primaria, il che significa che i dati nella tabella vengono ordinati su disco in base ai campi che compongono la chiave primaria per rendere le operazioni comuni sopra ancora più veloci. Tuttavia, postgres non lo fa per impostazione predefinita.

È possibile specificare la chiave primaria durante la creazione della tabella utilizzando la seguente sintassi:

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

Puoi anche aggiungere un nuovo campo intero a incremento automatico che funga da chiave primaria (generalmente denominata chiave surrogata o chiave artificiale ). Potresti volerlo fare se non hai altri buoni candidati nei tuoi elementi di dati, ma può avere anche altri vantaggi (ad esempio JOIN potenzialmente più veloci).

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