आपने अपनी पिछली छुट्टी पर एक कार किराए पर ली होगी। आपने अपनी कार ऑनलाइन आरक्षित की, और फिर पहले से सहमत सभी शुल्कों का भुगतान करने के बाद इसे अपने निर्दिष्ट स्थान से उठाया। एक बार जब आप कर लेंगे, तो आपने इसे एजेंसी को वापस कर दिया और शायद कुछ अतिरिक्त शुल्क का भुगतान किया। क्या आपने कभी उस प्रणाली के बारे में सोचा है जो इन सब चीजों को करती है? इस लेख में, हम कार रेंटल सिस्टम के लिए डेटा मॉडल देखेंगे।
एक और कार रेंटल डेटा मॉडल क्यों बनाएं?
मैं एक अंतरराष्ट्रीय कार रेंटल कंपनी के लिए पूरी तरह कार्यात्मक प्रणाली का डेटा मॉडल डिजाइन करना चाहता हूं। कंपनी विभिन्न सेगमेंट (मिनी, इकोनॉमी, इंटरमीडिएट, एसयूवी, कार्गो और लिमोसिन) में किराए पर वाहन रखती है। यह कई देशों के विभिन्न शहरों से अपना संचालन संचालित करता है। कंपनी अपने ग्राहकों को एक स्थान (पिक-अप स्थान) से कार किराए पर लेने और दूसरे स्थान (ड्रॉप-ऑफ़ स्थान) पर छोड़ने की अनुमति देती है।
इस बिंदु पर, आइए पहले के एक लेख को देखें जो एक साधारण कार रेंटल कंपनी मॉडल की व्याख्या करता है। यह मॉडल कार रेंटल कंपनी द्वारा दी जाने वाली सभी मूलभूत सेवाओं को पूरा करता है।
इससे पहले कि हम नए फ़ंक्शन जोड़ें, मैं इस मॉडल में कुछ मामूली बदलाव शामिल करना चाहूंगा, अर्थात्:
city
जोड़नाlocation
टेबल, और सिटी टेबल को पूरी तरह से हटा देना।-
एक अतिरिक्त कॉलम जोड़ना,
zip
(ज़िप कोड, या पोस्टल कोड के रूप में),location
टेबल। यह सिस्टम अपने ज़िप कोड द्वारा पिकअप/ड्रॉप-ऑफ स्थान की पहचान करेगा। ऐसे कई देश हैं जहां ज़िप कोड एक अल्फ़ान्यूमेरिक नंबर है, इसलिए मैं इस कॉलम को वर्चर कॉलम के रूप में रखूंगा। -
driving license issue date
जोड़नाcustomer
टेबल। कुछ देश ऐसे हैं जहां अधिकतम गति सीमा इस बात पर निर्भर करती है कि ड्राइवर को लाइसेंस कब जारी किया गया था। category
तालिका मेंcar_category
, जो इसकी सामग्री का अधिक सटीक वर्णन करता है।- यदि पिकअप स्थान किसी हवाईअड्डे के निकट है, तो ग्राहक की उड़ान की जानकारी संग्रहीत करना। यह सिस्टम को उड़ान में देरी या रद्द होने की स्थिति में ग्राहक के आरक्षण अनुरोध में उचित परिवर्तन करने में सक्षम बनाता है। ऐसा करने के लिए, मैं
flight_detail
और इसेreservation
टेबल.
ग्राहक चालान जानकारी जोड़ना
इनवॉइसिंग के लिए, हमें कारों और उपकरणों सहित प्रत्येक इन्वेंट्री आइटम के लिए रेंटल वैल्यू स्टोर करनी होगी। किराये की लागत प्रत्येक श्रेणी को सौंपी जाती है, क्योंकि आरक्षण प्रक्रिया व्यक्तिगत कारों के बजाय श्रेणियों से संबंधित है।
मुझे rental_value
जोड़ने दें car_category
और equipment_category
टेबल।
इसी तरह, बीमा से जुड़ी कुछ लागत होनी चाहिए। यह लागत बीमा कंपनी द्वारा निर्धारित की जाती है। अभी के लिए, मैं insurance
टेबल।
चालान-प्रक्रिया के लिए, मैं सभी चालान विवरणों को संग्रहीत करने के लिए एक अलग तालिका बनाता हूं। इस तरह, इन समान विवरणों को जब भी आवश्यकता हो, आसानी से प्राप्त किया जा सकता है। चूंकि इन मूल्यों की गणना थोड़ी मुश्किल है, इसलिए मैं उन्हें चालान के लिए बार-बार नहीं दोहराऊंगा। मैं एक टेबल जोड़ूंगा, जिसका नाम है rental_invoice
, जो प्राथमिक रूप से rental
टेबल।
rental_invoice
तालिका में निम्नलिखित कॉलम हैं:
id
– इस तालिका की प्राथमिक कुंजी।rental_id
-rental
टेबल। मैं इस कॉलम में एक अनूठी बाधा जोड़ूंगा:प्रत्येक रेंटल के लिए केवल एक ही रिकॉर्ड हो सकता है।car_rent
- यह कॉलम किराए के वाहन के किराये की लागत को दर्शाता है।-
यह लागत निम्न SQL का उपयोग करके निर्धारित की जा सकती है:
select a.rental_value from car_category a, car b, rental c where c.car_id = b.car_id and b.category_id = a.id and c.id =
से a.rental_value चुनें।; equipment_rent_total
- यह कॉलम ग्राहक को किराए पर दिए गए किसी भी उपकरण के लिए चार्ज की जाने वाली राशि दिखाता है-
कुल लागत निम्न SQL का उपयोग करके निर्धारित की जा सकती है:
select sum(a.rental_value) from equipment_category a, equipment b, car_equipment c, car d, rental e where a.id = b.equipment_category_id and b.id = c.equipment_id and c.car_id = d.id and d.id = e.car_id and e.id =
; -
insurance_cost_total
- यह कॉलम ग्राहक की कुल बीमा लागत के लिए है। इसे निम्न SQL का उपयोग करके निर्धारित किया जा सकता हैselect sum(a.cost) from insurance a, rental_insurance b, rental c where a.id = b.insurance_id and b.rental_id = c.id and c.id =
में से राशि (a.लागत) चुनें; service_tax
औरVAT
- जैसा कि उनके नाम से पता चलता है, ये कॉलम लागू सेवा कर और वैट के मूल्यों को संग्रहीत करते हैं।-
total_amount_payable
- इस कॉलम में कुल चालान राशि का मूल्य होगा। यह निम्नलिखित स्तंभों का योग होगा:total_amount_payable =car_rent + Equipment_rent_total + Insurance_cost_total
-
waiver_amount
औरnet_amount_payable
- ये कॉलम छूट की राशि (यदि कोई हो) और भुगतान के लिए देय शुद्ध राशि के मूल्यों को संग्रहीत करते हैं।waiver_amount
कुल चालान से कितना माफ किया जाएगा। यह आमतौर पर तब उपयोग किया जाता है जब कोई रेंटल कंपनी ग्राहकों को छूट प्रदान करती है।net_amount_payable
. निर्धारित करने का सूत्र ऐसा दिखता है:net_amount_payable =total_amount_payable - वेवर_राशि
मोबाइल इन्वेंट्री - एक कार रेंटल कंपनी के लिए, इसकी इन्वेंट्री हमेशा मोबाइल होती है क्योंकि यह एक स्थान से दूसरे स्थान पर जा रही है। यदि आपने एक चेक बॉक्स देखा है जो कहता है कि 'अलग स्थान पर वापस आ रहे हैं?' जब आप एक कार ऑनलाइन आरक्षित करते हैं, तो आपने इसे कार्रवाई में देखा है। यदि वापसी स्थान पिकअप स्थान के समान नहीं है, तो सिस्टम आपके अनुरोध को थोड़ा अलग तरीके से मानता है। सिस्टम हमेशा अपनी इन्वेंट्री का ट्रैक रखता है और जब इसे किराए पर दिया जाता है और वापस किया जाता है।
उदाहरण के लिए, एक ग्राहक शिकागो से एक कार किराए पर लेता है, पुष्टि करता है कि ड्रॉप ऑफ स्थान अलग होगा, और सेंट लुइस में अपने गंतव्य के लिए ड्राइव करता है। जाहिर है, वह कंपनी के सेंट लुइस स्थान पर कार छोड़ देंगे। इस मामले में, जैसे ही वह शिकागो स्थान से कार चलाता है, इन्वेंट्री का यह हिस्सा अब उस कार्यालय से जुड़ा नहीं है। कार पूरी हो जाने के बाद, इस बार सेंट लुइस कार्यालय में कार फिर से पंजीकृत हो जाएगी।
इस तंत्र को शामिल करने के लिए, मैं एक कॉलम जोड़ूंगा, जिसका नाम है current_location_id
, car
तालिका और साथ ही equipment
टेबल। इस कॉलम में location
टेबल।
तो, उपरोक्त उदाहरण के साथ, कार का प्रारंभिक स्थान शिकागो है; ग्राहक द्वारा कार को गंतव्य कार्यालय में वापस करने के बाद इसे अपडेट किया जाएगा।
ईंधन विकल्प सेट करना
अधिकांश कार रेंटल कंपनियां निम्नलिखित प्रकार के ईंधन भरने के विकल्प देती हैं:- ईंधन सेवा अग्रिम - ग्राहक ईंधन के एक पूर्ण टैंक के लिए अग्रिम भुगतान करता है, और कार को एक खाली टैंक के साथ लौटाता है।
- ईंधन सेवा शुल्क - ग्राहक को कार में ईंधन का पूरा टैंक मिलता है, लेकिन ईंधन के उपयोग के आधार पर इसके लिए भुगतान करता है।
- ईंधन स्वयं सेवा - ग्राहक कार को ईंधन के एक पूर्ण टैंक के साथ प्राप्त करता है और कार को एक पूर्ण टैंक के साथ लौटाता है। यह तीनों में सबसे व्यापक रूप से स्वीकृत विकल्प है।
यहां, हम इस बारे में चिंतित नहीं हैं कि ग्राहक कौन सा विकल्प चुनता है। हम चाहते हैं कि रेंटल अनुरोध को संसाधित करते समय उनकी पसंद को पंजीकृत किया जाए।
इस जरूरत को पूरा करने के लिए, मैं एक टेबल जोड़ूंगा, fuel_option
, जो कार में ईंधन भरने के सभी संभावित विकल्पों को संग्रहीत करता है। रेंटल अनुरोध और fuel_option
, चूंकि ग्राहक को किराये की बुकिंग के समय एक का चयन करने के लिए कहा जाता है।
अंतिम कार रेंटल डेटा मॉडल
कई क्षेत्रों में, कार रेंटल कंपनियां अपने ग्राहकों के लिए बिना चाबी के, स्वयं-सेवा किराए पर लेने के अनुभव का उपयोग करने की ओर बढ़ रही हैं। वे अपने ग्राहकों को सिर्फ कागजी कार्रवाई पूरी करने और कार की चाबियां लेने के लिए काउंटर पर इंतजार नहीं कराना चाहते। क्या हमारा वर्तमान डेटा मॉडल ऐसी आवश्यकताओं को पूरा कर सकता है? ऐसा करने के लिए हमारे डेटा मॉडल में किन बदलावों की ज़रूरत है?
क्या आपके पास हमारे कार रेंटल डेटा मॉडल पर कोई विचार है? आइए एक चर्चा शुरू करें! बेझिझक अपना इनपुट कमेंट सेक्शन में साझा करें।