संबंधपरक डेटाबेस पर पेड़ की तरह डेटा का ठीक से और कुशलता से प्रतिनिधित्व करने के लिए एक मॉडल की संरचना कैसे करें?


13

एसक्यूएल प्रश्न का उपयोग करके एक रिलेशनल डेटाबेस में ट्री-ट्री जैसे डेटा के आधार पर , मैं जानना चाहता हूं कि नियमित रूप से ट्री-जैसे डेटा को रिलेशनल डेटाबेस पर भौतिक प्रभाव पर विचार करने के तरीके का उपयोग कैसे किया जाता है?

मैं मान रहा हूं कि RDBMS में नियमित SQL ANSI या आम उपलब्ध सुविधाओं के अलावा अन्य को संभालने के लिए विशेष सुविधाएँ नहीं हैं।

संदेह में मैं हमेशा MySQL और PostgreSQL और अंततः SQLite पर दिलचस्पी रखता हूं।

जवाबों:


8

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

यानी- (बहुत ज्यादा छद्मकोड)

TABLE tree
int         id                  autoinc
varchar(16) data_you_care_about
int         parent_id
int         left_child_id
int         right_child_id

FOREIGN KEY parent_id = tree.id
FOREIGN KEY left_child_id = tree.id
FOREIGN KEY right_child_id = tree.id

एक डबल लिंक आइटम के लिए एक विचार यह है कि इस स्कीमा के तहत पेड़ की स्थिति में किसी भी परिवर्तन से एक के बजाय 3 से कम अपडेट नहीं होंगे। जैसा कि आप कहते हैं, यह भी एक बड़ी धारणा है कि आगे / रिवर्स बाइनरी ट्री क्या अनुरोध किया गया था।
REW

बहुत सच है, मेरे अनुभवों में मैं एक एकल-लिंक्ड सूची में एक दोहरी-लिंक वाली सूची के अपडेट-टैक्स को पसंद करता हूं क्योंकि मुझे अक्सर एक पेड़ को पार करना पड़ता है। लेकिन कई उदाहरणों में यह आवश्यक नहीं होगा
पैट्रिक

यह निश्चित रूप से अंतर्निहित मॉडल पर निर्भर करता है। मुझे लगता है कि पैट्रिक द्वारा दिया गया उत्तर पर्याप्त है यदि वह सही मॉडल है।
jcolebrand

6

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

उन संस्थाओं के लिए जो पेड़ में कई बिंदुओं पर जुड़े होते हैं, एक अलग लिंकिंग टेबल या कई अलग-अलग मूल्य स्तंभ का उपयोग किया जाएगा।

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