একটি ডাটাবেস ব্যবহার করার সময় একটি সাধারণ প্রয়োজন যাতে রেকর্ডগুলি অ্যাক্সেস করা হয়। উদাহরণস্বরূপ, আমার যদি একটি ব্লগ থাকে তবে আমি আমার ব্লগ পোস্টকে স্বেচ্ছাসেবীভাবে সাজিয়ে তুলতে সক্ষম হতে চাই। এই এন্ট্রিগুলিতে প্রায়শই প্রচুর সম্পর্ক থাকে, সুতরাং একটি সম্পর্কিত ডেটাবেসটি বোধগম্য মনে হয়।
আমি যে সাধারণ সমাধানটি দেখেছি তা হল একটি পূর্ণসংখ্যা কলাম যুক্ত করা 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
রেকর্ডগুলির মধ্যে ফাঁক রয়েছে
এগুলি বেশ কয়েকটি কারণে বেশ সহজেই ঘটতে পারে।
এটি জুমলার মতো অ্যাপ্লিকেশনগুলি গ্রহণ করে:
আপনি তর্ক করতে পারেন যে এখানে ইন্টারফেসটি খারাপ, এবং মানুষের সরাসরি সংখ্যা সম্পাদনা করার পরিবর্তে তাদের তীর বা ড্র্যাগ-অ্যান্ড-ড্রপ ব্যবহার করা উচিত — এবং আপনি সম্ভবত সঠিক হতেন। তবে পর্দার আড়ালে একই ঘটনা ঘটছে।
কিছু লোক অর্ডার সংরক্ষণের জন্য দশমিক ব্যবহারের প্রস্তাব দিয়েছিল, যাতে আপনি আদেশ ২ এবং 3 এ রেকর্ডের মধ্যে একটি রেকর্ড সন্নিবেশ করতে "2.5" ব্যবহার করতে পারেন এবং এটি যদি কিছুটা সহায়তা করে তবে এটি তর্কসাপেক্ষে এমনকি আরও মেসিওর হয় কারণ আপনি শেষ পর্যন্ত যেতে পারেন অদ্ভুত দশমিক (আপনি কোথায় থামবেন? 2.75? 2.875? 2.8125?)
কোনও টেবিলে অর্ডার সঞ্চয় করার আরও ভাল উপায় কি নেই?
orders
এবং ডিডিএল দিয়ে স্থির করেছি ।