अनिवार्य रूप से, आपके द्वारा प्रस्तावित दूसरा समाधान एक लिंक की गई सूची है। डेटाबेस स्तर पर लागू लिंक्ड सूची आमतौर पर एक अच्छा विचार नहीं है। n
तत्वों की एक सूची पुनर्प्राप्त करने के लिए, आपको n
डेटाबेस पहुंच (या जटिल प्रश्नों का उपयोग करें) की आवश्यकता होगी। निष्पादन के अनुसार, ओ (एन) में एक सूची पुनर्प्राप्त करना बेहद कुशल नहीं है।
नियमित कोड में, लिंक की गई सूची का उपयोग सरणी की तुलना में बेहतर सम्मिलित प्रदर्शन प्राप्त करने के लिए किया जाता है (आसपास के सभी तत्वों को स्थानांतरित करने की आवश्यकता नहीं है)। अपने डेटाबेस में, सभी तत्वों को अद्यतन करने के लिए न केवल 2 प्रश्नों में है कि जटिल है:
UPDATE item.order = item.order + 1 FROM item WHERE order > 3
INSERT INTO item (order, ...) VALUES (3, ...)
मुझे लगता है कि यह सब और एक अच्छा व्यवस्थापक इंटरफ़ेस कार्यान्वित एक reuseable ऐप नहीं देख याद है, लेकिन मैं अभी लगता है नहीं कर सकते ...
संक्षेप में, समाधान # 1 का उपयोग करें और समाधान # 2 से दूर रहें जब तक कि आपके पास बहुत अच्छा कारण न हो!
हाय! मुझे एक ही समस्या के साथ एक ही समस्या है। एक समाधान जिसे मैंने सोचा था, आपके 'समाधान 1' में मॉडल का उपयोग कर रहा है। लेकिन सब कुछ ले जाने के बजाय, मैंने केवल 'रॉर्डर्ड आइटम' के मान को बदल दिया। उदाहरण के लिए मैं ऑर्डर 9 और 10 के साथ आइटम के बीच एक आइटम ले जाना चाहता हूं, मैं आइटम के ऑर्डर को 9.5 में बदल दूंगा। क्या आपको लगता है कि यह लंबी टेबल के लिए बुरा हो सकता है? –