FOREIGN KEY, tuji ključ
Vadnica logo
vadnica logo
x
HTML CSS JavaScript jQuery SQL PHP Laravel
HTML CSS JavaScript jQuery MySQL PHPStorm Database

MySQL SQL

SELECT DISTINCT WHERE AND OR NOT ORDER BY INSERT INTO NULL UPDATE DELETE LIMIT MAX MIN COUNT AVG SUM LIKE WILDCARDS IN BETWEEN AS INNER JOIN LEFT JOIN RIGHT JOIN CROSS JOIN SELF JOIN UNION GROUP BY HAVING EXISTS ANY ALL INSERT SELECT CASE IF NULL COALESCE Operaterji

MySQL Database

CREATE DATABASE DROP DATABASE CREATE TABLE DROP TABLE ALTER TABLE CONSTRAINTS NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY CHECK DEFAULT CREATE INDEX AUTO-INCREMENT DATE CREATE VIEW FUNKCIJE DATA TYPE Združevalne funkcije XAMPP PHP Laravel

FOREIGN KEY (slo. Tuji ključ)

Omejitev FOREIGN KEY se uporablja za preprečevanje dejanj, ki bi uničila povezave med tabelami. FOREIGN KEY (slo. Tuji ključ) je polje v eni tabeli, ki se nanaša na PRIMARY KEY (slo. Primarni ključ) v drugi tabeli. Tabela s FOREIGN KEY (tujim ključem) se imenuje podrejena tabela, tabela s PRIMARY KEY (primarnim ključem) pa referenčna ali nadrejena tabela. Najprej si bomo izdelali PRIMARY KEY tabelo z imenom stranke, ki mora vsebovati UNIQUE vrednosti in ne sme vsebovati NULL vrednosti.

CREATE TABLE stranke (
    id INT PRIMARY KEY AUTO_INCREMENT UNIQUE NOT NULL,
    ime VARCHAR(50),
    priimek VARCHAR(100)
);
    
FOREIGN KEY 1
FOREIGN KEY 1

V tabelo vnesemo nekaj podatkov:

INSERT INTO stranke (ime, priimek)
VALUES ('Janko', 'Kupec'),
       ('Metka', 'Nabava'),
       ('Peter', 'Kadilec'),
       ('Borut', 'Oglednik'),
       ('Barbara', 'Zapravljivka');
    
FOREIGN KEY 2
FOREIGN KEY 2

Poglejmo, kaj smo vpisali:

SELECT * FROM stranke;
    
FOREIGN KEY 3
FOREIGN KEY 3

V naslednjem primeru bomo naredili povezavo meda tabelama stranke in transakcije prek id tabele stranke. Naredimo tabelo transakcije in tretji stolpec bo vseboval zaporedno številko tabele stranke, kateri bomo dodali FOREIGN KEY

CREATE TABLE transakcije (
    id_transakcije INT PRIMARY KEY AUTO_INCREMENT,
    vsota DECIMAL(5, 2),
    id INT,
    FOREIGN KEY (id) REFERENCES stranke(id)
);
    
FOREIGN KEY 4
FOREIGN KEY 4

V to pravkar narejeno tabelo bomo vpisali podatke, koliko je določena stranka zapravila.

INSERT INTO transakcije (vsota, id)
VALUES
    (199.45, 5),
    (1122.99, 3),
    (45.97, 1),
    (9.99, 4),
    (27.99, 2);
    
FOREIGN KEY 5
FOREIGN KEY 5

Preverimo v transakcijah, kaj smo vpisali in kaj dobimo izpisano:

SELECT * FROM transakcije;
    
FOREIGN KEY 6
FOREIGN KEY 6

Vse, kar smo napisali sedaj je v redu in razumljivo, ampak ni nam še čisto jasno, kaj FOREIGN KEY sploh predstavlja, vemo pa za PRIMARY KEY. Prednost tujega ključa (ang. FOREIGN KEY) je v tem, da imamo narejeno povezavo med tabelama stranke in transakcije. MySQL bo preprečil kakršna koli dejanja, ki bi uničila to povezavo med njima, razen če eksplicitno izbrišemo ta tuji ključ (ang. FOREIGN KEY). V naslednjem primeru bomo izbrisali stranko z zaporedno številko (id) 5.

DELETE FROM stranke
WHERE id = 5;
    
FOREIGN KEY 7
FOREIGN KEY 7

Kot vidimo se je res ne da izbrisati, dobimo napako:

[2024-05-31 20:00:45] [23000][1451] (conn=22) Cannot delete or update a parent row: a foreign key constraint fails (`baza_podatkov`.`transakcije`, CONSTRAINT `transakcije_ibfk_1` FOREIGN KEY (`id`) REFERENCES `stranke` (`id`))
(slo. [2024-05-31 20:00:45] [23000][1451] (conn=22) Nadrejene vrstice ni mogoče izbrisati ali posodobiti: omejitev tujega ključa ne deluje (`baza_podatkov`.`transakcije`, CONSTRAINT `transakcije_ibfk_1` FOREIGN KEY (`id`) REFERENCES `stranke` (`id`))

To je omejitev (ang. CONSTRAINTS) tujega ključa (ang. FOREIGN KEY), ključ (PRIMARY KEY) iz ene tabele, je prav tako najden v drugi tabeli, ampak ko delamo z drugo tabelo, ta ključ imenujemo tuji ključ (ang. FOREIGN KEY).

FOREIGN KEY lahko tudi izbrišemo, in sicer v tabeli, ki FOREIGN KEY vsebuje:

ALTER TABLE transakcije
DROP FOREIGN KEY transakcije_ibfk_1;
    
FOREIGN KEY 8
FOREIGN KEY 8

In ko pritisnemo na Execute (slo. Izvedi) bo FOREIGN KEY izginil.

FOREIGN KEY 9
FOREIGN KEY 9

Poglejmo si še zadnji primer, kjer bomo FOREIGN KEY dodali v tabelo. Pri dodajanju tujega ključa (ang. FOREIGN KEY) tabeli, ime lahko spremenimo (ni obvezno), kjer uporabimo stavek CONSTRAINT.

ALTER TABLE transakcije
ADD CONSTRAINT tk_id_stranke
FOREIGN KEY (id) REFERENCES stranke(id);
    
FOREIGN KEY 10
FOREIGN KEY 10

Hvala za obisk! Dodajam politiko zasebnosti.

© 2024 Vse pravice pridržane.

Donirajte preko PayPal ADMIN