2008-12-11 14 views
8

मुझे हाल ही में एक काल्पनिक वेब आधारित बुकिंग सिस्टम पर एक साक्षात्कार प्रश्न पूछा गया था और मैं डुप्लिकेशंस को कम करने और लचीलापन को अधिकतम करने के लिए डेटाबेस स्कीमा कैसे डिज़ाइन करूंगा।डाटाबेस स्कीमा - बुकिंग/उपलब्धता प्रणाली

उपयोग का मामला यह है कि एक व्यवस्थापक सिस्टम में किसी संपत्ति की उपलब्धता दर्ज करेगा। कई समयावधि सेट हो सकता है। उदाहरण के लिए, 1 अप्रैल 200 9 से 14 अप्रैल 200 9 और 3 जुलाई 200 9 से 21 जुलाई 200 9 तक।

कोई उपयोगकर्ता केवल बराबर या छोटी अवधि के लिए उपलब्ध अवधि में बुकिंग करने में सक्षम होता है।

आप इस जानकारी को डेटाबेस में कैसे स्टोर करेंगे?

क्या आप कुछ सरल (वास्तव में सरलीकृत) के रूप में उपयोग करेंगे;

AVAILABILITY(property_id, start_date, end_date); 
BOOKING(property_id, start_date, end_date); 

क्या आप आसानी से एक वेब पेज बना सकते हैं जिसने रिक्त स्थान बुक किए गए समय के साथ उपलब्धता का कैलेंडर दिखाया। क्या इस डेटाबेस स्कीमा से रिपोर्ट बनाना आसान होगा? क्या ऐसा लगता है जितना आसान लगता है?

उत्तर

12

यह 1 दिन की एक विस्तृत रूप से, दोनों की उपलब्धता और बुकिंग के लिए एक एकल तालिका के साथ काम करने के लिए आसान हो सकता है:

property_date (property_id, date, status); 

कॉलम स्थिति (कम से कम) के लिए होता है निम्नलिखित 2 मान:

  • उपलब्ध
  • बुक

उपलब्धता की अवधि में प्रवेश कर जैसे 1 से 14 अप्रैल अप्रैल को 'उपलब्ध' की स्थिति के साथ संपत्ति_डेट में 14 पंक्तियों को डालने (आवेदन) लागू होगा। (उपयोगकर्ता को यह एक ही क्रिया की तरह लगना चाहिए)।

3 से 11 अप्रैल की अवधि के लिए संपत्ति की बुकिंग करने से यह जांच होगी कि प्रत्येक दिन 'उपलब्ध' पंक्ति मौजूद थी और स्थिति को 'बुक' में बदल दिया गया था।

यह मॉडल एक सा "वर्बोज़" लग सकता है, लेकिन यह कुछ लाभ हैं:,

  1. किसी भी तारीख के लिए उपलब्धता की जांच कर आसान
  2. जोड़ना एक बुकिंग अपने आप अपडेट हो उपलब्धता है एक अलग नहीं है सिंक में रखने के लिए उपलब्धता तालिका।
  3. एक वेब पेज में उपलब्धता दिखाना बहुत आसान होगा
  4. विभिन्न प्रकार की अनुपलब्धता रिकॉर्ड करने के लिए नई स्थितियों को जोड़ना आसान है - उदा। मरम्मत के लिए बंद है।

एनबी यदि "उपलब्ध" संपत्ति की सबसे आम स्थिति है, तो तर्क को उलटना बेहतर हो सकता है ताकि एक 'अनुपलब्ध' स्थिति हो और तिथि के लिए पंक्ति की अनुपस्थिति का अर्थ हो उपलब्ध।

+0

मैं बिल्कुल यह सुझाव देने जा रहा था। –

+0

+1, यह वही है जो मैं ढूंढ रहा था। संपत्ति में अलग-अलग कमरे के लिए कोई सुझाव? –

संबंधित मुद्दे