Przypuszczam, że mówisz o ograniczeniach klucza obcego wymuszanych przez bazę danych . Prawdopodobnie używasz już kluczy obcych, po prostu nie poinformowałeś o tym bazy danych.
Załóżmy, że programista faktycznie robi to już we właściwy sposób, czy naprawdę potrzebujemy koncepcji kluczy obcych?
Teoretycznie nie. Jednak nigdy nie było oprogramowania bez błędów.
Błędy w kodzie aplikacji zwykle nie są tak niebezpieczne - identyfikujesz błąd i naprawiasz go, a następnie aplikacja znów działa płynnie. Ale jeśli błąd pozwala na wejście do bazy danych uszkodzonych danych, utkniesz z tym! Bardzo trudno jest odzyskać uszkodzone dane w bazie danych.
Zastanów się, czy subtelny błąd w FogBugz pozwolił na zapisanie uszkodzonego klucza obcego w bazie danych. Naprawienie błędu i szybkie rozesłanie poprawki do klientów w wydaniu poprawiającym błędy może być łatwe. Jak jednak naprawić uszkodzone dane w dziesiątkach baz danych? Prawidłowy kod może teraz nagle się zepsuć, ponieważ założenia dotyczące integralności kluczy obcych nie są już aktualne.
W aplikacjach internetowych zazwyczaj tylko jeden program komunikuje się z bazą danych, więc jest tylko jedno miejsce, w którym błędy mogą uszkodzić dane. W aplikacji korporacyjnej może istnieć kilka niezależnych aplikacji komunikujących się z tą samą bazą danych (nie wspominając o osobach pracujących bezpośrednio z powłoką bazy danych). Nie ma sposobu, aby mieć pewność, że wszystkie aplikacje działają zgodnie z tymi samymi założeniami bez błędów, zawsze i na zawsze.
Jeśli ograniczenia są zakodowane w bazie danych, najgorsze, co może się zdarzyć z błędami, jest to, że użytkownikowi wyświetla się brzydki komunikat o błędzie dotyczący niespełnienia jakiegoś ograniczenia SQL . Jest to o wiele lepsze niż wpuszczanie uszkodzonych danych do bazy danych przedsiębiorstwa, gdzie z kolei zepsuje wszystkie aplikacje lub po prostu doprowadzi do wszelkiego rodzaju błędnych lub wprowadzających w błąd danych wyjściowych.
Aha, a ograniczenia klucza obcego również poprawiają wydajność, ponieważ są domyślnie indeksowane. Nie przychodzi mi do głowy żaden powód, by nie używać ograniczeń klucza obcego.