2NF কী?
স্বাভাবিকীকরণের দ্বিতীয় ধাপ হলো 2NF।
একটি টেবিল 2NF-এ থাকবে, শুধু তখনই যখন একটি রিলেশন 1NF-এ থাকে এবং সব নিয়ম মেনে চলে, এবং প্রতিটি নন-কি অ্যাট্রিবিউট প্রাইমারি কির ওপর পূর্ণাঙ্গভাবে নির্ভরশীল থাকে।
দ্বিতীয় স্বাভাবিক ফর্ম প্রাইমারি কির ওপর আংশিক নির্ভরতা দূর করে।
একটি উদাহরণ দেখি:
উদাহরণ (টেবিল 2NF লঙ্ঘন করে)
<StudentProject>
| StudentID | ProjectID | StudentName | ProjectName |
| S89 | P09 | Olivia | Geo Location |
| S76 | P07 | Jacob | Cluster Exploration |
| S56 | P03 | Ava | IoT Devices |
| S92 | P05 | Alexandra | Cloud Deployment |
উপরোক্ত টেবিলে আংশিক নির্ভরতা আছে; দেখি কিভাবে:
প্রাইম কি অ্যাট্রিবিউটগুলো হলো StudentID এবং ProjectID।
উল্লেখিত সূত্র অনুযায়ী, নন-প্রাইম অ্যাট্রিবিউটগুলো অর্থাৎ StudentName এবং ProjectName একটি ক্যান্ডিডেট কির অংশের ওপর ফাংশনালি নির্ভরশীল হতে হবে আংশিক নির্ভরতা হতে।
StudentName StudentID- দ্বারা নির্ধারিত হতে পারে, যা রিলেশনটিকে আংশিক নির্ভরশীল করে।
ProjectName ProjectID- দ্বারা নির্ধারিত হতে পারে, যা রিলেশনটিকে আংশিক নির্ভরশীল করে।
সুতরাং, <StudentProject> রিলেশন স্বাভাবিকীকরণের 2NF লঙ্ঘন করে এবং একটি খারাপ ডাটাবেস ডিজাইন হিসেবে বিবেচিত।
উদাহরণ (টেবিল 2NF-এ রূপান্তরিত)
আংশিক নির্ভরতা এবং 2NF লঙ্ঘন দূর করতে উপরের টেবিলগুলো ডিকম্পোজ করুন:
<StudentInfo>
| StudentID | ProjectID | StudentName |
| S89 | P09 | Olivia |
| S76 | P07 | Jacob |
| S56 | P03 | Ava |
| S92 | P05 | Alexandra |
<ProjectInfo>
| ProjectID | ProjectName |
| P09 | Geo Location |
| P07 | Cluster Exploration |
| P03 | IoT Devices |
| P05 | Cloud Deployment |
এখন রিলেশনটি ডাটাবেস স্বাভাবিকীকরণের 2য় স্বাভাবিক ফর্মে আছে।
