• 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

VPS Starter Arubacloud
0 głosów
185 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,630 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,630 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ź 149 wizyt
pytanie zadane 3 grudnia 2017 w SQL, bazy danych przez makoszet Początkujący (360 p.)
0 głosów
1 odpowiedź 200 wizyt
pytanie zadane 27 maja 2016 w SQL, bazy danych przez Vento Pasjonat (17,120 p.)
0 głosów
0 odpowiedzi 418 wizyt

92,453 zapytań

141,262 odpowiedzi

319,088 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!

...