Serwisanci dostępni teraz · czynne całą dobę, także w weekendy i świętaWarszawa i okolice · dojazd bezpłatny
Darmowa diagnoza laptopa
Darmowa diagnoza laptopa
Dojazd do klienta bezpłatnie
Dojazd do klienta bezpłatnie
Laptopy zastępcze bezpłatnie
Laptopy zastępcze bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie

Klucz obcy

Termin Definicja
Klucz obcy

Klucz obcy to ograniczenie wymuszające, aby wartość w kolumnie odpowiadała istniejącemu rekordowi w powiązanej tabeli.

Jak działa klucz obcy w relacyjnej bazie danych

Klucz obcy (ang. foreign key) jest ograniczeniem integralności referencyjnej w relacyjnej bazie danych. Łączy kolumnę albo zestaw kolumn w jednej tabeli z kluczem głównym lub innym kluczem objętym ograniczeniem unikalności w tabeli powiązanej. Wartość zapisana po stronie klucza obcego musi odpowiadać istniejącej wartości po stronie referencji, chyba że kolumna dopuszcza wartość NULL. Dzięki temu baza może kontrolować, czy relacja między rekordami wskazuje na rzeczywiście istniejące dane.

Przykładem jest tabela zamowienia zawierająca kolumnę klient_id oraz tabela klienci z kluczem głównym id. Klucz obcy zamowienia.klient_id wskazuje wtedy na klienci.id. Próba dodania zamówienia z identyfikatorem klienta, którego nie ma w tabeli klienci, powinna zostać odrzucona przez silnik bazy danych. Relacja nie przechowuje kopii całego rekordu klienta, lecz zapisuje informację, który rekord z drugiej tabeli jest powiązany.

Integralność referencyjna a operacje na rekordach

Klucz obcy kontroluje nie tylko dodawanie nowych wierszy. Ma również znaczenie podczas modyfikowania wartości identyfikatora oraz usuwania rekordu, do którego odwołują się inne tabele. Jeżeli tabela pozycje_zamowien wskazuje na tabelę zamowienia, usunięcie zamówienia może zostać zablokowane, ponieważ pozostawiłoby osierocone pozycje. Takie zachowanie chroni spójność danych i wymusza zachowanie prawidłowej kolejności operacji.

Sposób reakcji na zmianę lub usunięcie rekordu określa się przy tworzeniu ograniczenia. Typowa opcja NO ACTION albo RESTRICT uniemożliwia operację, jeśli istnieją zależne rekordy. CASCADE pozwala automatycznie usunąć albo zaktualizować rekordy powiązane. SET NULL ustawia wartość klucza obcego na NULL, ale tylko wtedy, gdy kolumna została zaprojektowana jako opcjonalna. Dobór reguły powinien wynikać z modelu danych, ponieważ kaskadowe usuwanie może zmienić wiele tabel w ramach jednej operacji.

Projektowanie kolumn i relacji między tabelami

Kolumna klucza obcego powinna mieć typ danych zgodny z kolumną, do której się odwołuje. Jeżeli identyfikator nadrzędny jest liczbą całkowitą określonego rodzaju, identyfikator zależny powinien korzystać z odpowiednio zgodnego typu i zakresu. Sama nazwa kolumny nie tworzy relacji. Potrzebne jest jawne ograniczenie zdefiniowane w schemacie bazy danych. W zależności od silnika można utworzyć je podczas definiowania tabeli albo później za pomocą instrukcji ALTER TABLE.

Relacja może obejmować jedną kolumnę lub kilka kolumn tworzących klucz złożony. W drugim przypadku klucz obcy musi wskazywać na odpowiadający mu klucz złożony, a wartości wszystkich kolumn powinny tworzyć istniejącą kombinację. W praktyce projektant powinien rozstrzygnąć, czy powiązanie jest obowiązkowe, czy opcjonalne, czy dopuszczalne są wielokrotne rekordy zależne oraz co ma się wydarzyć po usunięciu danych nadrzędnych. Indeks na kolumnie klucza obcego może poprawić wykonywanie złączeń i sprawdzanie rekordów zależnych, choć sposób indeksowania zależy od silnika oraz charakteru zapytań.

Rozpoznawanie problemów z kluczem obcym

Błąd naruszenia klucza obcego zwykle oznacza, że aplikacja próbuje zapisać odwołanie do nieistniejącego rekordu albo usunąć rekord, który nadal jest używany w tabeli zależnej. Podczas analizy należy sprawdzić kolejność operacji, wartości identyfikatorów, transakcję oraz to, czy rekord nadrzędny został zatwierdzony i jest widoczny w zakresie tej samej operacji. Nie powinno się usuwać ograniczenia wyłącznie po to, aby ukryć błąd zapisu, ponieważ pozwala to powstawać niespójnym danym.

W środowisku użytkownika problem może ujawnić się jako komunikat aplikacji o niemożności zapisania formularza, usunięcia elementu albo zmiany powiązania. Sama obecność takiego komunikatu nie świadczy o uszkodzeniu dysku lub pamięci komputera; przyczyną jest zazwyczaj reguła zapisana w schemacie bazy danych albo błąd logiki aplikacji. Warszawskie Pogotowie Komputerowe wykonuje profesjonalną naprawę laptopów i komputerów PC, w tym diagnostykę problemów z oprogramowaniem działającym na komputerze użytkownika. W przypadku klucza obcego właściwa diagnoza wymaga jednak sprawdzenia schematu, zapytań i logów aplikacji, a nie tylko wymiany podzespołów.

+48 22 100 48 29Zadzwoń teraz · serwisant w 1 godzinę