Klucze obce to najlepszy sposób na zapewnienie referencyjnej integralności bazy danych. Unikanie kaskad z powodu bycia magicznym jest jak pisanie wszystkiego w asemblerze, ponieważ nie ufasz magii stojącej za kompilatorami.
Złe jest niewłaściwe użycie kluczy obcych, na przykład tworzenie ich wstecz.
Przykład Juana Manuela jest kanonicznym przykładem, jeśli używasz kodu, istnieje znacznie więcej szans na pozostawienie fałszywych elementów DocumentItem w bazie danych, które przyjdą i cię ugryzą.
Aktualizacje kaskadowe są przydatne, na przykład, gdy masz odniesienia do danych przez coś, co może się zmienić, powiedzmy, że kluczem podstawowym tabeli użytkowników jest kombinacja nazwy i nazwiska. Następnie chcesz, aby zmiany w tej kombinacji były propagowane wszędzie tam, gdzie się do nich odnoszą.
@Aidan, Ta przejrzystość, do której się odnosisz, wiąże się z wysokimi kosztami, szansą pozostawienia fałszywych danych w Twojej bazie danych, która nie jest mała . Dla mnie to zwykle brak znajomości DB i niemożność znalezienia, które FK są na miejscu przed rozpoczęciem pracy z DB, wywołują ten strach. Albo to, albo ciągłe nadużywanie kaskady, używanie jej tam, gdzie byty nie były konceptualnie powiązane, albo gdzie trzeba zachować historię.
sql-server
tagu byłoby bardziej przydatne dla społeczności .