2009-11-02 12 views
8

Muszę zaimplementować funkcję podobną do funkcji udostępnianej przez program Microsoft Outlook, aby termin spotkania był powtarzalny. Próbuję znaleźć zoptymalizowany projekt bazy danych, który będę wymagał za wdrożenie tej funkcji.Projektowanie baz danych do przechowywania szczegółów powtarzających się zdarzeń

Wymóg jest taki, że każde uruchomienie lub zadanie wprowadzone przez użytkownika będzie również miało zastosowanie do planowania, jak wydarzenie cykliczne - tygodniowe, miesięczne lub roczne. Czy mógłbyś zaproponować mi model bazy danych - strukturę tabeli (z ograniczeniami) do przechowywania tych danych w bazie danych, które mogą być później dostępne dla programu, aby wykonać odpowiednie zadanie. Zrzuty ekranu z niektórych możliwych szczegółów harmonogramu można znaleźć pod numerem following link.

Mamy mysql DB uruchomiony na zapleczu do przechowywania tych danych. Gdy tylko użytkownik prześle żądanie, identyfikator wniosku ze szczegółami żądania jest przechowywany w tabeli, a następnie odpowiadająca mu akcja jest podejmowana przez program. Więcej wyjaśnienia byłoby takie, że intencją użytkowników jest uruchomienie skryptu SQL, uzyskanie wartości, a następnie wykonanie analizy statystycznej. Ale ponieważ DB odnośnika do wyroczni jest aktualizowana dynamicznie przez wielu użytkowników, chce go uruchomić w sposób powtarzalny i przeprowadzić analizę. Zauważ, że mysql db i ref DB są różne.

Proszę dać mi znać, jeśli potrzebujesz innych informacji.!

+0

Czy optymalizujesz pod względem szybkości, niezawodności, dostępności, możliwości rozbudowy lub czegoś innego? Wygląda na to, że najważniejszą kwestią jest dostępność. –

Odpowiedz

9

Sugerowałbym przechowywanie szczegółów pierwszego wystąpienia w jednej tabeli (zaplanowane zadania), a następnie szczegółów dotyczących rekurencji (zadań cyklicznych) w innej.

Mogę również być skłonny do aktualizacji tabeli zaplanowanych zadań przy następnym wystąpieniu, gdy każde zadanie zostanie zakończone.

Jak dla układu tabeli, szorstki szkic byłby następujący:

[ScehduledTasks]
TaskId (Primary Key)
Opis i dane etc ...
start Datetime
End datetime

[RecurringTasks]
TaskId (klucz obcy)
Częstotliwość : Codziennie, co tydzień, co miesiąc lub co rok.
DayNo : Co dzień do pracy na (1-7 tygodniowe, miesięczne, 1-31 do 1-365 do roku)
Interval : Każdy x tydzień, miesiąc itd
WeekOfMonth : pierwszy , drugi, trzeci ... itd. Jeśli jest wypełniony, DayNo określa dzień tygodnia.
MonthOfYear : 1-12.
EndDatetime : Ostatnia data wykonać
wystąpień : ilość razy do wykonania. Jeśli ta i poprzednia wartość są zerowe, wykonaj je na zawsze.

Oczywiste niektóre pola byłyby puste w zależności od sposobu ustawienia zadania, ale myślę, że powyższe obejmuje wszystko, czego potrzebujesz do emulacji zadań w programie Outlook.

+0

To jest to, co myślałem, ale nie jestem pewien, w jaki sposób przechowywać lub w bardziej odpowiedni sposób przedstawiać harmonogram rekurencji wprowadzony przez użytkownika - jeśli na przykład użytkownik wybiera "miesięcznie-> co poniedziałek" jako swoją prośbę o rekompensatę, a następnie w jaki sposób przechowywać te szczegóły w DB, aby program mógł uzyskać dostęp do tych szczegółów i zaplanować to zadanie. – kshitij

+0

Po prostu sformatowanie niektórych sugestii w tej chwili – Martin

+0

To bardzo pomogło, dzięki Martin. – kshitij

Powiązane problemy