REFERENCES to klauzula SQL używana przy definiowaniu klucza obcego. Służy do wskazania, z którą tabelą i którą kolumną ma być powiązana dana kolumna w tabeli podrzędnej.
W MySQL klauzula REFERENCES jest najczęściej częścią definicji ograniczenia FOREIGN KEY. Dzięki niej baza danych pilnuje, aby w tabeli podrzędnej nie pojawiła się wartość, która nie istnieje w tabeli nadrzędnej.
Przykład relacji
Tabela klienci przechowuje klientów, a tabela zamowienia przechowuje ich zamówienia. Jedno zamówienie należy do jednego klienta, więc kolumna id_klienta w tabeli zamowienia powinna wskazywać na id w tabeli klienci.
CREATE TABLE klienci (
id INT PRIMARY KEY,
imie VARCHAR(50)
);
CREATE TABLE zamowienia (
id INT PRIMARY KEY,
id_klienta INT,
FOREIGN KEY (id_klienta) REFERENCES klienci(id)
);
W tym przykładzie fragment:
REFERENCES klienci(id)
oznacza, że wartości w kolumnie zamowienia.id_klienta muszą istnieć w kolumnie klienci.id.
Po co stosuje się REFERENCES?
- do określania powiązań między tabelami,
- do tworzenia relacji, np. jeden-do-wielu,
- do ochrony spójności danych,
- do zapobiegania wpisaniu nieistniejącego identyfikatora,
- do definiowania kluczy obcych.
Ważne na egzaminie
Jeśli pytanie brzmi: „Która klauzula określa powiązania między tabelami?”, poprawną odpowiedzią jest REFERENCES.
Nie należy mylić jej z:
PRIMARY KEY— definiuje klucz główny tabeli,INDEX— tworzy indeks przyspieszający wyszukiwanie,ORDER BY— sortuje wyniki zapytania.