Klucze główne, obce i ograniczenia
Wyjaśnianie kluczy, unikatowości i integralności referencyjnej w sposób oczekiwany przez rekrutera
Klucze główne, obce i ograniczenia to bezpłatna lekcja SQL Interview Prep na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej SQL Interview Prep, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs SQL Interview Prep zawiera 4 lekcji w sumie.
Dlaczego temat kluczy zawsze się pojawia
Po zdefiniowaniu SQL osoby prowadzące rozmowę kwalifikacyjną przechodzą do kluczy i ograniczeń. Łączy je temat integralności: reguł egzekwowanych przez bazę danych, które uniemożliwiają wprowadzenie nieprawidłowych danych.
Czym jest klucz główny
Klucz główny jednoznacznie identyfikuje każdy wiersz. Zawsze jest unikalny i ma wartość NOT NULL, a tabela może mieć najwyżej jeden taki klucz. Warto sformułować tę odpowiedź jasno.
CREATE TABLE customers (
id INTEGER PRIMARY KEY,
email VARCHAR(255) NOT NULL,
name VARCHAR(100)
);Klucze naturalne a zastępcze
Rzeczywiste dane czy wygenerowany numer? Klucz naturalny wykorzystuje istniejące, unikalne dane, natomiast klucz zastępczy jest wygenerowanym identyfikatorem. Większość zespołów preferuje klucze zastępcze, ponieważ są stabilne.
Złożone klucze główne
Klucz główny może obejmować więcej niż jedną kolumnę — jest wtedy kluczem złożonym. Można je spotkać w tabelach łącznikowych, w których dwa klucze obce wspólnie identyfikują każdy wiersz.
CREATE TABLE enrollments (
student_id INTEGER,
course_id INTEGER,
enrolled_on DATE,
PRIMARY KEY (student_id, course_id)
);Klucz główny a ograniczenie unikalności
To częste pytanie: klucz główny a ograniczenie unikalności. Oba zapewniają unikalność, ale tabela ma jeden klucz główny, który nie może mieć wartości NULL, oraz wiele ograniczeń unikalności, z których każde dopuszcza wartość NULL.
CREATE TABLE users (
id INTEGER PRIMARY KEY,
email VARCHAR(255) UNIQUE,
username VARCHAR(50) UNIQUE
);Czym jest klucz obcy
Klucz obcy odwołuje się do klucza głównego innej tabeli, zapewniając integralność referencyjną: nie można dodać wiersza podrzędnego wskazującego na nieistniejący wiersz nadrzędny.
CREATE TABLE orders (
id INTEGER PRIMARY KEY,
customer_id INTEGER REFERENCES customers(id),
amount NUMERIC(10,2)
);Działania referencyjne: ON DELETE / ON UPDATE
„Co stanie się z zamówieniami po usunięciu klienta?” To właśnie określa działanie referencyjne: RESTRICT blokuje operację (jest to ustawienie domyślne), CASCADE usuwa elementy podrzędne, a SET NULL czyści klucz.
CREATE TABLE order_items (
id INTEGER PRIMARY KEY,
order_id INTEGER REFERENCES orders(id) ON DELETE CASCADE
);NOT NULL, CHECK i DEFAULT
Trzy kolejne ograniczenia dopełniają mechanizmy integralności: NOT NULL zabrania brakujących wartości, CHECK egzekwuje regułę taką jak stock >= 0, a DEFAULT dostarcza wartość zastępczą.
CREATE TABLE products (
id INTEGER PRIMARY KEY,
price NUMERIC(10,2) NOT NULL DEFAULT 0,
stock INTEGER CHECK (stock >= 0)
);Przykład: Projektowanie z zachowaniem integralności
Zaprojektujmy tabelę wypożyczeń w bibliotece. Poniższy kod wykorzystuje dwa klucze obce, niepustą datę zwrotu oraz unikalną regułę, dzięki której tej samej książki nie można wypożyczyć jednocześnie dwóm osobom.
CREATE TABLE loans (
id INTEGER PRIMARY KEY,
book_id INTEGER NOT NULL REFERENCES books(id),
member_id INTEGER NOT NULL REFERENCES members(id),
due_date DATE NOT NULL,
returned BOOLEAN DEFAULT false
);Jak mówić o integralności
Aby pokazać szerszą wiedzę, warto wymienić trzy rodzaje integralności: integralność encji wynikającą z kluczy głównych, integralność referencyjną wynikającą z kluczy obcych oraz integralność dziedzinową zapewnianą przez NOT NULL, CHECK i typy danych.
Dodawanie ograniczeń do istniejącej tabeli
Jeśli trzeba dodać ograniczenia do istniejącej tabeli, należy użyć ALTER TABLE ... ADD CONSTRAINT. Warto zwrócić uwagę na subtelny szczegół: operacja może się nie powieść, jeśli istniejące wiersze już naruszają nową regułę.
ALTER TABLE orders
ADD CONSTRAINT fk_orders_customer
FOREIGN KEY (customer_id) REFERENCES customers(id);Szybki test
Rozróżnij klucz główny od ograniczenia unikalności.
Podsumowanie
Podsumowanie: klucz główny jest unikalny i ma wartość NOT NULL, w tabeli występuje jeden; ograniczenie unikalności dopuszcza wartość NULL i może ich być wiele; klucz obcy zapewnia integralność referencyjną.
Często zadawane pytania
Czy lekcja „Klucze główne, obce i ograniczenia” jest bezpłatna?
Tak — pełny tekst „Klucze główne, obce i ograniczenia” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu SQL Interview Prep, przejdź na CoddyKit PRO. Kurs SQL Interview Prep zawiera 4 lekcji w sumie.
Co nauczysz się w „Klucze główne, obce i ograniczenia”?
Wyjaśnianie kluczy, unikatowości i integralności referencyjnej w sposób oczekiwany przez rekrutera Ćwiczysz SQL Interview Prep z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć SQL Interview Prep?
Nie wymagamy żadnego doświadczenia. SQL Interview Prep w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Klucze główne, obce i ograniczenia”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji SQL Interview Prep?
Tak. Każda lekcja SQL Interview Prep zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Czym jest SQL i dlaczego rekruterzy o niego pytają
- Logiczna kolejność wykonywania zapytania
- Klucze główne, obce i ograniczenia
- Odczytywanie schematu pod presją