Klucze podstawowe i obce w MySQL
W relacyjnych bazach danych, takich jak MySQL, klucze odgrywają kluczową rolę w zapewnianiu integralności i spójności danych. Dwa najważniejsze typy kluczy to klucz podstawowy i klucz obcy. Zrozumienie ich funkcji oraz sposobu implementacji jest niezbędne dla efektywnego projektowania baz danych.
Klucz podstawowy to kolumna lub zestaw kolumn w tabeli, które jednoznacznie identyfikują każdy rekord. Wartości w kluczu podstawowym muszą być unikalne i nie mogą być puste (NULL). Definiując klucz podstawowy, zapewniamy, że każdy wiersz w tabeli jest unikalny, co ułatwia operacje takie jak wyszukiwanie, aktualizacja czy usuwanie danych.
Przykład:
CREATE TABLE Uczniowie (
id_ucznia INT PRIMARY KEY AUTO_INCREMENT,
imie VARCHAR(50) NOT NULL,
nazwisko VARCHAR(50) NOT NULL
)
W powyższym przykładzie kolumna id_ucznia
jest kluczem podstawowym tabeli Uczniowie
. Dzięki temu każdy uczeń ma unikalny identyfikator, co zapobiega duplikacji danych.
Klucz obcy (FOREIGN KEY)
Klucz obcy to kolumna lub zestaw kolumn w jednej tabeli, które odwołują się do klucza podstawowego w innej tabeli. Klucze obce tworzą relacje między tabelami, co pozwala na powiązanie danych i zapewnienie ich spójności. Dzięki temu możemy modelować zależności między różnymi encjami w bazie danych.
Przykład:
CREATE TABLE Zamowienia (
id_zamowienia INT PRIMARY KEY AUTO_INCREMENT,
data_zamowienia DATE NOT NULL,
id_klienta INT,
FOREIGN KEY (id_klienta) REFERENCES Klienci(id_klienta)
)
W tym przypadku kolumna id_klienta
w tabeli Zamowienia
jest kluczem obcym, który odwołuje się do kolumny id_klienta
w tabeli Klienci
. Zapewnia to, że każde zamówienie jest powiązane z istniejącym klientem, co utrzymuje integralność referencyjną danych.
Relacje między tabelami
Dzięki kluczom obcym możemy definiować różne typy relacji między tabelami:
- Relacja jeden do jednego (1:1): Każdemu rekordowi w jednej tabeli odpowiada dokładnie jeden rekord w innej tabeli. Przykładem może być tabela
Uczniowie
i tabelaAdresy
, gdzie każdy uczeń ma przypisany jeden adres. - Relacja jeden do wielu (1:N): Jeden rekord w tabeli A może być powiązany z wieloma rekordami w tabeli B, ale każdy rekord w tabeli B jest powiązany z jednym rekordem w tabeli A. Na przykład, jeden klient może mieć wiele zamówień, ale każde zamówienie jest przypisane do jednego klienta.
- Relacja wiele do wielu (N:M): Rekordy w tabeli A mogą być powiązane z wieloma rekordami w tabeli B i odwrotnie. Aby zaimplementować taką relację, tworzy się tabelę pośredniczącą zawierającą klucze obce odwołujące się do obu tabel. Przykładem może być relacja między tabelami
Studenci
iKursy
, gdzie jeden student może uczestniczyć w wielu kursach, a jeden kurs może być realizowany przez wielu studentów.
Definiowanie kluczy obcych w MySQL
Klucze obce można definiować podczas tworzenia tabeli lub dodawać je później za pomocą instrukcji ALTER TABLE
.
Przykład podczas tworzenia tabeli:
CREATE TABLE Zamowienia (
id_zamowienia INT PRIMARY KEY AUTO_INCREMENT,
data_zamowienia DATE NOT NULL,
id_klienta INT,
FOREIGN KEY (id_klienta) REFERENCES Klienci(id_klienta)
)
Przykład z użyciem ALTER TABLE
:
ALTER TABLE Zamowienia
ADD CONSTRAINT fk_klient
FOREIGN KEY (id_klienta) REFERENCES Klienci(id_klienta)
Zalety stosowania kluczy obcych
Stosowanie kluczy obcych w bazach danych MySQL przynosi wiele korzyści:
- Integralność danych: Klucze obce wymuszają, aby wartości w kolumnie klucza obcego istniały w tabeli referencyjnej, co zapobiega wprowadzaniu nieprawidłowych danych.
- Łatwość nawigacji: Dzięki zdefiniowanym relacjom między