Querying SQLite Tree structure -


मेरे पास इस तरह से तालिकाएँ हैं:

पेड़ {id, name, parent } content {id, content, parent}

पेड़ तालिका में एक पेड़ की तरह संरचना होती है, जहां माता-पिता 0 हैं शीर्ष स्तर तत्व और यदि यह अलग है, तो यह एक ही तालिका से माता-पिता का आईडी है।

content तालिका में एक parent स्तंभ होता है जो एक पेड़ तालिका से आईडी।

मुझे क्या चाहिए है सामग्री के लिए आईडी को दिए जाने पर माता-पिता के तत्वों की पूरी श्रृंखला प्राप्त करना है।

मैं डॉन यह नहीं लगता कि यह तालिकाओं के लिए सबसे अच्छी संरचना है और मुझे लगता है कि मैं इसे बदल सकता हूँ।

आप इस पर क्या ले रहे हैं, कृपया?

सबसे पहले, मैं रूट कोड को इंगित करने के लिए शून्य के बजाय parent = null का उपयोग करने की सलाह देता हूं, जो tree मूल मूल पर संदर्भ के लिए id ; संदर्भित अखंडता उपयोगी है।

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

मान लीजिए कि 99 99 9 आपके सभी नोड्स को कवर करने के लिए पर्याप्त होगा। उसके बाद आपके पास इस तरह की स्ट्रिंग पथ हो सकती है: <00,001000110002300042 '

यह आईडी अनुक्रम [1, 11, 23, 42] इसलिए नोड के माता-पिता 42, दादा-दादी 23, और 1 की जड़ तक होंगे। पूरी शाखा को नोड से रूट तक प्राप्त करने के लिए: मार्ग को पकड़ो, इसे टुकड़ों में विभाजित करके प्राप्त करें आईडी, और सही नतीजे में उन्हें बाहर निकालने के लिए भौतिक रास्ते पर सॉर्ट करते समय सभी नोड्स को एक साथ खींच कर लेते हैं।

यह दृष्टिकोण भी एक बार में पूरे उप-सा प्राप्त करने में आसान बनाता है: बस पथ का निर्माण उपसर्ग जो आपके वांछित उपशीर्षक से मेल खाता है और एक पास के साथ पूरे उपशीर्षक निकालने के लिए पथ की तरह 'pfx%' ORDER पथ, आईडी करें इसके अलावा, अधिकांश डेटाबेस एक ऐसी अभिव्यक्ति के लिए एक सूचक का उपयोग करेंगे जो शुरुआत में निहित है (यानी पसंद 'X%' कुछ X के लिए) ताकि इन प्रकार के प्रश्न हो सकते हैं बहुत जल्दी आप एक साधारण स्ट्रिंग लम्बाई और डिवीजन कंप्यूटेशन के साथ नोड की गहराई की भी गणना कर सकते हैं।

भौतिक मार्गों को बनाने के लिए आपको कुछ अतिरिक्त काम करने की आवश्यकता है, लेकिन अधिक नहीं है और वे बहुत से पेड़ एक पेड़ के प्राकृतिक प्रतिनिधित्व के फायदों को बनाए रखते हुए संचालन अच्छा और सरल।

Comments

Popular posts from this blog

mysql - BLOB/TEXT column 'value' used in key specification without a key length -

c# - Using Vici cool Storage with monodroid -

python - referencing a variable in another function? -