बस स्टेशन क्वेरी डेटाबेस स्कीमा कैसे डिज़ाइन करें?


9

हमारे पास बस स्टेशन डेटा है, और हम एक एप्लिकेशन बनाना चाहते हैं जो किसी दिए गए स्टार्ट स्टेशन और अंतिम स्टेशन के लिए लाइन / मल्टीपल लाइन प्रदान करेगा।

उदाहरण के लिए उपयोगकर्ता स्टेशन 1 से स्टेशन 2 तक बस लाइन सुझाव प्राप्त करने का प्रयास करें।

यदि एक बस लाइन है जो दोनों को कवर कर सकती है station1और station2, यह लाइन वापस आनी चाहिए। परिणाम इस तरह दिख सकता है:

Step1: station1 -- station2

अगर स्टेशन 1 और स्टेशन 2 के बीच कोई सीधी बस लाइन नहीं है, तो आवेदन को एक्सचेंज प्लान खोजने की कोशिश करनी चाहिए, उदाहरण के लिए, परिणाम इस तरह दिख सकता है:

Step1: station1 -- exchangestation

Step2: exchangestation -- station2

अब हमारे पास डेटा है, लेकिन हम यह नहीं जानते हैं कि डेटाबेस में डेटा मॉडल को कैसे डिज़ाइन किया जाए, क्वेरी को कुशल बनाने के लिए स्कीमा कैसे बनाया जाए?

=============================================

अपडेट करें:

यहां छवि विवरण दर्ज करें

उदाहरण के लिए, मेरे पास चार बस लाइनें हैं (वास्तव में दो) प्रत्येक एक अलग रंग के साथ:

l1: A-B-C-D
l2: D-B-A (in fact, the l2 is the reverse of l1 except the l2 will skip station `C`.
l3: E-B-D-F
l4: F-D-B-E(reverse of l3) 

अब यदि हम डेटाबेस में इन सूचनाओं को एक स्टेशन से दूसरे स्टेशन को दिए गए बस लाइन प्लान की क्वेरी करने के लिए सहेजना चाहते हैं, तो हमें कितनी टेबल चाहिए और प्रत्येक टेबल में क्या रखना चाहिए?


@ giser.i के पास भी ऐसी ही समस्या है। यदि आप इसका जवाब देते हैं तो आपने इसे gis.stackexchange.com/questions/70253/…
scott

जवाबों:


6

मुझे लगता है कि आपको एक और तालिका बनाने की ज़रूरत है जो सभी मार्गों को परिभाषित करती है जो अन्य मार्गों के संयोजन के रूप में है। फिर आप इस तालिका को क्वेरी करते हैं और ज्यामिति प्राप्त करने के लिए वास्तविक मार्गों से जुड़ते हैं।

यदि क्वेरी 'स्टेशन से' से 'स्टेशन' के लिए है और प्रत्येक अनुभाग में 'स्टेशन और स्टेशन से' है। लेकिन आप उन मार्गों को शामिल करना चाहते हैं जो कई खंडों में आते हैं, आप एक और तालिका 'मार्ग' रख सकते हैं जिसमें कुछ इस तरह है:

  • 'रूट का नाम', 'रूट आईडी', 'स्टेशन से', 'स्टेशन से'

आपको अपनी मूल अनुभाग तालिका भी चाहिए, जैसे कुछ:

  • 'सेक्शन का नाम', 'सेक्शन आईडी', आदि ...

और मुझे लगता है कि आपको एक और ज्वाइन टेबल चाहिए:

  • 'रूट आईडी', 'सेक्शन आईडी'

और वह तालिका मार्ग और अनुभाग तालिकाओं के बीच के कई संबंधों में से एक को संग्रहीत करती है, इसलिए, ऊपर दिए गए आपके उदाहरण के लिए, आपको सम्मिलित तालिका में दो पंक्तियाँ हैं, प्रत्येक चरण के लिए एक। मार्ग तालिका पर और से स्टेशनों के लिए क्वेरी की जाती है। यदि स्थानिक है, तो डेटा लौटाया गया है, अनुभाग तालिका से मार्ग तालिका और स्थानिक डेटा का विवरण है। हो सकता है कि आप प्रत्येक अनुभाग या जो भी हो, उससे कई गुना अधिक जोड़ दें।

क्या इसका कोई मतलब है?


वास्तव में, हमारे पास अब कोई टेबल नहीं है, हमारे पास केवल मूल डेटा है जो पाठ प्रारूप है।
गिसर

हॉ, वह ठीक है। मुझे लगता है कि मेरा जवाब तब खड़ा होता है। मैं तीन तालिकाओं का उपयोग करूंगा।
एलेक्स लीथ

मैं अपनी पोस्ट को एक लाइव उदाहरण के साथ अपडेट करता हूं, क्या आप कुछ समय चेक कर सकते हैं?
जिप्सी

@ AlexLeith.i के पास भी इसी तरह का मुद्दा है gis.stackexchange.com/questions/70253/…
scott

3

आपको संभवतः इसके लिए एक उपकरण चुनना चाहिए और स्कीमा का पालन करना चाहिए उपकरण बलों (उदाहरण के लिए pgRout )।

यदि आप इसे एक तालिका के बिना करना चाहते हैं तो आपको केवल दो तालिकाओं की आवश्यकता है जो कोने और नोड्स को संग्रहीत करने के लिए वास्तव में हैं।

चाल आपकी छवि एक स्थानिक दृष्टिकोण दिखाती है जबकि वास्तव में आपको एक अस्थायी (छवि लंबित) की आवश्यकता होती है। बस नोड A से नोड B तक नहीं जाती है। बस नोड A @ 12: 00 से नोड B @ 12: 10 तक जाती है

इसलिए हम हर स्टेशन के लिए एक नोड बनाते हैं + प्रत्येक स्टेशन से प्रत्येक प्रस्थान समय के लिए एक नोड। प्रत्येक नोड में इससे निकलने वाले 3 वन-वे लिंक हैं:

  • बस गंतव्य के लिए लिंक (ए @ 12: 00 - बी @ 12: 10 लागत: 10 मिनट)
  • इस स्टेशन से जाने वाली अगली बस का लिंक (A @ 12: 00 - A @ 12: 30 लागत: 30 मिनट)
  • आधार नोड से लिंक (ए @ 12: 00 से ए लागत: 0 मिनट)

अब बिंदु A से बिंदु C तक के कनेक्शन को खोजने के लिए हम स्टेशन A पर जल्द से जल्द मिलान बिंदु को चुनते हैं और वहां से स्टेशन C पर बेस नोड के लिए अपना रास्ता खोजते हैं।

नोड्स:

id|station|time
---------------
1 |A      |NULL
2 |B      |NULL
3 |A      |12:00
4 |B      |12:10

कोने

id|start_node|end_node|line|cost
---------------------------
1 |3         |4       |l1  |10
2 |3         |1       |NULL|0
3 |4         |2       |NULL|0


0

यहाँ OpenStreetMap से जावास्क्रिप्ट और डेटा का उपयोग कर एक काम कर उदाहरण है । डेटा मॉडल उपयोगी हो सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.