एक डेटाबेस का उपयोग करते समय एक सामान्य आवश्यकता क्रम में रिकॉर्ड का उपयोग करना है। उदाहरण के लिए, यदि मेरे पास एक ब्लॉग है, तो मैं अपने ब्लॉग पोस्ट को अनियंत्रित क्रम में पुन: व्यवस्थित करने में सक्षम होना चाहता हूं। इन प्रविष्टियों में अक्सर बहुत सारे संबंध होते हैं, इसलिए एक संबंधपरक डेटाबेस समझ में आता है।
सामान्य समाधान जो मैंने देखा है वह पूर्णांक कॉलम जोड़ना है order
:
CREATE TABLE AS your_table (id, title, sort_order)
AS VALUES
(0, 'Lorem ipsum', 3),
(1, 'Dolor sit', 2),
(2, 'Amet, consect', 0),
(3, 'Elit fusce', 1);
फिर, हम order
उन्हें उचित क्रम में प्राप्त करने के लिए पंक्तियों को क्रमबद्ध कर सकते हैं ।
हालाँकि, यह अनाड़ी लगता है:
- यदि मैं रिकॉर्ड 0 को प्रारंभ में ले जाना चाहता हूं, तो मुझे हर रिकॉर्ड को पुनः व्यवस्थित करना होगा
- अगर मैं बीच में नया रिकॉर्ड डालना चाहता हूं, तो मुझे इसके बाद हर रिकॉर्ड को फिर से दर्ज करना होगा
- यदि मुझे कोई रिकॉर्ड निकालना है, तो मुझे उसके बाद हर रिकॉर्ड को फिर से लिखना होगा
ऐसी स्थितियों की कल्पना करना आसान है:
- दो रिकॉर्ड समान हैं
order
order
बीच के रिकॉर्ड में अंतराल हैं
ये कई कारणों से आसानी से हो सकते हैं।
यह दृष्टिकोण है कि जूमला जैसे अनुप्रयोग हैं:
आप तर्क दे सकते हैं कि यहाँ इंटरफ़ेस खराब है, और यह कि मनुष्यों के बजाय सीधे संख्याओं को संपादित करने के लिए, उन्हें तीर या ड्रैग-एंड-ड्रॉप का उपयोग करना चाहिए और आप शायद सही होंगे। लेकिन पर्दे के पीछे भी वही हो रहा है।
कुछ लोगों ने ऑर्डर को स्टोर करने के लिए एक दशमलव का उपयोग करने का प्रस्ताव दिया है, ताकि आप "2.5" का उपयोग ऑर्डर 2 और 3 के रिकॉर्ड के बीच में रिकॉर्ड कर सकें। और जब यह थोड़ी मदद करता है, तो यकीनन यह और भी ज्यादा गड़बड़ है क्योंकि आप इसे समाप्त कर सकते हैं अजीब दशमलव (आप कहाँ रुकते हैं? 2.75? 2.875? 2.8125?)
क्या ऑर्डर को टेबल में स्टोर करने का एक बेहतर तरीका है?
orders
और ddl के साथ सवाल तय कर दिया है ।