ডেটাবেস ডিজাইন – মাইএসকিউয়েল (Database Design – MySQL) পার্ট – ০১

এটাতো সকলেই জানেন যে মাইসিক্যুয়েল (MySQL) একটি ওপেন সোর্স এবং রিলেশনাল ডেটাবেস।এটা ব্যবহার করে ছোট থেকে শুরু করে এন্টারপ্রাইজ লেভেলের ডেটাবেস তৈরী করা যায়।যাইহোক রিলেশনাল (Relational) ডেটাবেসের মুল সুবিধা হল ডেটার পূনরাবৃত্তি কমানো যায়।

বাস্তব সমস্যা কিভাবে সমাধান হচ্ছে এবং কেন রিলেশনাল ডেটাবেস উপকারী

ধরুন আপনি একটা এপ্লিকেশন বানালেন যেখানে ডেটাবেস আছে এবং এই ডেটাবেসে “users” নামে একটা টেবিল আছে,এই “users” টেবিলে এক একজন ইউজারের নাম, পেশা, অবস্থান ইত্যাদি ইত্যাদি তথ্য আছে।এরপর আপনার এপ্লিকেশনে কোথাও কোন ইউজারের প্রোফাইল বা কোন তথ্য দেখানো প্রয়োজন হল আপনি পিএইচপি ব্যবহার করে সেখানে তথ্য বের করে ব্রাউজারে দেখিয়ে দিলেন,এটা সমস্যা নয় সমস্যা হবে নিচের মত যদি অবস্থা হয়।

ধরুন “vendors”,”contracts” বা অন্যান্য নামে আরো টেবিল আছে যেখানে প্রাসঙ্গিক তথ্য আছে আর আপনার ক্লাইন্ট বলল যে, যখন কেউ ভেন্ডর বা কন্ট্রাক্ট এর কোন পেজে যাবে তখন এই ভেন্ডর/কন্ট্রাক্ট কোন ইউজার তৈরী করছে,তার নাম এবং সাথে সেই ইউজারের আরো কিছু তথ্য এই পেজে দেখাতে হবে।অর্থ্যাৎ ভেন্ডর পেজে “vendor” এবং “users” টেবিলের ডেটা লাগবে।এরুপ আপনার এপ্লিকেশনে শত শত পেজ থাকতে পারে এবং এমনও হতে পারে বরং এমনই হয় যে এক একটা পেজে ১০/১২ টি টেবিলের ডেটা দেখাতে হয়।এখন আপনি কি করবেন? vendor টেবিলে ইউজারের যেসব তথ্য লাগবে আপনি সেগুলি আবার vendor টেবিলে নতুন নতুন ফিল্ড তৈরী করে লিখে দেবেন ? না। এই সমস্যা সমাধানের জন্যই রিলেশনাল ডেটাবেস আসছে।আপনি “vendor” আর “users” টেবিলের মধ্যে রিলেশন/সম্পর্ক তৈরী করে দিন প্রাইমারি/ফরেন কি ব্যবহার করে ব্যাস এখন vendor এর যেকোন পেজে users টেবিল থেকে সংশ্লিষ্ট ইউজারের সকল তথ্য পাওয়া যাবে।এরুপ একটা টেবিলের সাথে এক বা একাধিক টেবিলের রিলেশন থাকতে পারে।

ডেটাবেস ডিজাইনের জন্য আপনি প্রচলিত যেকোন টুল ব্যবহার করতে পারেন।সবচেয়ে পরিচিত এরুপ দুটি টুল হচ্ছে phpMyAdmin এবং mysql-workbench . এছাড়া HeidiSQL দিয়ে অনেক কাজ করা যায় এটা অনেক হালকা এবং দ্রুত কাজ করা যায়।এখানে বেশিরভাগ টিউটোরিয়ালে phpMyAdmin দিয়ে ডিজাইন করে দেখানো হবে,তবে অন্য কোন টুল ব্যবহার করলে সেটার বর্ননা থাকবে যেমন কিছু কিছু কাজ phpMyAdmin দিয়ে হয়না উদাহরনস্বরুপ টেবিলের কলামের অবস্থান পরিবর্তন করে অন্য কোন কলামের উপরে বা নিচে নিতে চাইলে কোয়েরি লিখে করা ছাড়া বিকল্প পদ্ধতি নেই।এই কাজটি mysql-workbench বা HeidiSQL দিয়ে শুধু ক্লিক করেই করা যায়।

আর যদি কোন টুল ব্যবহার না করে কমান্ড দিয়ে দিয়ে ডেটাবেস ডিজাইন করতে চান করতে পারেন, সময় বেশি লাগবে এবং সুবিধা কম পাবেন।

Leave a Reply