SQL alapok: Relációs adatbázis-tervezés és tiszta lekérdezések

Az adatok strukturált és megbízható tárolása minden komoly szerveroldali alkalmazás alapja. Bár manapság nagyon népszerűek a NoSQL megoldások, az esetek túlnyomó többségében az SQL (Structured Query Language), és a rá épülő relációs adatbázis-kezelő rendszerek (RDBMS) – mint amilyen a MySQL, PostgreSQL, Oracle vagy az SQL Server – jelentik a legjobb és legbiztonságosabb választást.

A relációs modellek lényege, hogy az adatokat szigorú sémával (schema) rendelkező, oszlopokból és sorokból álló táblákban (tables) tároljuk. A legfőbb erősségük azonban a táblák közötti kapcsolatok (relációk) logikus kezelése.

Elsődleges és Idegen kulcsok (Keys)

A táblák közötti kapcsolatok felépítésének alappillérei a kulcsok:

Gyakorlati SQL parancsok: A DDL és DML alapok

Az SQL nyelvet feloszthatjuk DDL-re (Data Definition Language - az adatbázis struktúráját definiálja) és DML-re (Data Manipulation Language - az adatokat kezeli).

-- 1. DDL: Tábla létrehozása
CREATE TABLE felhasznalok (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nev VARCHAR(100) NOT NULL,
    email VARCHAR(100) UNIQUE NOT NULL,
    reg_datum TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE cikkek (
    id INT AUTO_INCREMENT PRIMARY KEY,
    cim VARCHAR(255) NOT NULL,
    tartalom TEXT,
    szerzo_id INT,
    statusz VARCHAR(20) DEFAULT 'vázlat',
    -- Idegen kulcs beállítása
    FOREIGN KEY (szerzo_id) REFERENCES felhasznalok(id) ON DELETE CASCADE
);

-- 2. DML: Adatok beszúrása (INSERT)
INSERT INTO felhasznalok (nev, email) 
VALUES ('Kovács Péter', 'peter@simplesolution.ro');

INSERT INTO cikkek (cim, tartalom, szerzo_id, statusz) 
VALUES ('SQL Alapok', 'Ez egy hosszú szöveg...', 1, 'publikalt');

-- 3. DML: Összetett lekérdezés összekapcsolással (INNER JOIN)
SELECT cikkek.cim, felhasznalok.nev AS szerzo_neve, cikkek.statusz
FROM cikkek
INNER JOIN felhasznalok ON cikkek.szerzo_id = felhasznalok.id
WHERE cikkek.statusz = 'publikalt'
ORDER BY cikkek.id DESC;

Az ON DELETE CASCADE fontossága

A fenti példában szereplő ON DELETE CASCADE szabály gondoskodik a referenciális integritásról. Ez azt jelenti, hogy ha törlünk egy felhasználót (pl. Pétert) a felhasznalok táblából, a rendszer automatikusan törli az összes hozzá tartozó cikket a cikkek táblából is, elkerülve az úgynevezett "árva rekordok" (orphan records) kialakulását.

Összegzés

Az SQL nyelv megértése nélkülözhetetlen egy backend fejlesztő számára. Egy jól megtervezett, normalizált (adatduplikációt kerülő) adatbázis-struktúra nemcsak a tárhellyel spórol, de a lekérdezéseket is villámgyorssá teszi, és garantálja az adatok üzleti konzisztenciáját (pl. hogy ne lehessen két felhasználó ugyanazzal az e-mail címmel).

Gyakran Ismételt Kérdések (GYIK)

Mi az a normalizálás (Normalization)?

A normalizálás egy folyamat az adatbázis tervezésekor, aminek a fő célja az adatduplikáció megszüntetése. Ha egy adatot módosítani kell (pl. egy kategória nevét), azt csak egyetlen helyen kelljen átírni, ne több száz cikkben külön-külön.


Ezek is érdekelhetnek: