Większe pytanie brzmi: czy prowadziłbyś z zasłoniętymi oczami? Tak to jest, jeśli opracujesz system bez ograniczeń referencyjnych. Należy pamiętać, że zmieniają się wymagania biznesowe, zmiany w projekcie aplikacji, odpowiednie logiczne założenia w kodzie, sama logika może być refaktoryzowana i tak dalej. Ogólnie rzecz biorąc, ograniczenia w bazach danych są wprowadzane przy współczesnych logicznych założeniach, które wydają się poprawne dla określonego zestawu logicznych twierdzeń i założeń.
W całym cyklu życia aplikacji ograniczenia referencyjne i kontrole danych ograniczają zbieranie danych policyjnych przez aplikację, szczególnie gdy nowe wymagania powodują logiczne zmiany aplikacji.
Tematu tego wykazu - klucz obcy sam w sobie nie „poprawia wydajności”, ani nie „znacząco obniża wydajności” z punktu widzenia systemu przetwarzania transakcji w czasie rzeczywistym. Istnieje jednak zagregowany koszt kontroli ograniczeń w systemie „partii” o dużej objętości. Oto różnica między procesem transakcji w czasie rzeczywistym a partią; przetwarzanie wsadowe - w przypadku gdy zsumowany koszt, ponoszony przez kontrole ograniczenia, kolejno przetwarzanego wsadu stanowi pogorszenie wydajności.
W dobrze zaprojektowanym systemie kontrole spójności danych byłyby przeprowadzane „przed” przetworzeniem partii (jednak wiążą się tu również koszty); dlatego sprawdzanie ograniczeń klucza obcego nie jest wymagane w czasie ładowania. W rzeczywistości wszystkie ograniczenia, w tym klucz obcy, powinny zostać tymczasowo wyłączone do czasu przetworzenia partii.
WYKONANIE QUERY - jeśli tabele są połączone na kluczach obcych, należy pamiętać, że kolumny kluczy obcych NIE SĄ INDEKSOWANE (chociaż odpowiedni klucz główny jest indeksowany z definicji). W tym przypadku indeksowanie klucza obcego, indeksowanie dowolnego klucza i łączenie tabel w indeksowanym pomaga w lepszej wydajności, a nie przez przyłączanie się do nieindeksowanego klucza z ograniczeniem klucza obcego.
Zmiana tematów , jeśli baza danych obsługuje tylko wyświetlanie / renderowanie zawartości witryny itp. I rejestrowanie kliknięć, wówczas baza danych z pełnymi ograniczeniami na wszystkich tabelach jest nadmiernie zabijana dla takich celów. Pomyśl o tym. Większość stron internetowych nawet nie używa do tego bazy danych. W przypadku podobnych wymagań, w których dane są właśnie rejestrowane i nie są przywoływane, powiedzmy, użyj bazy danych w pamięci, która nie ma ograniczeń. Nie oznacza to, że nie ma modelu danych, tak modelu logicznego, ale nie ma fizycznego modelu danych.