नेस्टेड सेट मॉडल आजकल आमतौर पर डेटाबेस में उपयोग नहीं किया जाता है, क्योंकि यह एडिएसेंसी लिस्ट मॉडल की तुलना में अधिक जटिल है, इस तथ्य को देखते हुए कि इसे एक के बजाय दो "पॉइंटर्स" को प्रबंधित करने की आवश्यकता है। वास्तव में, नेस्टेड सेट मॉडल को डेटाबेस में तब पेश किया गया था जब एक पदानुक्रम को पार करने वाले पुनरावर्ती प्रश्नों को करना जटिल या असंभव था।
1999 से, मानक SQL में तथाकथित रिकर्सिव कॉमन टेबल एक्सप्रेशंस, या रिकर्सिव सीटीई शामिल है, जो कि क्वेरी बनाने के लिए और अधिक सरल (और मानकीकृत!) स्तरों की संख्या।
सभी प्रमुख डीबीएमएस सिस्टम ने अब इस सुविधा को एक विशेष अपवाद के साथ शामिल किया है:MySQL। लेकिन MySQL में आप संग्रहित प्रक्रियाओं के उपयोग से इस समस्या को दूर कर सकते हैं। उदाहरण के लिए देखें, StackOverflow पर यह पोस्ट , या dba.stackexchange पर यह पोस्ट ।
तो, संक्षेप में, ये मेरी सलाह हैं:
- यदि आप अभी भी तय कर सकते हैं कि कौन सा DBMS उपयोग करता है, तो कुछ विकल्पों पर दृढ़ता से विचार करें:उदाहरण के लिए, यदि आप एक ओपन सोर्स डेटाबेस के साथ रहना चाहते हैं, तो PostgreSQL , एडिएसेंसी लिस्ट मॉडल का उपयोग करें, और अपने प्रश्नों के लिए रिकर्सिव सीटीई के साथ जाएं।
- यदि आप DBMS नहीं बदल सकते हैं, तब भी आपको एडिएसेंसी लिस्ट मॉडल के साथ जाना चाहिए, और संदर्भों में उद्धृत प्रक्रियाओं के रूप में संग्रहीत कार्यविधियों का उपयोग करना चाहिए।
अपडेट करें
यह स्थिति MySQL 8 के साथ बदल रही है, जो वर्तमान में विकास में है और जो पुनरावर्ती सीटीई को एकीकृत करेगा , ताकि उस संस्करण से एडिएसेंसी लिस्ट मॉडल का उपयोग करना अधिक आसान हो जाए।