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:
id | nev | kor |
---|---|---|
1 | Kovács Péter | 22 |
2 | Nagy Anna | 21 |
osztalyok:
osztaly_id | osztaly_nev | tanulo_id |
---|---|---|
1 | 10.A | 1 |
2 | 11.B | 2 |
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_id | osztaly_nev | tanulo_id |
---|---|---|
2 | 11.B | 2 |
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_id | osztaly_nev | tanulo_id |
---|---|---|
2 | 11.B | 3 |
Ö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.