मैं घटना के प्रत्येक पुनरावृत्ति के लिए कुछ क्षितिज से बाहर एक प्रविष्टि बनाउंगा। हालांकि, इसका मतलब है कि आपको एक और तालिका की आवश्यकता होगी जिसका उपयोग आप तिथियों को प्रोजेक्ट करने के लिए कर सकते हैं यदि वे आपकी क्षितिज तिथि से पहले स्कैन करते हैं। यानी, आपको एक ऐसी घटना तालिका की आवश्यकता होगी जिसमें दोहराई गई घटना (1 जनवरी, 8 जनवरी, 15 जनवरी, ... दिनांक:1 जनवरी; दोहराएँ:7; से:2011) ताकि 2012 की शुरुआत में (या जैसे ही उपयोगकर्ता 2012+ महीने के दृश्य का अनुरोध करता है) आप भविष्य की घटनाओं को उत्पन्न कर सकते हैं।
इसके दो बड़े नुकसान हैं:
- आपके डेटाबेस में पूरे एक साल का डेटा है। हालांकि, अगर पूरे एक साल का डेटा जोड़ने से आपका प्रदर्शन खराब होता है, तो संभवतः आपका सिस्टम कमज़ोर है। (ऐसा लगता है कि एक कैलेंडर ऐप कई वर्षों की तारीखों को संभालने में सक्षम हो)
- इवेंट क्षितिज के अंत में, आपको पुनरावर्ती ईवेंट के लिए भविष्य की तिथियां जेनरेट करनी होंगी।
फायदे (आईएमओ) जो नुकसान से अधिक हैं:
- कैलेंडर प्रदर्शित करते समय आसान गणित। ऊपर टिम की विधि का उपयोग करते हुए, यदि उपयोगकर्ता 18 दिसंबर, 2011 को लोड करता है, तो आप कैसे गणना करेंगे कि उस दिन कौन सी आवर्ती घटनाएं रखी जानी चाहिए? हर बार जब आप कोई तिथि प्रदर्शित करते हैं तो आपको प्रत्येक पुनरावर्ती ईवेंट के माध्यम से लूप करने के लिए मजबूर किया जाएगा। ट्रेडऑफ़ नुकसान #1 है, जो मुझे लगता है कि इन गणनाओं को फिर से करने के लिए बेहतर समाधान है।
- आप किसी ईवेंट के विशिष्ट उदाहरणों को संपादित कर सकते हैं। टिम की पद्धति का उपयोग करते हुए, यदि छुट्टी के दिन कोई बैठक हुई और उपयोगकर्ता ने इसे पिछले दिन में बदल दिया, तो आप इसे कैसे करेंगे? यहां वर्णित एक-प्रविष्टि-प्रति-ईवेंट पद्धति का उपयोग करके, आप कैलेंडर में आसानी से एकल घटनाओं को इधर-उधर घुमाते हुए, ईवेंट के लिए उस रिकॉर्ड को संशोधित कर सकते हैं।