গল্পের মাধ্যমে ডাটাবেজের বেসিকস, রিলেশনাল বনাম নন-রিলেশনাল ডাটাবেজ, ডিজাইন ফান্ডামেন্টালস এবং SQL/NoSQL
একটা গল্পের মাধ্যমে ডাটাবেজের বিভিন্ন বিষয়গুলো সহজভাবে তুলে ধরা যাক:
গল্পের কাহিনী: “তানিয়ার সুপার শপ এবং ডাটাবেজের গল্প”
১. রিলেশনাল ডাটাবেজ (Relational Database) বনাম নন-রিলেশনাল ডাটাবেজ (Non-Relational Database)
তানিয়া একটি সুপার শপ চালায় যেখানে অনেক ধরনের পণ্য রয়েছে—খাবারদাবার, ইলেকট্রনিক্স, জামাকাপড়, ইত্যাদি। তানিয়া ঠিক করল, সে পণ্যের সব তথ্য লিখে রাখবে যাতে যখনই দরকার হয়, দ্রুত খুঁজে পায়। সে দুটি পদ্ধতির কথা ভাবল:
রিলেশনাল ডাটাবেজ: তানিয়া পণ্যের তথ্য এমনভাবে লিখল যেখানে প্রতিটি পণ্য আলাদা আলাদা টেবিলে সংরক্ষিত থাকবে এবং সেই টেবিলগুলোর মধ্যে সম্পর্ক থাকবে। উদাহরণস্বরূপ:
- প্রোডাক্ট টেবিল: প্রোডাক্ট আইডি, নাম, ক্যাটেগরি আইডি, দাম
- ক্যাটেগরি টেবিল: ক্যাটেগরি আইডি, ক্যাটেগরি নাম
এখানে প্রোডাক্ট টেবিল এবং ক্যাটেগরি টেবিলের মধ্যে ক্যাটেগরি আইডি দিয়ে সম্পর্ক তৈরি হলো। এটাকে বলা হয় রিলেশনাল ডাটাবেজ।
নন-রিলেশনাল ডাটাবেজ: এরপর তানিয়া ভাবল, এমন কিছু পণ্য আছে যেগুলোর অনেক ভিন্ন তথ্য আছে, যেমন ইলেকট্রনিক পণ্যগুলোর মডেল, ওয়ারেন্টি, ব্র্যান্ড, ইত্যাদি। তাই সে সব তথ্য এক জায়গায় রাখবে, যেন কোনো সম্পর্কিত টেবিলের প্রয়োজন না হয়। সে সব তথ্য একটা ডকুমেন্ট আকারে রাখল, যা নন-রিলেশনাল ডাটাবেজ এর উদাহরণ।
বাস্তব উদাহরণ:
- রিলেশনাল ডাটাবেজ: MySQL, PostgreSQL (যেখানে টেবিল এবং সম্পর্কের মাধ্যমে ডেটা সংরক্ষণ করা হয়)।
- নন-রিলেশনাল ডাটাবেজ: MongoDB (যেখানে ডকুমেন্ট আকারে ডেটা সংরক্ষণ করা হয়)।
২. ডাটাবেজ ডিজাইনের মৌলিক বিষয় (Database Design Fundamentals)
তানিয়া ঠিক করল, তার ডাটাবেজ ডিজাইন করতে হবে যেন সহজেই তথ্য খুঁজে পাওয়া যায় এবং ডেটার পুনরাবৃত্তি (duplication) না হয়। তাই সে কিছু মৌলিক বিষয় মাথায় রাখল:
- নর্মালাইজেশন: তানিয়া প্রতিটি তথ্য সঠিকভাবে আলাদা করে টেবিলগুলোতে রাখল, যেন একই তথ্য বারবার না রাখতে হয়। উদাহরণস্বরূপ, ক্যাটেগরি টেবিলে শুধু ক্যাটেগরির তথ্য থাকবে, পণ্যের টেবিলে পণ্যের তথ্য।
- প্রাইমারি এবং ফরেন কি: তানিয়া প্রতিটি টেবিলে একটি অনন্য প্রাইমারি কি যোগ করল, যেমন প্রোডাক্ট টেবিলে প্রোডাক্ট আইডি। এরপর, সম্পর্কিত টেবিলের মধ্যে ফরেন কি দিয়ে সম্পর্ক তৈরি করল।
- ইন্ডেক্সিং: পণ্য খুঁজে পেতে তানিয়া কিছু বিশেষ সূচক (index) ব্যবহার করল, যেন পণ্যগুলো দ্রুত খুঁজে পাওয়া যায়।
বাস্তব উদাহরণ: তানিয়া তার সুপার শপে যেমন প্রতিটি পণ্যের জন্য নির্দিষ্ট কোড ব্যবহার করে এবং প্রতিটি ক্যাটেগরি আলাদা করে রাখে, ঠিক তেমনি ডাটাবেজ ডিজাইন করার সময় টেবিলগুলো এবং তাদের মধ্যে সম্পর্কগুলো ঠিকমতো পরিকল্পনা করা হয়।
৩. SQL এবং NoSQL এর বেসিকস (SQL Basics and NoSQL Overview)
একদিন তানিয়া জানতে চাইল, তার কতগুলো ইলেকট্রনিক পণ্য আছে এবং তাদের দাম কত। এজন্য সে ডাটাবেজ থেকে তথ্য বের করতে SQL ব্যবহার করল:
SELECT * FROM products WHERE category_id = 1;
এখানে SELECT কমান্ড দিয়ে সে সব ইলেকট্রনিক পণ্য দেখল। SQL হলো স্ট্রাকচার্ড কুয়েরি ল্যাঙ্গুয়েজ, যা রিলেশনাল ডাটাবেজে ডেটা ম্যানেজমেন্টের জন্য ব্যবহার হয়।
অন্যদিকে, তার মোবাইল অ্যাপ ডেভেলপার তাকে বলল, “আমরা একটা মোবাইল অ্যাপ তৈরি করব, যেখানে প্রচুর ব্যবহারকারীর তথ্য একসাথে সেভ করতে হবে এবং বিভিন্ন ধরনের ডেটা রাখতে হবে। এজন্য MongoDB ব্যবহার করো।” MongoDB হলো একটি NoSQL ডাটাবেজ, যেখানে JSON ডকুমেন্ট আকারে ডেটা সেভ করা হয়।
বাস্তব উদাহরণ:
- SQL দিয়ে তানিয়া তার পণ্যের তথ্য খুব সহজে ফিল্টার করতে পারে, যেমন প্রোডাক্টের নাম, দাম ইত্যাদি বের করতে।
- NoSQL দিয়ে তানিয়া তার মোবাইল অ্যাপ্লিকেশনের বিভিন্ন ধরনের ডেটা সহজে সংরক্ষণ করতে পারে।
গল্পের সংক্ষিপ্তসার:
- রিলেশনাল ডাটাবেজ: যেখানে টেবিল এবং টেবিলের মধ্যে সম্পর্ক থাকে।
- নন-রিলেশনাল ডাটাবেজ: যেখানে তথ্যগুলো ডকুমেন্ট আকারে রাখা হয়।
- ডাটাবেজ ডিজাইনের মৌলিক বিষয়: টেবিলের মধ্যে সম্পর্ক তৈরি করা এবং ডেটার পুনরাবৃত্তি কমানো।
- SQL এবং NoSQL: SQL হলো রিলেশনাল ডাটাবেজের জন্য কুয়েরি ল্যাঙ্গুয়েজ, আর NoSQL হলো নন-রিলেশনাল ডাটাবেজ, যেখানে ডকুমেন্ট আকারে ডেটা রাখা হয়।
এই গল্পের মাধ্যমে আমরা তানিয়ার সুপার শপের উদাহরণ ব্যবহার করে ডাটাবেজের মূল ধারণাগুলো সহজভাবে বোঝার চেষ্টা করলাম!