KWALIFIKACJA INF3 - TEST WIEDZY NR 3

PYTANIE NR 30.
Pracujesz na bazie danych, która zawiera wiele tabel. Chcesz usunąć jedną z tych tabel, ale nie jesteś pewien, czy jest ona używana przez inne tabele jako klucz obcy. Co powinieneś zrobić, aby uniknąć problemów z integralnością danych?
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Przed usunięciem tabeli trzeba sprawdzić, czy inne tabele nie wskazują na nią kluczem obcym.
Jeśli istnieją zależności referencyjne, usunięcie tabeli może zostać zablokowane przez constrainty albo spowodować błędy w aplikacji. Weryfikacja użycia jako FK pozwala zaplanować bezpieczne usunięcie.

Pełne wyjaśnienie:

W relacyjnej bazie danych tabele są często połączone zależnościami klucza obcego (FOREIGN KEY). Klucz obcy wymusza integralność referencyjną, czyli to, że wartości w kolumnie odwołującej się muszą wskazywać na istniejący wiersz w tabeli nadrzędnej.

Dlatego przed usunięciem tabeli należy ustalić, czy jest ona tabelą nadrzędną dla innych tabel (czyli czy inne tabele mają do niej FK). Jeśli tak, operacja usunięcia może:

  • zostać odrzucona przez system bazy danych z powodu istniejących ograniczeń,
  • albo (w zależności od konfiguracji) wymagać wcześniejszego usunięcia/zmiany constraintów lub danych,
  • spowodować awarie logiki aplikacji, która zakłada istnienie tej tabeli i jej relacji.

Odpowiedź "Sprawdzić, czy tabela jest używana jako klucz obcy w innych tabelach, a następnie usunąć." jest poprawna, bo opisuje właściwą kolejność: najpierw analiza zależności, potem dopiero zmiana schematu.

Opcja "Usunąć tabelę bez sprawdzania." jest ryzykowna: w praktyce często kończy się błędem wykonania (DROP TABLE nie przejdzie) albo problemami z integralnością i działaniem aplikacji.

Opcja "Usunąć wszystkie tabele, a następnie odtworzyć je bez tej tabeli." jest nieadekwatna: to działanie skrajne, grozi utratą danych i nie jest standardową praktyką administracyjną.

Opcja "Zmienić strukturę tabeli, aby nie była używana jako klucz obcy." jest myląca: to nie tabela nadrzędna "jest używana jako FK", tylko inne tabele mają klucze obce wskazujące na nią. Aby rozwiązać problem, zwykle modyfikuje się constrainty w tabelach zależnych lub plan migracji, a nie "ukrywa" tabelę zmianą jej struktury.

Wskazówka egzaminacyjna: przy pytaniach o usuwanie obiektów w bazie szukaj odpowiedzi, która uwzględnia zależności (FK) i integralność, a nie najszybszą operację.

Dodatkowe pytania

Dodatkowe pytania (FAQ):

Klucz obcy (FOREIGN KEY) to ograniczenie, które łączy rekordy dwóch tabel.

Wymaga, aby wartość w kolumnie odwołującej się istniała w tabeli nadrzędnej (np. zamówienie wskazuje istniejącego klienta). Dzięki temu baza chroni spójność danych.

Często nie da się usunąć tabeli, bo inne tabele mają do niej klucze obce lub inne zależności.

DBMS blokuje operację, aby nie powstały "osierocone" rekordy. Najpierw trzeba sprawdzić zależności i zaplanować usunięcie constraintów albo danych zależnych.

Najpewniej sprawdza się to w metadanych bazy: w narzędziu administracyjnym (np. widok relacji) albo przez zapytania do katalogu systemowego.

W praktyce szuka się constraintów typu FOREIGN KEY, które wskazują na tę tabelę jako tabelę nadrzędną.

Ryzykujesz błąd wykonania (DROP TABLE zostanie zablokowane) albo awarie aplikacji, która korzysta z tej tabeli.

Jeśli zależności zostały wcześniej usunięte niepoprawnie, możesz doprowadzić do niespójnych danych i trudnych do naprawy problemów w raportach i logice biznesowej.

Nie. Klucz obcy znajduje się w tabeli zależnej, a nie w tabeli nadrzędnej.

To inne tabele mają kolumny i constrainty wskazujące na tabelę, którą chcesz usunąć. Trzeba więc analizować i modyfikować zależne constrainty lub przebudować relację.

Gdy tabela ma być usunięta, a inne tabele nadal pozostają w schemacie.

Wtedy najpierw usuwa się lub zmienia constrainty FOREIGN KEY (oraz ewentualnie dane), a dopiero potem usuwa tabelę. Kolejność działań jest kluczowa w migracjach i wdrożeniach.

Częsty błąd to wybór odpowiedzi "najszybszej", np. usunięcie bez sprawdzania.

Uczniowie mylą też kierunek relacji: myślą, że to tabela nadrzędna "ma klucz obcy". Warto pamiętać: FK jest w tabeli zależnej i wskazuje na tabelę nadrzędną.

Integralność referencyjna oznacza, że powiązania między tabelami są spójne.

Jeżeli rekord w tabeli zależnej wskazuje na rekord w tabeli nadrzędnej, to ten rekord nadrzędny musi istnieć. Mechanizm ten realizują constrainty, m.in. FOREIGN KEY.

Tak, ale wymaga to planu: sprawdzenia zależności (FK), analizy użycia w kodzie oraz przygotowania migracji.

W praktyce robi się to etapami (np. najpierw usunięcie odwołań, potem dopiero DROP). Warto też mieć kopię i możliwość rollbacku.

Ćwicz na przykładach: identyfikuj tabele nadrzędne i zależne, wskazuj klucze główne i obce, a potem analizuj skutki operacji typu DROP/ALTER.

Dobrą metodą jest rysowanie diagramu relacji i tłumaczenie "kto na kogo wskazuje" własnymi słowami.

info

To pytanie poprawnie rozwiązuje 41% zdających egzamin. trudne

Według specjalistów z branży: "Weryfikacja użycia jako FK pozwala zaplanować bezpieczne usunięcie."

Źródła:

  • PostgreSQL Documentation: "ALTER TABLE" (sekcja o FOREIGN KEY constraints i integralności referencyjnej) - https://www.postgresql.org/docs/current/sql-altertable.html - accessed 2026-03-01
  • PostgreSQL Documentation: "DROP TABLE" (zachowanie przy zależnościach i ograniczeniach) - https://www.postgresql.org/docs/current/sql-droptable.html - accessed 2026-03-01
  • MySQL 8.0 Reference Manual: "FOREIGN KEY Constraints" - https://dev.mysql.com/doc/refman/8.0/en/create-table-foreign-keys.html - accessed 2026-03-01

Materiały:

  • Dokumentacja DBMS używanego na zajęciach (sekcje o FOREIGN KEY i DROP TABLE)
  • Materiały o projektowaniu relacyjnych baz danych i normalizacji
  • Ćwiczenia z analizą schematu: wyszukiwanie zależności FK w katalogu systemowym

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego