sql >> Database >  >> RDS >> PostgreSQL

Hoe en waarom primaire sleutels aan mijn SQL-databasetabel toe te voegen als ik al een index heb?

Een primaire sleutel is een beperking die aangeeft dat de waarden in de kolom(men) (onderling) uniek moeten zijn en niet null. Dit is zo dat gegarandeerd kan worden dat elke rij in de tabel uniek wordt geïdentificeerd, wat vooral handig is als u externe sleutels wilt maken die naar deze tabel verwijzen. Het is nog steeds de moeite waard om te hebben als je geen andere tafels hebt, omdat het zal voorkomen dat je tafel in een slechte staat komt, bijvoorbeeld als je meer dan één van dezelfde bronwaarde op een bepaalde datum hebt.

De primaire-sleutelvelden hebben bijna altijd een index en worden vaak gebruikt voor zoekopdrachten en JOIN's, maar de twee concepten zijn gescheiden.

Sommige DBMS'en (bijv. MySQL, SQL Server) maken automatisch een geclusterde index op de primaire sleutel, wat betekent dat gegevens in de tabel op schijf worden gesorteerd op het veld of de velden die de primaire sleutel vormen om de algemene bewerkingen hierboven nog sneller te maken. Postgres doet dit echter niet standaard.

U kunt de primaire sleutel bij het maken van tabellen specificeren met behulp van de volgende syntaxis:

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

U kunt ook een nieuw, automatisch oplopend geheeltallig veld toevoegen om als uw primaire sleutel te fungeren (in het algemeen een surrogaatsleutel genoemd) of kunstmatige sleutel ). Misschien wilt u dit doen als u geen andere goede kandidaten in uw gegevensitems heeft, maar het kan ook andere voordelen hebben (mogelijk snellere JOINs bijvoorbeeld).

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



  1. MySQL-standaardwaarde als de waarde van een ander veld

  2. Oracle-cursor maken met Java-programma

  3. Genereer een XML-bestand met aangepaste XML-tags uit de Oracle-databasetabel

  4. MySQL Hoe tijdsverschil in Unix-tijdstempel te krijgen?