Integralność referencyjna

Wprowadzenie do relacyjnych baz danych w SQL

Timo Grossenbacher

Data Journalist

Integralność referencyjna

  • Rekord odwołujący się do innej tabeli musi wskazywać istniejący rekord
  • Określana między dwiema tabelami
  • Wymuszana przez klucze obce
Wprowadzenie do relacyjnych baz danych w SQL

Naruszenia integralności referencyjnej

Integralność referencyjna z tabeli A do tabeli B jest naruszana...

  • ...gdy rekord w tabeli B, do którego odwołuje się rekord w tabeli A, zostanie usunięty.
  • ...gdy do tabeli A zostanie wstawiony rekord odwołujący się do nieistniejącego rekordu w tabeli B.
  • Klucze obce zapobiegają naruszeniom!
Wprowadzenie do relacyjnych baz danych w SQL

Postępowanie z naruszeniami

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
);
Wprowadzenie do relacyjnych baz danych w SQL

Postępowanie z naruszeniami – cd.

ON DELETE...

  • ...NO ACTION: Zgłoś błąd
  • ...CASCADE: Usuń wszystkie rekordy odwołujące się
  • ...RESTRICT: Zgłoś błąd
  • ...SET NULL: Ustaw kolumnę odwołującą się na NULL
  • ...SET DEFAULT: Ustaw kolumnę odwołującą się na wartość domyślną
Wprowadzenie do relacyjnych baz danych w SQL

Przyjrzyjmy się kilku przykładom!

Wprowadzenie do relacyjnych baz danych w SQL

Preparing Video For Download...