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

Schemat bazy danych - zakresy godzinowe

VPS Starter Arubacloud
0 głosów
323 wizyt
pytanie zadane 13 czerwca 2017 w SQL, bazy danych przez Ciapuch Obywatel (1,040 p.)
Chciałbym stworzyć aplikację, która, po zalogowaniu jako administrator, pokazywałaby listę wszystkich moich klientów wraz z przyporządkowanymi do nich zakresami godzinowymi. W każdym z zakresów cena godzinowa za moje usługi była by inna. To znaczy, mamy dajmy na to klienta 'X'. Jeżeli przepracuję dla niego ilość godzin od 1 do 10, wtedy cena za roboczogdzinę wynosi np. 100 zł. Od 11 do 20 - 80 zł itd. Czyli jeżeli ilość godzin mojej pracy to 15, wtedy klient płaci (10 x 100 zł) + (5 * 80 zł). Ja jako administrator, mogę te zakresy dowolnie modyfikować, a klient po zalogowaniu widzi, ile ma aktualnie do zapłaty. Potrzebowałbym rady, jak najlepiej zaprojektować bazę danych do tego celu. Na początku zrobiłem to tak, że stworzyłem tabelę 'clients' z polami 'id', 'name', tabelę 'timesheets' z polami 'id', 'min', 'max', 'price_per_hour'. I tabelę 'client_timesheet' służącą jako pivot w relacji many-to-many z polami 'id', 'client_id' oraz 'timesheet_id'. Ale wydaje mi się to "brzydkim" sposobem, jestem prawie pewny, że można to zrobić dużo lepiej, tylko nie bardzo wiem jak. Uprzejmie proszę o pomoc :)
1
komentarz 13 czerwca 2017 przez Michał Kazula Pasjonat (19,540 p.)
A co w tym rozwiązaniu widzisz złego?
komentarz 13 czerwca 2017 przez Ciapuch Obywatel (1,040 p.)
Właśnie nie wiem, po prostu wydaje mi się to mało eleganckie i stosunkowo skomplikowane do obsłużenia w PHP. Ale to tylko wrażenie, nie mam doświadczenia w tym temacie. Jestem po prostu ciekaw czy może ktoś będzie widział lepsze rozwiązanie.
1
komentarz 13 czerwca 2017 przez Michał Kazula Pasjonat (19,540 p.)
Raczej nie widzę tu innego rozwiązania. I wcale nie jest to skomplikowane.

Piszesz w OOP PHP?
komentarz 13 czerwca 2017 przez Ciapuch Obywatel (1,040 p.)
W Laravelu.
1
komentarz 13 czerwca 2017 przez Michał Kazula Pasjonat (19,540 p.)
To tym bardzie zrobienie tego to pestka :-)

Laravel jest tak przyjemnym narzędziem.

Roisz modele do tabel i pivota. Potem sobie tworzysz kolekcje z pivota i obliczasz ;-)
komentarz 13 czerwca 2017 przez Ciapuch Obywatel (1,040 p.)
Widzę, że moje myśli jednak dobrym torem biegły :) Dokładnie tak zrobiłem. Co prawda na początku te kolekcje trochę mało intuicyjne mi się wydawały, ale już się przyzwyczaiłem. Nie chcąc nadużywać Twojej uprzejmości mam jeszcze jedno pytanie. Załóżmy, że daję firmie X jakiś zakres. Potem go zmieniam, w związku z tym ten pierwszy już jest niepotrzebny. I teraz - co jest dobrą praktyką? Zostawić go w bazie na przyszłość i usunąć tylko rekord w pivocie? Czy jednak usuwać z bazy? Spowolni to, oczywiście, działanie programu, bo trzeba będzie dodać jakieś ify, czy tego samego zakresu nie ma inny klient itd. Z drugiej strony nie będzie nadmiarowych rekordów w bazie.
1
komentarz 13 czerwca 2017 przez Michał Kazula Pasjonat (19,540 p.)
Dodaj pole 'status' :-) Do pivota ładuj tylko te ze statusem Aktywne.
komentarz 13 czerwca 2017 przez Ciapuch Obywatel (1,040 p.)
Z tym, że wtedy i tak w tabeli 'timesheets' będą się znajdować nieużywane rekordy i dlatego się zastanawiałem jak to zrobić :) Ale sporo mi rozjaśniłeś w głowie, dzięki!
komentarz 13 czerwca 2017 przez Michał Kazula Pasjonat (19,540 p.)
Jeżeli bardzo Ci ciąża te "nieużywane rekordy" stwórz sobie tabelę archive i tam trzymajnie aktywne.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
0 odpowiedzi 4,058 wizyt
0 głosów
1 odpowiedź 138 wizyt
0 głosów
1 odpowiedź 244 wizyt
pytanie zadane 13 listopada 2016 w SQL, bazy danych przez Macek Kolo Mądrala (5,480 p.)

93,019 zapytań

141,982 odpowiedzi

321,283 komentarzy

62,365 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

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...