Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Bazy danych

W tabeli uczniowie zdefiniowano klucz obcy

FOREIGN KEY (klasa_id) REFERENCES klasy (id)
Oznacza to, że
A. kolumna klasa_id jest kluczem głównym tabeli uczniowie.
Źle. klasa_id powtarza się u uczniów jednej klasy, więc nie identyfikuje ucznia. Klucz główny definiuje PRIMARY KEY.
B. każda wartość kolumny klasa_id, inna niż NULL, musi występować w kolumnie id tabeli klasy.
Dobrze. Klucz obcy wymaga, by każda wartość klasa_id inna niż NULL istniała jako id w tabeli klasy.
C. usunięcie ucznia automatycznie usuwa jego klasę z tabeli klasy.
Źle. Klucz obcy domyślnie niczego nie usuwa, a ON DELETE CASCADE działa od klasy do uczniów, nie odwrotnie.
D. tabela klasy musi mieć kolumnę o nazwie klasa_id.
Źle. W tabeli klasy musi istnieć kolumna podana po REFERENCES, czyli id. Nazwy nie muszą być zgodne.

Klucz obcy łączy kolumnę jednej tabeli z kolumną innej. Zapis FOREIGN KEY (klasa_id) REFERENCES klasy (id) mówi: kolumna klasa_id w tabeli uczniowie wskazuje na kolumnę id w tabeli klasy. Baza pilnuje integralności referencyjnej, więc nie pozwoli zapisać ucznia z numerem klasy, której nie ma.

Próba INSERT INTO uczniowie (nazwisko, klasa_id) VALUES ('Nowak', 99); przy braku klasy o id 99 zakończy się błędem. Wartość NULL jest dozwolona, jeśli kolumna jej nie zabrania, i oznacza ucznia bez przypisanej klasy. Taki układ to relacja jeden do wielu: jedna klasa, wielu uczniów. Kolumna wskazywana, tutaj klasy.id, musi być kluczem głównym albo mieć indeks unikalny.

Błędne odpowiedzi mylą role kolumn albo przypisują kluczowi obcemu działania, których nie wykonuje. Klucz główny tabeli uczniowie to osobna kolumna, np. id ucznia, zdefiniowana przez PRIMARY KEY. klasa_id nie identyfikuje ucznia, bo w jednej klasie jest wielu uczniów z tą samą wartością.

Nazwy kolumn po obu stronach nie muszą być takie same. W nawiasie po REFERENCES stoi nazwa kolumny w tabeli klasy, czyli id, i tylko ona musi tam istnieć. Zgodny musi być typ danych, nie nazwa.

Klucz obcy domyślnie niczego nie usuwa. Kasowanie powiązanych rekordów włącza się jawnie przez ON DELETE CASCADE, i to w odwrotnym kierunku: usunięcie klasy mogłoby usunąć jej uczniów. Usunięcie ucznia nigdy nie usuwa klasy, w której jest wielu innych uczniów.

Czytaj zapis od lewej: kolumna w nawiasie należy do tabeli bieżącej, a po REFERENCES stoi tabela nadrzędna.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.