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

Daty w bazie danych - okresy wyłączenia

Ultraszybki serwer VPS NVMe START
0 głosów
34 wizyt
pytanie zadane 16 lutego w SQL, bazy danych przez Logan85 Nowicjusz (120 p.)
Cześć,

Jestem w trakcie tworzenia większego projektu działającego na SQL+PHP. Stanąłem jednak przed problemem, którego nie wiem jak rozwiązać. Dokładniej chodzi o formularz z możliwością zapisu na zajęcia. Zajęcia mogą odbywać się tylko w określonych ramach czasowych. Np. od 02.01.2017 do 30.12.2017 z wyłączeniem 06.01.2017, 01.05 - 03.05.2017, itd. Coś podobnego jak rozkład pociągów/autobusów.

 

Jak najoptymalniej zapisać to w bazie? Czy lepiej zapisać "cały rok" i osobno "wyjątki"? Czy lepiej od razu lecieć "przedziałami" kiedy zajęcia się odbędą/nie odbędą?

 

Pozdrawiam

Łukasz

1 odpowiedź

0 głosów
odpowiedź 16 lutego przez Ehlert VIP (111,430 p.)
  1. Walidacja po stronie klienta
  2. Walidacja po stronie PHP

Te dwa zabezpieczenia powinny wystarczyć, ale na upartego możesz jeszcze zrobić trigger before insert, chociaż jeśli dobrze zrobisz walidację to nie będzie to miało sensu. Z jakiej technologii bazodanowej korzystasz? Jakiś framework do PHP?

komentarz 16 lutego przez Logan85 Nowicjusz (120 p.)
Nie zrozumieliśmy się kompletnie. Może bardziej szczegółowo opiszę sytuację.

Dopiero tworzę bazę danych, zastanawiam się nad jej strukturą. Czy zrobić tabelę z wykluczeniami, z polami "wykluczenie od" i "wykluczenie do"? Jeśli chcę wykluczyć okres od 01-03.05.2017 to wtedy wpisze do tabeli odpowiednio początek i koniec okresu. Czy może jest jakieś lepsze rozwiązanie?

Później na podstawie informacji o dacie zajęć i okresach wykluczonych muszę wygenerować w PHP dostępne daty (z wykluczeniem sobót i niedziel dodatkowo).

Czyli jeśli mamy zajęcia trwające od 02.01.2017 do 30.12.2017 z wyłączeniem 01-03.05.2017 to muszę użytkownikowi wygenerować każdy dzień roboczy oprócz okresu od 01-03.05.2017.
komentarz 16 lutego przez Ehlert VIP (111,430 p.)
Na poziomie implementacji bazy danych nie powinieneś się przejmować takimi wyjątkami. Oczywiście te daty, które są wyłączone powinny być uwzględnione w jakiejś tabeli.

Wtedy możesz korzystać z triggerów. Ale grunt jak już napisałem to walidacja.
komentarz 16 lutego przez Logan85 Nowicjusz (120 p.)

Dziękuję za odpowiedź, ale dalej nie wiem jak miałoby to działać. Jak mam użyć triggera z poleceniem SELECT? Myślałem, że trigger działa tylko z poleceniami INSERT, UPDATE i DELETE.

Podobne pytania

0 głosów
1 odpowiedź 62 wizyt
pytanie zadane 27 maja 2016 w SQL, bazy danych przez Vento Pasjonat (16,700 p.)
+1 głos
1 odpowiedź 92 wizyt
0 głosów
1 odpowiedź 57 wizyt
pytanie zadane 3 maja w PHP, Symfony, Zend przez Mark Bogart Początkujący (330 p.)

41,357 zapytań

80,334 odpowiedzi

158,970 komentarzy

19,741 pasjonatów

Przeglądających: 236
Pasjonatów: 9 Gości: 227

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...