ডেটাবেস নর্মালাইজেশন একটি প্রক্রিয়া যা ডেটাবেসের গুণগত মান বৃদ্ধি করতে সাহায্য করে এবং ডেটার অখণ্ডতা বজায় রাখতে সাহায্য করে। এটি সাধারণত বিভিন্ন নর্মাল ফর্মে বিভক্ত করা হয়। নিচে 1NF, 2NF, 3NF, এবং BCNF (Boyce-Codd Normal Form) এর বিশদ আলোচনা করা হলো।
১. 1NF (First Normal Form)
1NF নিশ্চিত করে যে টেবিলের প্রতিটি কলাম মৌলিক ডেটা ধারণ করে এবং প্রতিটি টাপল (সারি) এককভাবে অনন্য। এটি ডেটার বিভাজ্যতা এবং অ্যাট্রিবিউটের মাল্টিভ্যালু যুক্তির অনুপস্থিতি নিশ্চিত করে।
বৈশিষ্ট্য:
- প্রতিটি টেবিলের টাপল অনন্য হতে হবে।
- কোনও কলামে মাল্টিভ্যালু বা সেটের উপাদান থাকতে পারবে না।
উদাহরণ:
1NF Violation:
| StudentID | Name | Subjects |
|-----------|---------|------------------|
| 1 | Alice | Math, Science |
| 2 | Bob | English |
1NF Compliant:
| StudentID | Name | Subject |
|-----------|-------|-----------|
| 1 | Alice | Math |
| 1 | Alice | Science |
| 2 | Bob | English |
২. 2NF (Second Normal Form)
2NF একটি টেবিলকে 1NF তে থাকতে হয় এবং সমস্ত অপ্রাথমিক অ্যাট্রিবিউটগুলি প্রাথমিক কী উপর সম্পূর্ণ নির্ভরশীল থাকতে হবে। অর্থাৎ, অপ্রাথমিক অ্যাট্রিবিউটগুলির কোন অংশ প্রাথমিক কী দ্বারা নির্ধারণ করা উচিত নয়।
বৈশিষ্ট্য:
- 1NF তে থাকতে হবে।
- প্রতিটি অপ্রাথমিক অ্যাট্রিবিউট পূর্ণরূপে প্রাথমিক কী দ্বারা নির্ভরশীল হতে হবে।
উদাহরণ:
2NF Violation:
| StudentID | CourseID | CourseName |
|-----------|----------|---------------|
| 1 | 101 | Math |
| 1 | 102 | Science |
| 2 | 101 | Math |
এখানে, CourseName শুধুমাত্র CourseID উপর নির্ভরশীল, যা 2NF এর নিয়ম লঙ্ঘন করে।
2NF Compliant:
| StudentID | CourseID |
|-----------|----------|
| 1 | 101 |
| 1 | 102 |
| 2 | 101 |
| CourseID | CourseName |
|----------|---------------|
| 101 | Math |
| 102 | Science |
৩. 3NF (Third Normal Form)
3NF একটি টেবিলকে 2NF তে থাকতে হয় এবং অপ্রাথমিক অ্যাট্রিবিউটগুলির মধ্যে কোন ট্রানজিটিভ নির্ভরতা থাকতে পারবে না। অর্থাৎ, একটি অপ্রাথমিক অ্যাট্রিবিউট অন্য একটি অপ্রাথমিক অ্যাট্রিবিউট দ্বারা নির্ধারিত হলে এটি 3NF লঙ্ঘন করবে।
বৈশিষ্ট্য:
- 2NF তে থাকতে হবে।
- অপ্রাথমিক অ্যাট্রিবিউটগুলির মধ্যে ট্রানজিটিভ নির্ভরতা থাকা উচিত নয়।
উদাহরণ:
3NF Violation:
| StudentID | Advisor | AdvisorPhone |
|-----------|-------------|--------------|
| 1 | Dr. Smith | 123-4567 |
| 2 | Dr. Brown | 987-6543 |
এখানে, AdvisorPhone Advisor দ্বারা নির্ধারিত হচ্ছে, যা 3NF লঙ্ঘন করে।
3NF Compliant:
| StudentID | Advisor |
|-----------|-------------|
| 1 | Dr. Smith |
| 2 | Dr. Brown |
| Advisor | AdvisorPhone |
|-------------|--------------|
| Dr. Smith | 123-4567 |
| Dr. Brown | 987-6543 |
৪. BCNF (Boyce-Codd Normal Form)
BCNF হল 3NF এর একটি শক্তিশালী সংস্করণ। একটি টেবিল BCNF তে থাকবে যদি প্রতিটি ফাংশনাল নির্ভরতাকে প্রাথমিক কী দ্বারা সম্পূর্ণরূপে নির্ভরশীল থাকতে হয়। যদি কোন অ্যাট্রিবিউট একটি ফাংশনাল নির্ভরতায় প্রাথমিক কী না হয়, তবে এটি BCNF লঙ্ঘন করবে।
বৈশিষ্ট্য:
- 3NF তে থাকতে হবে।
- সমস্ত ফাংশনাল নির্ভরতাগুলি প্রাথমিক কী দ্বারা সম্পূর্ণরূপে নির্ভরশীল থাকতে হবে।
উদাহরণ:
BCNF Violation:
| CourseID | Instructor |
|----------|-------------|
| 101 | Dr. Smith |
| 101 | Dr. Brown |
| 102 | Dr. Smith |
এখানে, Instructor CourseID দ্বারা সম্পূর্ণরূপে নির্ভরশীল নয়, কারণ একই Instructor একাধিক CourseID নির্দেশ করতে পারে।
BCNF Compliant:
| CourseID | Instructor |
|----------|-------------|
| 101 | Dr. Smith |
| 102 | Dr. Brown |
| Instructor | Phone |
|-------------|-----------|
| Dr. Smith | 123-4567 |
| Dr. Brown | 987-6543 |
সারসংক্ষেপ
- 1NF (First Normal Form): টেবিলের প্রতিটি টাপল মৌলিক ডেটা ধারণ করে এবং মাল্টিভ্যালু উপাদান থাকে না।
- 2NF (Second Normal Form): 1NF তে থাকতে হয় এবং সমস্ত অপ্রাথমিক অ্যাট্রিবিউট প্রাথমিক কী দ্বারা সম্পূর্ণরূপে নির্ভরশীল থাকতে হয়।
- 3NF (Third Normal Form): 2NF তে থাকতে হয় এবং অপ্রাথমিক অ্যাট্রিবিউটগুলির মধ্যে কোন ট্রানজিটিভ নির্ভরতা থাকতে পারবে না।
- BCNF (Boyce-Codd Normal Form): 3NF তে থাকতে হয় এবং সমস্ত ফাংশনাল নির্ভরতাগুলি প্রাথমিক কী দ্বারা সম্পূর্ণরূপে নির্ভরশীল থাকতে হবে।
নর্মালাইজেশন একটি গুরুত্বপূর্ণ প্রক্রিয়া যা ডেটাবেস ডিজাইন এবং ডেটার অখণ্ডতা বজায় রাখতে সহায়ক।