Cześć,
próbuje stworzyć bazę danych która w połączeniu z gui będzie odpowiedzialna za przetrzymywanie informacji o schronisku. Potrzebuję dodać logikę (nie mogę przyjąć do schroniska kolejnego psa/kota,jeżeli nie ma już miejsc). Dodatkowo, informacje o statusie (ilość karmy,wody,pozostałych miejsc) ma być wysyłana na dany email codziennie o X godzinie. W jaki sposób mogę to zrobić?
Moim zdaniem dodawanie logiki do bazy danych na dłuższą metę nie jest dobrym pomysłem. Baza danych ma przechowywać dane, a logiką powinna się zajmować aplikacja. Zaawansowane mechanizmy dostępne w silnikach bazodanowych mają służyć utrzymywania integralności danych i nic więcej.
Jeżeli dodałbyś logikę do bazy, to potem się nie połapiesz co gdzie jest realizowane. Dodatkowo błąd z bazy danych dla mnie oznacza błąd aplikacji/konfiguracji bazy, więc zawsze jest obsługiwane tak samo. U Ciebie część z błędów byłyby normalne (brak miejsc). Obsługa błędów z czasem stanie się koszmarem, bo przykładowo część będziesz chciał wyświetlić użytkownikowi, a część nie.
Potwierdzam to o czym mówił @Sarrus Sam mam do czynienia w pracy z systemem gdzie dzieje się wielka magia na wyzwalaczach. Niektóre z nich są tak zamotane, że ciężko jest szybko dojść co do czego. Co prawda nie ja go konserwuję, ale czasem coś trzeba przeanalizować i to koszmar. Ja co prawda u siebie mam kilka wyzwalaczy, ale one są one proste i wykonują jedynie operację skopiowania rekordu w niektórych przypadkach do oddzielnej tabeli.
Trrigerów nie używa się do pisania logiki aplikacji. Od tego są funkcje i procedury bazodanowe, ewentualnie pakiety jeżeli używasz bazy Oracle.
Slayer22 napisał(a):
Trrigerów nie używa się do pisania logiki aplikacji. Od tego są funkcje i procedury bazodanowe, ewentualnie pakiety jeżeli używasz bazy Oracle.
@Mr.YaHooo dokładnie, równie dobrze można by narzekać że w Javie ktoś zaimplementował logikę w aspektach/interceptorach
student pro napisał(a):
Slayer22 napisał(a):
Trrigerów nie używa się do pisania logiki aplikacji. Od tego są funkcje i procedury bazodanowe, ewentualnie pakiety jeżeli używasz bazy Oracle.
@Mr.YaHooo dokładnie, równie dobrze można by narzekać że w Javie ktoś zaimplementował logikę w aspektach/interceptorach
Nie narzekam :) Pracowałem kiedyś z systemem gdzie logika była zaszyta na trrigerach i była to masakra, dochodziły mutacje i problem ze zmianą danych tak aby niektóre pola w tabeli się nie przeliczały. Zresztą @Clod11 pisał, że będzie to nowa baza danych a napisałem aby trigerrów nie używać do pisania logiki...