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

कार किराए पर लेना ड्राइविंग जितना आसान है:कार रेंटल कंपनी के लिए एक डेटा मॉडल

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

एक और कार रेंटल डेटा मॉडल क्यों बनाएं?

मैं एक अंतरराष्ट्रीय कार रेंटल कंपनी के लिए पूरी तरह कार्यात्मक प्रणाली का डेटा मॉडल डिजाइन करना चाहता हूं। कंपनी विभिन्न सेगमेंट (मिनी, इकोनॉमी, इंटरमीडिएट, एसयूवी, कार्गो और लिमोसिन) में किराए पर वाहन रखती है। यह कई देशों के विभिन्न शहरों से अपना संचालन संचालित करता है। कंपनी अपने ग्राहकों को एक स्थान (पिक-अप स्थान) से कार किराए पर लेने और दूसरे स्थान (ड्रॉप-ऑफ़ स्थान) पर छोड़ने की अनुमति देती है।

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




इससे पहले कि हम नए फ़ंक्शन जोड़ें, मैं इस मॉडल में कुछ मामूली बदलाव शामिल करना चाहूंगा, अर्थात्:

  • 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 टेबल।

तो, उपरोक्त उदाहरण के साथ, कार का प्रारंभिक स्थान शिकागो है; ग्राहक द्वारा कार को गंतव्य कार्यालय में वापस करने के बाद इसे अपडेट किया जाएगा।

ईंधन विकल्प सेट करना

अधिकांश कार रेंटल कंपनियां निम्नलिखित प्रकार के ईंधन भरने के विकल्प देती हैं:
  1. ईंधन सेवा अग्रिम - ग्राहक ईंधन के एक पूर्ण टैंक के लिए अग्रिम भुगतान करता है, और कार को एक खाली टैंक के साथ लौटाता है।
  2. ईंधन सेवा शुल्क - ग्राहक को कार में ईंधन का पूरा टैंक मिलता है, लेकिन ईंधन के उपयोग के आधार पर इसके लिए भुगतान करता है।
  3. ईंधन स्वयं सेवा - ग्राहक कार को ईंधन के एक पूर्ण टैंक के साथ प्राप्त करता है और कार को एक पूर्ण टैंक के साथ लौटाता है। यह तीनों में सबसे व्यापक रूप से स्वीकृत विकल्प है।

यहां, हम इस बारे में चिंतित नहीं हैं कि ग्राहक कौन सा विकल्प चुनता है। हम चाहते हैं कि रेंटल अनुरोध को संसाधित करते समय उनकी पसंद को पंजीकृत किया जाए।

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

अंतिम कार रेंटल डेटा मॉडल




कई क्षेत्रों में, कार रेंटल कंपनियां अपने ग्राहकों के लिए बिना चाबी के, स्वयं-सेवा किराए पर लेने के अनुभव का उपयोग करने की ओर बढ़ रही हैं। वे अपने ग्राहकों को सिर्फ कागजी कार्रवाई पूरी करने और कार की चाबियां लेने के लिए काउंटर पर इंतजार नहीं कराना चाहते। क्या हमारा वर्तमान डेटा मॉडल ऐसी आवश्यकताओं को पूरा कर सकता है? ऐसा करने के लिए हमारे डेटा मॉडल में किन बदलावों की ज़रूरत है?

क्या आपके पास हमारे कार रेंटल डेटा मॉडल पर कोई विचार है? आइए एक चर्चा शुरू करें! बेझिझक अपना इनपुट कमेंट सेक्शन में साझा करें।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PSDatabaseClone के साथ क्लोनिंग डेटाबेस

  2. sp_rename प्रक्रिया के साथ अनुक्रमणिका का नाम बदलना

  3. संबंधपरक बनाम गैर-संबंधपरक डेटाबेस - भाग 2

  4. बुरी आदतें :चाबियाँ चुनते समय केवल डिस्क स्थान पर ध्यान केंद्रित करना

  5. नी-जर्क परफमोन काउंटर्स :पेज लाइफ एक्सपेक्टेंसी