MySQL में पुनरावर्ती प्रश्नों का अभाव है, जो मानक SQL का हिस्सा हैं। डेटाबेस के कई अन्य ब्रांड इस सुविधा का समर्थन करते हैं, जिसमें PostgreSQL शामिल है (देखें http://www.postgresql.org/docs/8.4/static/queries-with.html )।
MySQL में पदानुक्रमित डेटा को संभालने के लिए कई तकनीकें हैं।
- सबसे आसान यह होगा कि किसी दिए गए फ़ोटो के पदानुक्रम को नोट करने के लिए एक कॉलम जोड़ा जाए। फिर आप उन तस्वीरों को खोज सकते हैं जो समान पदानुक्रम से संबंधित हैं, उन सभी को अपने आवेदन पर वापस ला सकते हैं और उन तस्वीरों का पता लगा सकते हैं जिनकी आपको वहां आवश्यकता है। बैंडविड्थ के मामले में यह थोड़ा बेकार है, इसके लिए आपको अधिक एप्लिकेशन कोड लिखने की आवश्यकता होती है, और यह अच्छा नहीं है यदि आपके पेड़ों में कई नोड हैं।
पदानुक्रमित डेटा संग्रहीत करने के लिए कुछ चतुर तकनीकें भी हैं ताकि आप उनसे पूछताछ कर सकें:
-
पथ गणना प्रत्येक नोड के साथ पूर्वजों की सूची संग्रहीत करता है। उदाहरण के लिए, आपके उदाहरण में फोटो 5 "0-2-4-5" स्टोर करेगा। आप उन नोड्स की खोज करके पूर्वजों की खोज कर सकते हैं जिनका पथ "%" से जुड़ा हुआ है जो
LIKE
के साथ 5 के पथ के लिए एक मेल है विधेय। -
नेस्टेड सेट जो सेल्को द्वारा अपने लेखों और अपनी पुस्तक "ट्रीज़ एंड हायरार्किकल इन एसक्यूएल फॉर स्मार्टीज़" में लोकप्रिय एक जटिल लेकिन चतुर तकनीक है। इसके बारे में कई ऑनलाइन ब्लॉग और लेख भी हैं। पेड़ों से पूछताछ करना आसान है, लेकिन तत्काल बच्चों या माता-पिता से पूछताछ करना मुश्किल है और नोड्स डालना या हटाना मुश्किल है।
-
क्लोजर टेबल प्रत्येक पूर्वज/वंशज संबंध को एक अलग तालिका में संग्रहीत करना शामिल है। यदि आप पथलंबाई जोड़ते हैं तो पेड़ों से पूछताछ करना आसान है, डालने और हटाने में आसान है, और तत्काल माता-पिता या बच्चों से पूछताछ करना आसान है स्तंभ।
आप मेरी प्रस्तुति में इन विधियों की तुलना करते हुए अधिक जानकारी देख सकते हैं व्यावहारिक वस्तु एसक्यूएल में -ओरिएंटेड मॉडल या मेरी आने वाली किताब SQL Antipatterns:अवॉइडिंग द पिट्स ऑफ डाटाबेस प्रोग्रामिंग ।