Bevezetés

Az idegen kulcsok (foreign keys) olyan táblázatok közötti kapcsolatokat definiálnak, amelyek biztosítják az adatok integritását. Az idegen kulcsok segítenek biztosítani, hogy egy táblázatban lévő adat egy másik táblázatban is érvényes legyen. Ebben az oktatóanyagban bemutatjuk, hogyan definiálhatók az idegen kulcsok, valamint hogyan használhatók a CASCADE törlés és frissítés MySQL-ben.

Adatbázis és Táblázat Létrehozása

Először hozzunk létre egy adatbázist és két táblázatot, amelyek között kapcsolatot definiálunk.

-- Adatbázis létrehozása
CREATE DATABASE iskola;

-- Adatbázis használata
USE iskola;

-- Tanulók táblázat létrehozása
CREATE TABLE tanulok (
id INT AUTO_INCREMENT PRIMARY KEY,
nev VARCHAR(100),
kor INT
);

-- Osztályok táblázat létrehozása
CREATE TABLE osztalyok (
osztaly_id INT AUTO_INCREMENT PRIMARY KEY,
osztaly_nev VARCHAR(100),
tanulo_id INT,
FOREIGN KEY (tanulo_id) REFERENCES tanulok(id)
ON DELETE CASCADE
ON UPDATE CASCADE
);

Idegen Kulcsok Definiálása

Az idegen kulcsokat a FOREIGN KEY kulcsszóval definiáljuk. A fenti példában az osztalyok táblázatban lévő tanulo_id oszlop az tanulok táblázat id oszlopára hivatkozik.

Cascade Törlés (ON DELETE CASCADE)

A CASCADE törlés azt jelenti, hogy ha egy rekordot törlünk a szülő táblázatból, akkor az ehhez kapcsolódó rekordok automatikusan törlődnek a gyerek táblázatból.

-- Például, ha töröljük a tanulók közül azt, akinek az id-je 1,
-- akkor az osztályok táblázatból is törlődnek az ehhez kapcsolódó rekordok.
DELETE FROM tanulok WHERE id = 1;

Cascade Frissítés (ON UPDATE CASCADE)

A CASCADE frissítés azt jelenti, hogy ha a szülő táblázatban egy rekord elsődleges kulcsát frissítjük, akkor a gyerek táblázatban lévő kapcsolódó rekordok is automatikusan frissülnek.

-- Például, ha frissítjük a tanulók közül azt, akinek az id-je 2,
-- akkor az osztályok táblázatban is frissülnek az ehhez kapcsolódó rekordok.
UPDATE tanulok SET id = 3 WHERE id = 2;

Példák

Tegyük fel, hogy az alábbi adatok már szerepelnek a táblázatokban:

tanulok:

idnevkor
1Kovács Péter22
2Nagy Anna21

osztalyok:

osztaly_idosztaly_nevtanulo_id
110.A1
211.B2

1. Törlés Cascade-del:

Kovács Péter törlése a tanulok táblázatból:

DELETE FROM tanulok WHERE id = 1;

Ennek eredményeképpen az osztalyok táblázatban a Kovács Péterhez kapcsolódó rekord is törlődik:

osztaly_idosztaly_nevtanulo_id
211.B2

2. Frissítés Cascade-del:

Nagy Anna id értékének frissítése:

UPDATE tanulok SET id = 3 WHERE id = 2;

Ennek eredményeképpen az osztalyok táblázatban a Nagy Annához kapcsolódó rekord is frissül:

osztaly_idosztaly_nevtanulo_id
211.B3

Összegzés

Ez az oktatóanyag bemutatta, hogyan definiálhatók az idegen kulcsok MySQL-ben, és hogyan használhatók a CASCADE törlés és frissítés műveletek. Az idegen kulcsok és a CASCADE műveletek segítségével biztosíthatjuk az adatok integritását és konzisztenciáját az adatbázisban, és megkönnyíthetjük a táblázatok közötti kapcsolatok kezelését.