Referensintegritet

Introduktion till relationsdatabaser i SQL

Timo Grossenbacher

Data Journalist

Referensintegritet

  • En post som refererar till en annan tabell måste referera till en befintlig post i den tabellen
  • Anges mellan två tabeller
  • Upprätthålls via främmande nycklar
Introduktion till relationsdatabaser i SQL

Brott mot referensintegritet

Referensintegriteten från tabell A till tabell B bryts...

  • ...om en post i tabell B som refereras från tabell A tas bort.
  • ...om en post i tabell A som refererar till en icke-existerande post i tabell B infogas.
  • Främmande nycklar förhindrar sådana brott!
Introduktion till relationsdatabaser i SQL

Hantera brott mot integritet

CREATE TABLE a (
 id integer PRIMARY KEY,
 column_a varchar(64), 
 ...,
 b_id integer REFERENCES b (id) ON DELETE NO ACTION
);
CREATE TABLE a (
 id integer PRIMARY KEY,
 column_a varchar(64), 
 ...,
 b_id integer REFERENCES b (id) ON DELETE CASCADE
);
Introduktion till relationsdatabaser i SQL

Hantera brott mot integritet, forts.

ON DELETE...

  • ...NO ACTION: Utlöser ett fel
  • ...CASCADE: Tar bort alla refererande poster
  • ...RESTRICT: Utlöser ett fel
  • ...SET NULL: Sätter den refererande kolumnen till NULL
  • ...SET DEFAULT: Sätter den refererande kolumnen till sitt standardvärde
Introduktion till relationsdatabaser i SQL

Låt oss titta på några exempel!

Introduktion till relationsdatabaser i SQL

Preparing Video For Download...