आपको अलग-अलग घटनाओं और घटनाओं को संभालने की आवश्यकता होगी।
घटना वार: घटनाओं के लिए, आप पुनरावर्तन नियमों लेकिन यह भी अपवाद (rfc5545 द्वारा निर्दिष्ट लेकिन यह भी rfc5545 में rdate तरह तिथियों की एक स्पष्ट सेट की तरह है जो एक rrule हो सकता है) की दुकान करने की आवश्यकता होगी (rfc5545 और संभवतः के exdate देखना rfc2445 में exrule)। आपको उन नियमों में परिवर्तनों का ट्रैक रखने की भी आवश्यकता होगी: राडेट में परिवर्तन, भविष्य में होने पर पुरानी कोई समस्या नहीं है और पिछली तिथियों के लिए अनदेखा किया जाना चाहिए। पिछले अवसरों को प्रभावित करने के रूप में क्रुले में परिवर्तन अधिक कठिन हैं। मेरी व्यक्तिगत वरीयता है कि वे अपनी संबंधित शुरुआत और वैधता की समाप्ति तिथि निर्दिष्ट करने के लिए पुराने और नए क्रॉल के लिए एक विशिष्ट संपत्ति जोड़ना चाहते हैं।
यदि ईवेंट में सीमित समय अवधि है (COUNT या यूएनटीआईएल संपत्ति मौजूद है) तो आपको ईवेंट की आसान पूछताछ की अनुमति देने के लिए अपनी तालिका में अपनी शुरुआत और अंत स्टोर करना चाहिए (विशेष रूप से जब आपकी पूर्व निर्धारित समय खिड़की के बाहर होने वाली घटनाओं की तलाश होती है (देखें नीचे), यह उन घटनाओं की संख्या को कम करने में मदद कर सकता है जिनके लिए गणना को फिर से किया जाना है)।
घटनाओं वार: आवृत्तियां के लिए आप एक पूर्वनिर्धारित खिड़की के आसपास मौजूद भीतर उदाहरणों संग्रहीत करना चाहिए (माना +/- 6 महीने या 12months और एक नियमित आधार पर गणना की) और अपने उपयोगकर्ताओं को चाहते हैं, तो फिर से गणना की अनुमति देने के लिए इस का रिकॉर्ड रखने के भविष्य में आगे देखने के लिए (प्रदर्शन के मुद्दों के लिए)। आपको अगली घटना की आसान खोज में मदद के लिए इंडेक्स (रिक्रेंस-आईडी) की गणना करने पर भी विचार करना चाहिए।
बैक एंड पर कम लेकिन फ्रंट-एंड पर अधिक आपको उपयोगकर्ता से पूछने के लिए tzid परिवर्तनों का ट्रैक रखना चाहिए यदि किसी ईवेंट को किसी दिए गए tzid पर निर्धारित किया गया हो, तो यह वर्तमान समय क्षेत्र पर रहने के लिए है इसे अद्यतन करने की जरूरत है (समोआ द्वीप में किसी के बारे में सोचें, जिसने शुक्रवार को 30 दिसंबर 2011 को एक बैठक निर्धारित की थी, देश ने तय किया था कि यह दिन मौजूद नहीं होगा), इसी तरह आप पूछ सकते हैं कि डेलाइट सेविंग टाइम के दौरान होने वाली कोई घटना क्या है आप क्या पुनरावर्तन नियमों के संदर्भ में rfc5545 में परिभाषित किया गया है परे समर्थन पर विचार करने और भी धार्मिक आवर्ती नियमों के लिए समर्थन जोड़ने के लिए चाहते हो सकता है: "कभी नहीं" या "दो बार होता है"
नोट (इस विषय here पर और अधिक) के लिए होती (see USNO introduction to calendars या प्रिंट में "कैलेंड्रल कैलकुलेशन" (तीसरा संस्करण) ई। रींगोल और एन। डर्सोविट्ज़)।
जब से तुम मौजूदा कार्यान्वयन के बारे में पूछते हैं, आप आसानी से सनबर्ड (SQLite) के डेटाबेस स्कीमा जांच कर सकते हैं या Apple open source Calendar and Contacts Server की, CalDAV सर्वर के लिए मौजूदा खुला स्रोत परियोजनाओं की एक और पूरी सूची (जो शायद आप क्या कर रहे हैं के एक सबसेट है खोज रहे हैं) here उपलब्ध है)
यदि आपने पुनरावृत्ति के हर उपयोगकर्ता के हर पुनरावृत्ति के लिए एक अलग तिथि संग्रहीत की है, तो यह जल्दबाजी में बहुत अधिक डेटा बन सकता है। –
+1 पुनरावृत्ति संग्रहीत करने का पक्ष ले रहा है। उपयोग के मामले के बारे में सोचें जहां उपयोगकर्ता आवर्ती घटना का उदाहरण लेता है: उसे सभी घटनाओं, सभी बाद की घटनाओं, बस इस घटना इत्यादि के लिए कदम लागू करने का विकल्प मिला है। – Fuhrmanator