• 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

0 głosów
30 wizyt
pytanie zadane 3 dni temu w SQL, bazy danych przez użytkownika Logan85 Nowicjusz (120 punkty)
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ź 3 dni temu przez użytkownika Ehlert Maniak (73,190 punkty)
  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 3 dni temu przez użytkownika Logan85 Nowicjusz (120 punkty)
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 3 dni temu przez użytkownika Ehlert Maniak (73,190 punkty)
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 3 dni temu przez użytkownika Logan85 Nowicjusz (120 punkty)

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ź 57 wizyt
pytanie zadane 27 maja 2016 w SQL, bazy danych przez użytkownika Vento Stary wyjadacz (13,950 punkty)
+1 głos
1 odpowiedź 82 wizyt
pytanie zadane 1 lipca 2015 w SQL, bazy danych przez użytkownika CzlowiekSkrypt Nałogowiec (25,920 punkty)
0 głosów
1 odpowiedź 68 wizyt
pytanie zadane 29 sierpnia 2016 w SQL, bazy danych przez użytkownika 123skiper Obywatel (1,540 punkty)
...