• 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
187 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 3,855 wizyt
0 głosów
1 odpowiedź 120 wizyt
0 głosów
1 odpowiedź 202 wizyt
pytanie zadane 13 listopada 2016 w SQL, bazy danych przez Macek Kolo Mądrala (5,480 p.)

92,454 zapytań

141,262 odpowiedzi

319,099 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...