Sobes.tech
Junior

Jak klucz obcy wpływa na integralność danych w bazie?

sobes.tech AI

Odpowiedź od AI

Klucz obcy (foreign key) zapewnia integralność referencyjną danych, gwarantując, że wartości w kolumnie jednej tabeli (tabela podrzędna) odpowiadają wartościom w kolumnie innej tabeli (tabela nadrzędna).

Wpływ na integralność danych:

  1. Zabrania dodawania rekordów w tabeli podrzędnej z nieistniejącą wartością w odpowiedniej kolumnie tabeli nadrzędnej. Próba wstawienia wiersza odwołującego się do nieistniejącego rekordu nadrzędnego spowoduje błąd.
  2. Ogranicza usuwanie rekordów z tabeli nadrzędnej, na które odwołują się rekordy w tabeli podrzędnej. Zachowanie przy próbie usunięcia zależy od ustawionej akcji (ON DELETE):
    • RESTRICT (domyślnie): Zabrania usunięcia.
    • CASCADE: Usuwa powiązane rekordy w tabeli podrzędnej.
    • SET NULL: Ustawia wartość NULL w odpowiedniej kolumnie tabeli podrzędnej (jeśli kolumna na to pozwala).
    • NO ACTION: Podobnie jak RESTRICT przy standardowej kontroli, ale może się różnić podczas wykonywania.
  3. Ogranicza aktualizację rekordów w tabeli nadrzędnej. Zachowanie przy próbie aktualizacji zależy również od ustawionej akcji (ON UPDATE):
    • RESTRICT (domyślnie): Zabrania aktualizacji.
    • CASCADE: Aktualizuje odpowiednią wartość w powiązanych rekordach tabeli podrzędnej.
    • SET NULL: Ustawia wartość NULL w odpowiedniej kolumnie tabeli podrzędnej (jeśli kolumna na to pozwala).
    • NO ACTION: Podobnie jak RESTRICT w standardowej kontroli, ale może się różnić podczas wykonywania.

Klucz obcy pomaga zapobiec pojawianiu się "sierocych" rekordów i gwarantuje, że relacje między tabelami pozostają poprawne.