अपने ही चिंता का विषय मानते हुए है चयन और नहीं आवेषण/अद्यतन/हटाता है, इस तरह के रूप में की जरूरत पर निर्भर करता है,:
- आप को पता है कि स्तर प्रत्येक नोड पर है की जरूरत है?
- क्या आपको यह जानने की ज़रूरत है कि प्रत्येक नोड में कोई प्रतिपादन करते समय कोई बच्चा है या नहीं?
- क्या आपको भाई बहनों को नाम से सॉर्ट करने की आवश्यकता है?
हालांकि, अगर पेड़ में वास्तव में न्यूनतम परिवर्तन होते हैं, तो इससे कोई फर्क नहीं पड़ता कि आप किस योजना का उपयोग करते हैं, क्योंकि आप एप्लिकेशन परत में सभी काम कर सकते हैं और आउटपुट कैश कर सकते हैं।
संपादित करें:
आदेश मामलों, मैं आमतौर पर materialized path विधि के लिए जाते हैं, और एक अतिरिक्त स्तंभ SortPath जोड़ते हैं।इस तरह आप अपने परिणामों को भाई द्वारा क्रमबद्ध कर सकते हैं, जो एक असामान्यता है जो एचटीएमएल में पेड़ को बहुत आसान बनाता है, क्योंकि आप एक ही प्रश्न का उपयोग कर रिकॉर्ड्स प्राप्त करने के क्रम में पूरे पेड़ (या किसी भी हिस्से) को लिख सकते हैं । यह गति के लिए इष्टतम है, और एक समय में एक से अधिक स्तरों को सॉर्ट करने का सबसे आसान तरीका है।
जैसे,
CREATE TABLE [dbo].[MatPath](
[ID] [int] NULL,
[Name] [varchar](50) NULL,
[Path] [varchar](max) NULL,
[SortPath] [varchar](max) NULL
)
insert into MatPath (ID, Name, Path, SortPath) values (1, 'Animal', '1', 'Animal-1')
insert into MatPath (ID, Name, Path, SortPath) values (2, 'Dog', '1.2', 'Animal-1|Dog-2')
insert into MatPath (ID, Name, Path, SortPath) values (3, 'Horse', '1.3', 'Animal-1|Horse-3')
insert into MatPath (ID, Name, Path, SortPath) values (4, 'Beagle', '1.2.4', 'Animal-1|Dog-2|Beagle-4')
insert into MatPath (ID, Name, Path, SortPath) values (5, 'Abyssinian', '1.3.5', 'Animal-1|Horse-3|Abyssinian-5')
insert into MatPath (ID, Name, Path, SortPath) values (6, 'Collie', '1.2.6', 'Animal-1|Dog-2|Collie-6')
select *
from MatPath
order by SortPath
आउटपुट:
ID Name Path SortPath
------ --------------- ----------- --------------------------------
1 Animal 1 Animal-1
2 Dog 1.2 Animal-1|Dog-2
4 Beagle 1.2.4 Animal-1|Dog-2|Beagle-4
6 Collie 1.2.6 Animal-1|Dog-2|Collie-6
3 Horse 1.3 Animal-1|Horse-3
5 Abyssinian 1.3.5 Animal-1|Horse-3|Abyssinian-5
(6 row(s) affected)
आप अनुप्रयोग परत में पाइप (या पूर्ण विराम) की गणना के द्वारा प्रत्येक नोड के स्तर को निर्धारित कर सकते हैं, या SQL में उपयोग करते हुए जो भी अंतर्निहित या कस्टम फ़ंक्शन जो count occurrences of a string कर सकते हैं।
इसके अलावा, आप देखेंगे कि बनाते समय Name
पर ID
संलग्न करें। यह सुनिश्चित करना है कि एक ही नाम के साथ दो भाई नोड हमेशा एक ही क्रम में वापस आ जाएंगे।
आप कहते हैं कि आपके पेड़ एन गहरे और एन चौड़े हो सकते हैं? आमतौर पर इसे एन गहरे और बी (शाखा कारक) के रूप में वर्णित किया जाता है। क्या 10 गहरे पेड़ में वास्तव में नोड्स हैं जो 10 बच्चे चौड़े हैं? बी बी * निश्चित * संख्या है? –
हैलो ईरा। नहीं बी एक निश्चित संख्या नहीं है। सौदा यह है कि ए में एन श्रेणियां हो सकती हैं, और इनमें से प्रत्येक में अन्य एन श्रेणियां अनिश्चित काल तक हो सकती हैं। मैं यह भी मान रहा हूं कि यह पेड़ बहुत बड़ा नहीं होगा, लेकिन चूंकि हमारे पास कई उपयोगकर्ता हैं, सबसे सरल समाधान (प्रत्येक स्तर के लिए एक प्रश्न जारी करना) बहुत महंगा हो सकता है। –