ডাটাবেস নরমালাইজেশন কী? সর্বপ্রথম আসি, Normalization কি? কোন কিছুকে স্বাভাবিক অবস্থায় নিয়ে আসা। এখন ডাটাবেজের স্বাভাবিক অবস্থা বলতে, ডাটাবেজ থেকে প্রয়োজনের অতিরিক্ত জিনিস বাদ দেয়া যাকে ডাটা রিডানডেন্সি বলে এবং ডাটার বিশুদ্ধতা তৈরি করা যাকে ডাটা ইন্টিগ্রিটি ও বলা হয়। এখন Data Redundancy এবং Data Integrity কে উদাহরনসহ বর্ণনা করা যাক।
ডাটা রিডানডেন্সি – আমরা যখন ডাটাবেজ ডিজাইন করি তখন অনেক সময় প্রয়োজনের অতিরিক্ত ডাটা জমা হয়। যাতে ডাটাবেজের মধ্যে একই ডাটা বার বার জমা হয়। এতে ডাটার রিডানডেন্সি বেড়ে যায়। এখন যদি ডাটাবেজকে নরমালাইজ করা হয় এতে অতিরিক্ত বা অপ্রয়োজনীয় ডাটা আর থাতে না।
ডাটা ইন্টিগ্রিটি – Data Integrity বলতে ডাটার বিশুদ্ধতা বুঝানো হয়েছে। এখন প্রশ্ন আসতে পারে ডাটার বিশুদ্ধতা কি? ধরি ডাটাবেজ এমনভাবে ডিজাইন করা হয়েছে যে, একজন ছাত্রের পরিক্ষার ফলাফল একেক জায়গায় একেক রকম। এক জায়গায় তার সর্বমোট নাম্বার ৪৭০, অন্য জায়গায় ৪৭৭। যা চুড়ান্ত ফলাফল তৈরিতে সমস্যার সৃষ্টি করবে। এই সমস্যার মাধ্যমে স্পষ্টত ডাটা তার শুদ্ধতা হারিয়েছে। এখন এই সমস্যা থেকে উত্তরণের একমাত্র উপায় হচ্ছে ডাটাবেজ নরমালাইজেশন। ডাটাবেজ নরমালাইজেশন করলে এই সমস্যা সমাধান করে একটি শুদ্ধ ডাটাবেজ তৈরি করা সম্ভব।
নিচে একটি টেবিলের মাধ্যমে ডাটাবেজ নরমালাইজেশনের বিষয়টি আরো ভালোভাবে বোঝানেরা চেষ্টা করছি।
StdRoll | Name | SubjectName | Department | Semester |
40101 | Md. Kamrul Islam | Bangla, English, Mathematics | Computer | First |
40102 | Ruhul Amin | Bangla, ICT, Mathematics | Electrical | Third |
40103 | Rejaul Karim | Bangla, English, ICT | Civil | Fourth |
40104 | Fayej Chowdhury | Programming in Java, English, Mathematics | Textile | Seventh |
40105 | Faria Rahman | Bangla, English, DBMS | AIDT | First |
উপরের টেবিলটিতে কোন নরমালাইজেশন করা নাই। এখন যদি এই টেবিলে নতুন কোন ডাটা Insert বা সংযোজন , পরিবর্তন বা Update কিংবা Delete করতে চাই তাহলে অনেক সমস্যার সম্মুখীন হতে হবে। ধরি 40105 ডাটার DBMS বিষয়টি ভুল বসত দেয়া হয়েছে তার স্থানে ICT ও Programming in Java বিষয় সংযুক্ত হবে, সেক্ষেত্রে কিভাবে সংযোজন করবো, আবার প্রত্যেকটি বিষয়কে আলাদা করার জন্য কমা ব্যবহার করা হয়েছে, সেক্ষেত্রে কমা কিভাবে সংযুক্ত করবো।
এখন যদি আমরা উপরের টেবিলকে নরমালাইজেশন করি তাহলে দেখি সমস্যার সমাধান হয় কিনা।
ডাটাবেজ নরমালাইজেশনের প্রথম ধাপ হচ্ছে First Normal Form (1NF). First Normal Form (1NF) এর শর্ত হচ্ছে প্রত্যেকটি ডাটা আলাদা থাকবে। উপরের টেবিলে আমরা দেখতি পাচ্ছি, SubjectName কলামের একাধিক ডাটা একই ঘরে। সুতরাং প্রত্যেক বিষয়ের জন্য আলাদা আলাদা ঘর নিতে হবে। উপরের টেবিলকে First Normal Form (1NF) এ রূপান্তর করে নিচের টেবিলে দেখানো হলো।
StdRoll | Name | SubjectName | Total Marks | GPA |
40101 | Md. Kamrul Islam | Bangla | Computer | First |
40101 | Md. Kamrul Islam | English | Computer | First |
40101 | Md. Kamrul Islam | Mathematics | Computer | First |
40102 | Ruhul Amin | Bangla | Electrical | Third |
40102 | Ruhul Amin | ICT | Electrical | Third |
40102 | Ruhul Amin | Mathematics | Electrical | Third |
40103 | Rejaul Karim | Bangla | Civil | Fourth |
40103 | Rejaul Karim | English | Civil | Fourth |
40103 | Rejaul Karim | ICT | Civil | Fourth |
40104 | Fayej Chowdhury | Programming in Java | Textile | Seventh |
40104 | Fayej Chowdhury | English | Textile | Seventh |
40104 | Fayej Chowdhury | Mathematics | Textile | Seventh |
40105 | Faria Rahman | Bangla | AIDT | First |
40105 | Faria Rahman | English | AIDT | First |
40105 | Faria Rahman | DBMS | AIDT | First |
এখন উপরের টেবিলে ডাটা নরমালাইজেশন করা হয়েছে, যাতে ডাটাগুলোকে আলাদা করা হয়েছে। এখন যদি যে কোন একটি রো এর ডাটা পরিবর্তন করতে চাই কিংবা নতুন একটি ডাটা সংযোজন করতে চাই তা সহজেই করতে পারবো।
পরবর্তী অংশে Second Normal Form (2NF) এবং Third Normal Form (3NF) নিয়ে আলোচনা করবো।