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ä */
);