Database
 sql >> डेटाबेस >  >> RDS >> Database

होटल रूम बुकिंग सिस्टम के लिए डेटा मॉडल डिजाइन करना

यह सामान्य ज्ञान है कि कुछ सीखने का सबसे अच्छा तरीका वास्तविक जीवन के परिदृश्य में इसका अभ्यास करना है। जाहिर है, यही बात डेटाबेस मॉडलिंग पर भी लागू होती है। इसलिए, इस लेख में मैंने आपको एक होटल के कमरे आरक्षण प्रणाली का एक पाठ्यपुस्तक उदाहरण लेते हुए, एक साधारण डेटाबेस संरचना बनाने का तरीका सिखाने का फैसला किया। मैं आपको दिखाऊंगा कि कैसे शुरुआत करें और मॉडल को विस्तारित करने के लिए आपको कुछ विचार दें।

डेटाबेस मॉडलिंग:डिस्कवर, डिस्कवर, डिस्कवर

इस लेख में हम होटल के कमरे आरक्षण प्रणाली के लिए एक डेटा मॉडल तैयार करेंगे। हम एक डेटा मॉडल की तलाश करते हैं जहां हम अपने काल्पनिक VERTABELO ***** होटल में बुक किए गए कमरों, मेहमानों और आरक्षण के बारे में जानकारी का प्रतिनिधित्व कर सकते हैं। यह सारी जानकारी तालिकाओं में संग्रहित की जाएगी।

डेटाबेस मॉडलिंग एक चक्रीय खोज प्रक्रिया है। हम पहले मुख्य तालिकाओं और इसकी विशेषताओं की पहचान करते हैं। हमारे मॉडल में, मुख्य टेबल हैं:room , guest और reservation . फिर हम उनकी विशेषताओं या स्तंभों की खोज करके अपनी तालिकाओं को परिष्कृत करना जारी रखते हैं। उदाहरण के लिए, room तालिका में विशेषताएँ हैं जैसे:कमरा number , name और smoke दूसरों के बीच झंडा।

reservation तालिका में विशेषताएँ हैं date_in , date_out , status (रद्द, पुष्टि) और made_by (ऑनलाइन, इन_पर्सन, फोन, मेल), जबकि टेबल की विशेषताएं guest हैं:first_name , last_name और member_since . शायद आपको लगता है कि reservation तालिका को और विशेषताओं की आवश्यकता है (जैसे कमरे का प्रकार, बिस्तरों की संख्या), हम इस बिंदु को बाद में कवर करेंगे, तब तक, हमारे reservation तालिका अधूरी। वर्टाबेलो में बनाया गया निम्न डेटा मॉडल मुख्य तालिकाएँ दिखाता है।




डेटा प्रकार:कॉलम के लिए अनुमत मान वाले डोमेन क्या हैं?

ध्यान दें कि प्रत्येक कॉलम में डेटा प्रकार (वर्कर, पूर्णांक, दिनांक, बूलियन) होता है ताकि यह इंगित किया जा सके कि कॉलम को किस प्रकार के मान असाइन किए जा सकते हैं। उदाहरण के लिए, कॉलम smoke टेबल पर room बूलियन . है डेटा प्रकार, जिसका अर्थ है केवल सही या गलत अनुमत मान हैं।

प्राथमिक कुंजियां:प्रत्येक रिकॉर्ड की सामाजिक सुरक्षा संख्या

प्रत्येक तालिका में एक स्तंभ (या एक से अधिक) होना चाहिए जो तालिका में प्रत्येक रिकॉर्ड के लिए एक पहचानकर्ता के रूप में कार्य करता है। इस कॉलम को प्राथमिक कुंजी (पीके) कहा जाता है, और डेटाबेस डिज़ाइन पर सर्वोत्तम अभ्यासों से पता चलता है कि प्रत्येक तालिका में एक पीके होना चाहिए।

यदि हम पिछले वर्टाबेलो डेटा मॉडल पर एक नज़र डालें, तो हम देखेंगे कि प्रत्येक तालिका में id नामक एक कॉलम होता है। पीके संकेतक के साथ दाईं ओर। ये आईडी कॉलम पीके बनाते हैं (एक सम्मेलन के रूप में हम id . नाम देते हैं पीके कॉलम)।

एक महत्वपूर्ण अवधारणा, जो शायद कई पाठकों के लिए स्पष्ट है, यह है कि पीके कॉलम में डुप्लिकेट मान नहीं हो सकते हैं। दूसरे शब्दों में, प्रत्येक पीके कॉलम में एक अद्वितीय बाधा होती है, और डुप्लीकेट मान के साथ एक नया रिकॉर्ड बनाने का कोई भी प्रयास डेटाबेस प्रबंधक द्वारा एक त्रुटि के साथ अस्वीकार कर दिया जाएगा।

खोज जारी रखें; नए डेटाबेस ऑब्जेक्ट खोजें

इस डेटा मॉडल में प्रतिनिधित्व करने के लिए आरक्षण अधिक जटिल तत्वों में से एक है। एक आरक्षण से जुड़े कई कमरे हो सकते हैं (उदाहरण के लिए "मैं एक डबल कमरे के लिए आरक्षण करना चाहता हूं और अपने बच्चों के लिए 3 बिस्तरों वाला एक अलग कमरा")। यह व्यवसाय आवश्यकता हमारे मॉडल में 4 चीज़ें जोड़ती है:

एक नई तालिका: हमें room_reserved , जहां हम एक आरक्षण से संबंधित सभी कमरों को संग्रहीत करते हैं।

दो संदर्भ जोड़ें: डेटा मॉडल में एक संदर्भ एक बहुत ही महत्वपूर्ण तत्व है। एक संदर्भ बताता है कि कैसे एक तालिका दूसरी तालिका से संबंधित है। हमारे मॉडल में, आरक्षित प्रत्येक कमरा एक आरक्षण के अंतर्गत आता है, इसलिए हम उस तथ्य के मॉडल के संदर्भ का उपयोग करेंगे। इस संदर्भ को दोनों तालिकाओं को जोड़ने वाली रेखा के रूप में रेखांकन के रूप में दर्शाया गया है।

इसके अलावा, चूंकि प्रत्येक आरक्षण एक अतिथि का है, इसलिए हमें guest और reservation टेबल।

एक कॉलम ले जाएं: चूंकि हमारे पास एक आरक्षण से संबंधित कई कमरे हो सकते हैं, इसलिए हमें प्रति व्यक्तिगत कमरे को रद्द करने की अनुमति देनी चाहिए, उसके बाद हम attribute को स्थानांतरित करते हैं reservation करने के लिए reserved_room टेबल।

अद्यतन डेटा मॉडल वर्टाबेलो में डिज़ाइन किए गए निम्न आरेख में दिखाया गया है:



किसी संदर्भ द्वारा लिंक की गई तालिकाओं का क्या होता है?

जब हम दो तालिकाओं के बीच एक संदर्भ बनाते हैं, तो एक तालिका में एक नया स्तंभ जोड़ा जाता है। यह अभी जोड़ा गया कॉलम एक विदेशी कुंजी कहलाता है, और अन्य तालिका के लिए एक सूचक के रूप में कार्य करता है जो तालिकाओं के बीच कनेक्शन की अनुमति देता है। उदाहरण के लिए, निम्नलिखित आरेखों पर एक नज़र डालें:

अंजीर। 1 टेबल्स reservation और guest संदर्भ जोड़ने से पहले और बाद में

खोज जारी रखें; अधिक के लिए जाएं

मॉडलिंग के लिए लंबित एक बिंदु यह तथ्य है कि कुछ अतिथि कुछ समय के लिए कमरों का उपयोग कर सकते हैं। इस व्यावसायिक तथ्य का प्रतिनिधित्व करने के लिए, हमने 2 टेबल जोड़े:hosted_at और occupied_room

ध्यान दें कि होटल में रुकने वाले प्रत्येक व्यक्ति का hosted_at . इस रिकॉर्ड में उस कमरे का संदर्भ होगा जिसमें उसने कब्जा किया था और अतिथि के लिए। यही कारण है कि hosted_at guest और occupied_room

टेबल occupied_room किराए पर लिए जा रहे प्रत्येक कमरे में एक रिकॉर्ड होगा, इस रिकॉर्ड पर हम फ़ील्ड पा सकते हैं:check_in और check_out टाइमस्टैम्प के प्रकार से पता चलता है कि किराया कब शुरू और खत्म होगा। टाइमस्टैम्प डेटा प्रकार मनमाने ढंग से सटीकता के साथ समय पर एक बिंदु संग्रहीत करता है। हर occupied_room रिकॉर्ड में hosted_at इस कमरे में रुके मेहमानों के लिए।

हमने तालिका भी जोड़ी है room_type डेटा मॉडल के लिए; विचार कमरे की श्रेणी या कमरे के प्रकार के आधार पर कमरों को समूहित करना है। उदाहरण के लिए "मानक एक डबल बेड", "लक्जरी 2 डबल बेड" प्रकार के विवरण हो सकते हैं। हमारे यहां एक max_क्षमता विशेषता भी है।




व्यायाम: डेटाबेस डिजाइन अनुशासन के लिए आसान है, हालांकि, विषय विशेषज्ञ बनने में समय लगता है। यदि आप डेटाबेस डिज़ाइन पर अपना पहला कदम उठा रहे हैं, तो कृपया अनुमति देने के लिए वर्तमान डेटा मॉडल को पूरा करने का प्रयास करें:

  • यदि दो या अधिक अतिथि एक कमरा साझा कर रहे हैं, तो प्रत्येक अतिथि के लिए अलग-अलग चेक-इन और चेक-आउट की अनुमति दें।
  • कुछ मामलों में होटल कमरों के विन्यास को बदल सकते हैं (उदाहरण के लिए मानक एक डबल बेड से लक्ज़री 2 डबल बेड तक)। प्रत्येक कमरे के इतिहास को बनाए रखते हुए, उन कॉन्फ़िगरेशन परिवर्तनों का प्रतिनिधित्व करने वाले तत्वों को डेटा मॉडल में जोड़ें।

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. टी-एसक्यूएल में एक तिथि कैसे प्रारूपित करें

  2. जॉइन के साथ एसक्यूएल अपडेट स्टेटमेंट का उपयोग करने के लिए 5 नो-परेशानी युक्तियाँ

  3. फिर से लॉग समूह बनाम फ़ाइल बनाम सदस्य की समझ

  4. अमेज़न रिलेशनल डेटाबेस सर्विस में लाभ और सुरक्षा

  5. SQL डेटा नियंत्रण भाषा