Mam interesujący problem, próbując reprezentować złożone dane harmonogramu w bazie danych. Jako wytyczną muszę być w stanie reprezentować całość tego, co może reprezentować format iCalendar - ics
- ale w bazie danych. W rzeczywistości nie implementuję niczego związanego z ics
, ale daje to dobry zakres reguł, których potrzebuję, aby móc modelować dla mojego konkretnego projektu.Reprezentacja złożonej zaplanowanej rekurencji w bazie danych
Muszę zezwolić na reprezentację pojedynczego wydarzenia lub wydarzenie cykliczne w oparciu o wiele razy dziennie, dni tygodnia, tygodnia w miesiącu, miesiącu, roku lub niektóre z nich. Na przykład w trzeci czwartek listopada każdego roku lub 25 grudnia każdego roku lub co dwa tygodnie od 2 listopada do 8 września następnego roku.
Nie dbam o efektywność wstawiania, ale wydajność zapytań jest krytyczna. Operacja, którą wykonuję najczęściej, to podanie jednej daty/godziny lub zakresu dat/czasu i próba ustalenia, czy zdefiniowany harmonogram pasuje do dowolnej części zakresu dat/czasu. Inne operacje mogą być wolniejsze. Na przykład: od 15 stycznia 2010 r. Od 10:00 do 15 stycznia 2010 r. O godzinie 11:00 znajdź wszystkie harmonogramy pasujące co najmniej do części tego czasu. (tzn. harmonogram obejmujący 10:30 - 11:00 wciąż odpowiada).
Jakieś sugestie? Spojrzałem na How would one represent scheduled events in an RDBMS?, ale nie obejmuje to zakresu reguł powtarzania, które chciałbym modelować.