Klucz obcy definiuje relację rodzic - dziecko między dwiema tabelami. Kluczem podstawowym w tabeli nadrzędnej jest klucz obcy w maksymalnie n wierszach tabeli podrzędnej.
Teraz, jeśli ten klucz podstawowy w tabeli nadrzędnej otrzymuje UPDATE, uruchamia się UPDATE RULE. Albo wszystkie wiersze podrzędne są również aktualizowane, ustawiane na NULL lub cokolwiek innego. Najlepszą praktyką jest jednak posiadanie klucza podstawowego, który NIGDY się nie zmienia (stały identyfikator lub coś takiego), więc jest to mniej ważna zasada.
Ważniejsza jest reguła DELETE – co jeśli wiersz nadrzędny zostanie usunięty (np. Zlecenie zostanie usunięte)? Możesz również usunąć wszystkie wiersze podrzędne (wszystkie pozycje zamówienia) za pomocą polecenia CASCADE DELETE lub ustawić ich klucz obcy na NULL (nie mają już rodzica) – to całkowicie zależy od Twojego konkretnego scenariusza.
W scenariuszu Zamówienie/wiersze zamówienia może być całkowicie przydatne usunięcie wierszy zamówienia po usunięciu całego zamówienia, ale prawdopodobnie nie chcesz usuwać produktu tylko dlatego, że zamówienie, które się do niego odwołuje, zostało usunięte — nie ma jedna PRAWIDŁOWA odpowiedź - zależy to od Twojego scenariusza i Twojej aplikacji.
Marek