• 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

Object Storage Arubacloud
0 głosów
186 wizyt
pytanie zadane 16 lutego 2017 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 2017 przez Ehlert Ekspert (212,670 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 2017 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 2017 przez Ehlert Ekspert (212,670 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 2017 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ź 151 wizyt
pytanie zadane 3 grudnia 2017 w SQL, bazy danych przez makoszet Początkujący (360 p.)
0 głosów
1 odpowiedź 206 wizyt
pytanie zadane 27 maja 2016 w SQL, bazy danych przez Vento Pasjonat (17,120 p.)
0 głosów
0 odpowiedzi 423 wizyt

92,539 zapytań

141,382 odpowiedzi

319,476 komentarzy

61,928 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!

...