Sobes.tech
Middle

Mis on viideteede terviklikkus?

sobes.tech AI

Vastus AI-lt

Viiteintegriteet on tietojen ominaisuus relaatiotietokannassa, joka varmistaa, että taulujen väliset viittaukset pysyvät pätevinä. Se estää seuraavat ongelmat:

  • rivin poistaminen "vanhemman" taulusta, johon "lapsen" taulun rivit viittaavat;
  • pääavaimen muuttaminen "vanhemman" taulussa, johon "lapsen" taulun rivit viittaavat, ilman näiden viittausten vastaavaa päivittämistä;
  • rivin lisääminen "lapsen" tauluun viitaten olemassa olevaan pääavaimeen "vanhemman" taulussa.

Toteutetaan ulkoisten avainten (FOREIGN KEY) avulla.

Esimerkkejä ulkoisten avainten rajoituksista:

  • ON DELETE CASCADE: rivin poistaminen "vanhemman" taulusta johtaa myös vastaavien rivien poistamiseen "lapsen" taulusta.
  • ON DELETE SET NULL: rivin poistaminen "vanhemman" taulusta asettaa "lapsen" taulun vastaavan ulkoisen avaimen NULL-arvoksi.
  • ON DELETE RESTRICT: rivin poistaminen "vanhemman" taulusta on estetty, jos siihen viitataan "lapsen" taulussa.
  • ON UPDATE CASCADE: pääavaimen päivittäminen "vanhemman" taulussa päivittää myös vastaavat ulkoiset avaimet "lapsen" taulussa.
-- Esimerkki "users"-taulusta (vanhemmat)
CREATE TABLE users (
    user_id INT PRIMARY KEY,
    username VARCHAR(255) NOT NULL
);

-- Esimerkki "orders"-taulusta (lapsi) ulkoisella avaimella
CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    user_id INT,
    order_date DATE,
    FOREIGN KEY (user_id) REFERENCES users(user_id)
        ON DELETE CASCADE /* Esimerkki rajoituksen käytöstä */
        ON UPDATE CASCADE /* Esimerkki rajoituksen käytöstä */
);