• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak stworzyć ''Poziomy'' w Bazie Danych

Object Storage Arubacloud
0 głosów
170 wizyt
pytanie zadane 14 października 2022 w SQL, bazy danych przez PtaQ Początkujący (280 p.)
Witam, poszukuję rozwiazania jak wykonać osobną kolumnę w bazie danych z nazwą "Poziomy" bazująca na innej "Doświadczenie", mianowicie chce aby wartosc tzw. "lvl" zmieniała się wartosc awansując z '1' na '2' Poziom, gdy wartosc doswiadczenia osiągnie przykładowo więcej niż '20'. Czy jest jakieś rozwiazanie czy moze jakas inna metoda ? Z góry dziekuje na odpowiedz !

4 odpowiedzi

+1 głos
odpowiedź 14 października 2022 przez AnimaVillis Stary wyjadacz (11,350 p.)
Nie wiem jaki język, ale zrobiłbym sobie tabele, która by sprawdzała ile jest wymagane doświadczenia, jeżeli przekracza wymagana ilość to leci updated do bazy, że lvl ma być większy.
+1 głos
odpowiedź 14 października 2022 przez PreZmyK Pasjonat (21,470 p.)
Możesz sobie zrobić widok z CASEm, albo trigger after update, który będzie wywalał błąd mutacji, ale da się go rozwiązać.
komentarz 15 października 2022 przez Wiciorny Ekspert (269,710 p.)
popieram, Aspektowo to można zaprogramować, albo triggerem wykorzystać w bazie danych, co będzie znacznie wydajniejsze.
0 głosów
odpowiedź 15 października 2022 przez Nudzi mi się Gaduła (4,460 p.)
Przykładowe rozwiązanie:

1. Stworzyć tabele zawierającą zakresy punktowe dla każdego poziomu

2. Stworzyć funkcje zwiększająca ilość punktów

3. Przy okazji zmiany punktów sprawdzić czy nie zmienił się zakres na inny poziom
1
komentarz 15 października 2022 przez Wiciorny Ekspert (269,710 p.)
I oto prosty efekt na to jak spowodować że aplikacja nie będzie wydajna, performance będzie siadał :) i klient się zastanawiał "dlaczego to działa wolno".
Takie operacje jak już wspomniane zostały wyżej powinny być realizowane jako ASPEKT, czy to od poziomu bazy danych jako trigger (i to byloby najwydajniejsze, szczegolnie przy bazie indeksowanej), czy to z poziomu AOP jako aspekt z dobrym wykorzystaniem, nawet nie pisany przez np. obserwator pattern, ale raczej programowalny przez metadane.

Wtedy każde zapytanie które byś robił, byłoby efektem ubocznym w/w działania zwiększenia levela, przez co funkcja nie staje się w swojej zasadzie czysta i generuje side-effecty.
komentarz 15 października 2022 przez Ehlert Ekspert (212,670 p.)

Wtedy każde zapytanie które byś robił, byłoby efektem ubocznym w/w działania zwiększenia levela, przez co funkcja nie staje się w swojej zasadzie czysta i generuje side-effecty.

Funkcja zwiększająca expa może być pure, warstwę persystencji można wyciągnąć wyżej.

0 głosów
odpowiedź 15 października 2022 przez Ehlert Ekspert (212,670 p.)

Są dwa podejścia:

  1. Umieszczasz to po stronie bazy danych - robisz trigger, albo view. Trigger powinien robić update wartości poziomu w zależności od innych czynników. View robisz query które wylicza wartość poziomu. 
  2. Umieszczasz to po stronie aplikacji - przy zmianie wartości expa przeliczasz jeszcze raz poziom, albo rzucasz sobie event i poziom aktualizujesz obsługując event - Ty decydujesz czy synchronicznie, czy asynchronicznie. 

Podobne pytania

0 głosów
1 odpowiedź 248 wizyt
0 głosów
1 odpowiedź 2,316 wizyt
pytanie zadane 26 stycznia 2016 w SQL, bazy danych przez paulla Nowicjusz (120 p.)
–1 głos
1 odpowiedź 147 wizyt

92,551 zapytań

141,393 odpowiedzi

319,524 komentarzy

61,936 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...