MySQL

2012-09-11 8 views
5

में कैलेंडर डेटा संग्रहीत करना कैलेंडर डेटा संग्रहीत करने पर वास्तव में एक त्वरित आर्किटेक्चर प्रश्न।MySQL

असल में, मेरे पास किराए पर लेने के लिए सेवाओं का डेटाबेस है। आगे के अंत में, प्रत्येक भविष्य की तारीख के लिए या तो "उपलब्ध" या "अनुपलब्ध" दिखाने के लिए कैलेंडर होता है। बैक एंड में उपयोगकर्ता किसी भी दिनांक/दिनांक सीमा को jQuery कैलेंडर पर उपलब्ध या अनुपलब्ध (1 या 0) पर सेट कर सकता है।

मेरे पास सवाल यह है कि आप इस डेटा को mysql में संग्रहीत करने और फ्रंट एंड पर पुनर्प्राप्त करने के बारे में कैसे जाएंगे?

संभवतः सभी तिथियां उपलब्ध हैं और अनुपलब्ध तिथियां संग्रहीत करें? फिर यदि वे फिर से उपलब्ध हैं, तो उस तारीख के लिए रिकॉर्ड हटा दें?

चीयर्स, आरजे

उत्तर

3

संभावित सभी तिथियों उपलब्ध और अनुपलब्ध दिनांकों स्टोर है? फिर यदि वे फिर से उपलब्ध हैं, तो उस तारीख के लिए रिकॉर्ड हटा दें?

हाँ, मैं, उस के साथ जाना चाहते हैं सिवाय मैं जब किराये पर रिकॉर्ड नहीं निकलेगी समाप्त हो रहा है - आप आसानी से पता चल जाएगा कि एक समय सीमा समाप्त हो किराये पर लिया क्योंकि यह पहले ही है, तो आप स्वचालित रूप से और साथ ही किराए के इतिहास रखने ।

आखिरकार, उपलब्ध तारीखों की असीमित संख्या है, इसलिए यदि आप दूसरी तरफ जाते हैं (और मुफ्त तिथियां संग्रहीत करते हैं) तो आपको तारीखों की समर्थित सीमा को कृत्रिम रूप से सीमित करना होगा।

भविष्य में। और, कुछ अर्थों में, अतीत में भी।

इसके अलावा, मुझे लगता है कि एक सेवा किराए पर लेने के मामले में आप कुछ अतिरिक्त जानकारी चाहते हैं (उदाहरण के लिए किरायेदार का नाम) और वहां स्टोर करने के लिए कहीं भी नहीं होगा अगर किराए पर एक अस्तित्व वाली पंक्ति द्वारा प्रतिनिधित्व किया गया हो!


के बाद से किराए पर की ग्रैन्युलरिटी एक पूरे दिन है, मुझे लगता है कि आप एक डेटाबेस संरचना इस के समान पर देख रहे हैं:

enter image description here

नोट कैसे RENTING_DAY पी स्वाभाविक रूप से ओवरलैप से बचाता है।

वैकल्पिक रूप से, आप RENTING_DAY को हटा सकते हैं और किराए पर सीधे START_DATE और END_DATE कर सकते हैं, लेकिन इसके लिए range overlap checks स्पष्ट may not scale ideally की आवश्यकता होगी।

+0

ग्रेट उत्तर, धन्यवाद। और चेक ओवरलैप करने के लिंक के लिए धन्यवाद। यह महत्वपूर्ण है कि मैं तिथि सीमा संग्रहीत करता हूं ताकि मैं ओवरलैप के लिए चेक चला सकूं और आवश्यकतानुसार अपडेट/प्रतिस्थापित कर सकूं। – TMPilot

+0

+1 इसके बारे में कुछ और सोचने के बाद [संबंधित SO प्रश्न] (http://stackoverflow.com/questions/12374023/store-dates-and-rates-in-a-डेटाबेस) का जवाब देते हुए, मुझे लगता है कि एकल उस तिथि सीमा के दौरान होने वाले परिवर्तन/संशोधनों के लिए दिन रिकॉर्ड रिकॉर्ड करना आसान होता है। ओटीओएच, यदि 'start_' और' end_date' के बीच एकल दिनों के लिए कोई अपडेट नहीं हो सकता है तो वह किसी भी तरह से जा सकता है। – aneroid

1

तय करें कि डिफ़ॉल्ट Available या Unavailable है या नहीं।

संभवतः सभी तिथियां उपलब्ध हैं और अनुपलब्ध तिथियां संग्रहीत करें?

तो डिफ़ॉल्ट उपलब्ध है?

फिर आप unavailable_start और unavailable_end डाल सकते हैं - इसे एक दिनांक फ़ील्ड के रूप में स्टोर करें। एकल दिनों के लिए, unavailable_start = _end।फिर एक महीने या किसी भी तिथि सीमा के लिए पूछना आसान है और उस श्रेणी में अनुपलब्ध अवधि लौटाएं। फिर उन तिथियों के लिए कैलेंडर विवरण प्रदर्शित करने के लिए jQuery पार्स है।