Egzekwowałem reguły biznesowe zarówno w mojej warstwie aplikacji (modele), jak iw mojej warstwie bazy danych (procedury składowane, które powodują błędy).Czy reguły biznesowe powinny być egzekwowane zarówno w warstwie aplikacji, jak iw warstwie bazy danych, lub tylko w jednym z dwóch?
Byłem powielania moich walidacji w obu miejscach z kilku powodów:
- Jeżeli warunki zmiany pomiędzy gdy są one sprawdzane w kodzie aplikacji i kiedy są sprawdzane w bazie danych, sprawdzanie reguł biznesowych w bazie danych spowoduje zapisanie dnia. Baza danych pozwala także na blokowanie różnych rekordów w prostszy sposób niż w mój kod aplikacji, więc wydaje się, że jest to naturalne, aby zrobić to tutaj.
- Jeśli mamy zrobić niektórych danych wsadowych wstawienia/aktualizacji do bazy danych bezpośrednio, jeśli trasie I wszystkie te operacje za pośrednictwem moich procedur przechowywanych/funkcji, które robią reguły biznesowej walidacji, nie ma szans na mnie wprowadzanie złych danych, mimo że brakuje mi zabezpieczeń, które dostałbym, gdy robiłem pojedyncze wejście przez aplikację.
- Podczas egzekwowanie tych rzeczy tylko w bazie miałoby ten sam efekt na rzeczywistych danych, wydaje niewłaściwe prostu wyrzucić danych w bazie danych przed pierwszym tworzenia dobrego starań, aby potwierdzić, że jest on zgodny do ograniczenia i reguły biznesowe.
Jaka jest właściwa równowaga?
Jaka jest różnica między egzekwowaniem logiki biznesowej a egzekwowaniem integralności danych? Załóżmy, że mam regułę biznesową, która mówi, że co najwyżej 3 osoby mogą zostać przypisane do przełożonego. Kiedy idę wstawić osobę nr 4, czy to się nie udaje, ponieważ błąd integralności danych ma> 3 osoby na nadzorcę, czy jest to naruszenie reguł biznesowych? Nie blokując rekordu przełożonego przed weryfikacją, że podczas wprowadzania wkładki są co najwyżej 2 osoby pod nadzorem, w jaki sposób kod aplikacji może być w 100% pewny, że ta zasada nie zostanie złamana? –
@Rednerln - tempo zmian. Reguły integralności bazy danych to rzeczy, które prawdopodobnie zostaną uznane za prawdziwe znacznie dłużej niż reguły biznesowe. Twój przykład ludzi do przełożonego, miałbym trudności z uzasadnieniem ograniczenia bazy danych, gdyby tak było, musiałbym opierać się na danych (udf na podstawie ustawień konfiguracyjnych). A jeśli reguła się zmieni, należy zadać pytanie, co zrobić z danymi, które naruszają tę zasadę. Zwykle potrzebujesz reguł bazy danych, które są tylko rozluźnione, niezatwierdzone lub zmienione jakościowo. –
@Rednerln - w sytuacjach multimodalnych chcesz, aby ludzie mogli uderzyć Twoją warstwę dostępu do bazy danych (widoki, być może) za pomocą narzędzi BI lub cokolwiek innego i wiedzieć, że ich założenia są prawidłowe, że baza danych ma spójność i spójność w obwód. –