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