संभवत:आपके आवेदन के लिए ओवरकिल - लेकिन:
'राइट' प्रक्रिया को और अधिक जटिल बनाने की कीमत पर अपनी खोजों को बेहतर बनाने का एक अपेक्षाकृत सरल तरीका यह होगा कि इसे 'उपलब्धता' तालिका बनाने के लिए बुकिंग तालिका को बदल दिया जाए।
यह इंगित करने के लिए बूलियन कॉलम में जोड़ें कि क्या स्लॉट मुफ़्त है या बुक किया गया है (या बेहतर अभी भी उस ग्राहक की आईडी में डाल दिया है जिसने इसे बुक किया है, और यदि स्लॉट मुफ़्त है तो 0 का उपयोग करें)।
1 जनवरी 2009 -> 31 दिसंबर 20 ??
जब आप बुकिंग प्राप्त करते हैं तो मुफ्त स्लॉट को 3 (दो इंसर्ट और एक अपडेट), बुक किए गए स्लॉट और दो उपलब्ध स्लॉट में विभाजित करें।
ऐसा करते रहें और जैसे-जैसे समय सीमा अधिक खंडित होती जाएगी बुकिंग प्रक्रिया में निम्न में से एक शामिल होगा:
- किसी को संपूर्ण 'उपलब्ध स्लॉट' सौंपना (एक अपडेट)
- एक 'उपलब्ध स्लॉट' को दो (एक अपडेट और एक इंसर्ट) में विभाजित करना
- यदि कोई उपलब्ध स्लॉट में से मध्य भाग को बुक करता है, तो स्लॉट को 3 (ऊपर के रूप में) में विभाजित करना।
यह प्रबंधन करने के लिए अविश्वसनीय रूप से जटिल नहीं है और खोज प्रक्रिया एक सरल क्वेरी बन जाती है:उपलब्ध आवश्यक समय सीमा में किसी भी स्लॉट को ढूंढना (बुक किया गया =झूठा या ग्राहक आईडी =0, जो भी आप इसके साथ जाते हैं) जहां समाप्ति तिथि - प्रारंभ तिथि> =संख्या जितने दिन आप चाहते हैं।
यह बुकिंग/उपलब्धता तालिका के आकार को दोगुना करता है, और बुकिंग को कम सरल बनाता है, लेकिन व्यापार बंद यह है कि खोज प्रक्रिया जितनी आसान हो जाती है उतनी ही आसान है।