এর মধ্যে সামঞ্জস্যপূর্ণ, অপ্রয়োজনীয়, এবং সম্পর্কিত ডেটা থাকা তথ্যশালা খুবই উপকারী। এই উদ্দেশ্যে, দ ডাটাবেস স্বাভাবিককরণ প্রক্রিয়া সঞ্চালিত হয়। আমরা খুব ভালো করেই জানি যে ডাটাবেস হল এমন একটি সিস্টেম যা যেকোন তথ্যকে সুসংগঠিত করে। অত: পর ডাটাবেস স্বাভাবিককরণ প্রক্রিয়া আপনাকে একটি সুগঠিত এবং সুনির্দিষ্ট ফ্যাশনে ডাটাবেসের ডেটা পরিচালনা করতে সক্ষম করে।
সুচিপত্র
- ডাটাবেস নরমালাইজেশন কি?
- ডেটাবেস স্বাভাবিকীকরণের উদ্দেশ্য
- ডাটাবেস স্বাভাবিককরণে অসঙ্গতি
- ডাটাবেসের মধ্যে কী
- ডাটাবেসে কার্যকরী নির্ভরতা
- ডাটাবেস স্বাভাবিককরণের বিভিন্ন ফর্ম
- উপসংহার
- প্রস্তাবিত প্রবন্ধ
ডাটাবেস নরমালাইজেশন কি?
দ্য ডাটাবেস স্বাভাবিককরণ প্রক্রিয়া নির্মূল করে ডেটা রিডানডেন্সি এবং উন্নত করে তথ্য অখণ্ডতা . ডেটা রিডানডেন্সি পুনরাবৃত্তিমূলক তথ্য বোঝায়। এটি ডিস্কে একটি বড় স্থান দখল করে এবং এর ফলে ডিস্ক মেমরির অপচয় হয়। যদি একটি একক জায়গায় ডেটা পরিবর্তন করা হয়, তবে এটি যেখানেই থাকুক না কেন তা পরিবর্তন করতে হবে। তাই, ডাটাবেস টেবিলে অপ্রয়োজনীয় এবং পুনরাবৃত্তিমূলক ডেটা থাকা সম্ভব নয়।
আরেকটি শব্দ, তথ্য অখণ্ডতা , মানে ডেটার সম্পূর্ণতা এবং ধারাবাহিকতা। ডাটাবেস তথ্য সঠিক এবং অর্থপূর্ণ হতে হবে. সুতরাং, ডেটা অখণ্ডতা এবং অ-পুনরাবৃত্তি নিশ্চিত করতে, ডাটাবেস স্বাভাবিককরণ নিযুক্ত করা হয়।
ডেটা অপ্রয়োজনীয়তা দূর করা এবং ডেটা অখণ্ডতা বাড়ানোর পাশাপাশি, ডাটাবেস স্বাভাবিককরণ প্রক্রিয়া বিভিন্ন ডাটাবেস অসঙ্গতি দূর করে, যেমন সন্নিবেশ, মুছে ফেলা এবং আপডেট করা। ডাটাবেসের একটি অসঙ্গতি ডেটা অখণ্ডতাকে দুর্বল করে।
নর্মালাইজেশনের প্রাথমিক উদ্দেশ্য হল ডাটাবেসের মধ্যে থাকা বড় টেবিল বা সম্পর্ককে ছোট করে ভাগ করা এবং তাদের মধ্যে সম্পর্ক প্রবর্তন করা। প্রতিটি টেবিল বা সম্পর্কের একক বৈশিষ্ট্য মান থাকতে হবে, যাকে পারমাণবিক মান বলা হয়। ডাটাবেস টেবিলে শুধুমাত্র সম্পর্কিত তথ্য থাকতে হবে এবং অন্য কোন অপ্রাসঙ্গিক ডেটা থাকবে না।
ডেটাবেস স্বাভাবিকীকরণের উদ্দেশ্য
যখন আপনি ডাটাবেস স্বাভাবিক করেন, নিশ্চিত করুন যে আপনি নিম্নলিখিত উদ্দেশ্যগুলি অর্জন করেছেন:
- ডাটাবেসের তথ্যগুলো যৌক্তিকভাবে সংরক্ষণ করতে হবে। বৃহত্তর সারণিগুলিকে ছোট আকারে বিভক্ত করা হয়েছে। প্রতিটি ছোট গোষ্ঠীকে অবশ্যই বড় দলের অংশ প্রতিফলিত করতে হবে।
- নিশ্চিত করুন যে আপনার ডাটাবেস সামঞ্জস্যপূর্ণ। ডাটাবেসের যেকোনো পরিবর্তন যেমন সন্নিবেশ, মুছে ফেলা, এবং একটি আপডেট ডেটা অখণ্ডতার ক্ষতি করবে না।
- যদি একই ডেটা স্বতন্ত্র অবস্থানে উপস্থিত থাকে, তাহলে আপনাকে এটি সব ক্ষেত্রেই সংশোধন করতে হবে। ডাটাবেস স্বাভাবিক করার সময়, নিশ্চিত করুন যে আপনাকে শুধুমাত্র একটি অবস্থানে ডেটা আপডেট করতে হবে।
- ক -> খ
- খ A ধরে রাখে না
- খ -> গ
- Stud_Id -> Stud_Name
- Stud_Name Stud_Id ধারণ করে না।
- Stud_Name -> Stud_Age
- টেবিল প্রথম স্বাভাবিক ফর্ম সঙ্গে মেনে চলতে হবে।
- টেবিলের যেকোন নন-প্রাইম অ্যাট্রিবিউট প্রার্থীর কী-এর সঠিক উপসেটের উপর নির্ভরশীল হওয়া উচিত নয়।
- সম্পর্ক দ্বিতীয় স্বাভাবিক ফর্ম (2NF) মেনে চলতে হবে।
- যে কোনো নন-প্রাইম অ্যাট্রিবিউটের সুপার কী-এর উপর ট্রানজিটিভ কার্যকরী নির্ভরতা থাকা উচিত নয়।
- X সম্পর্কের সুপারকি হওয়া উচিত।
- Y হওয়া উচিত সম্পর্কের প্রধান-অ্যাট্রিবিউট।
- সম্পর্ক তৃতীয় স্বাভাবিক ফর্ম (3NF) হতে হবে।
- যেকোন কার্যকরী নির্ভরতার জন্য A -> B সম্পর্কের ক্ষেত্রে A কে সুপারকি হওয়া উচিত।
- সম্পর্ক BOYCE CODD সাধারণ ফর্ম মেনে চলতে হবে।
- টেবিলের বৈশিষ্ট্যগুলির মধ্যে কোনও বহু-মূল্যবান নির্ভরতা থাকা উচিত নয়।
- টেবিলটি চতুর্থ স্বাভাবিক আকারে (4NF)।
- কোন যোগদান নির্ভরতা থাকা উচিত নয়, এবং সম্পর্কের যোগদান ক্ষতিহীন হওয়া উচিত।
ডাটাবেস স্বাভাবিককরণে অসঙ্গতি
এ ডাটাবেস ব্যবস্থাপনা পদ্ধতি (DBMS), তিনটি ভিন্ন ধরণের অসঙ্গতি রয়েছে, যথা, সন্নিবেশ, মুছে ফেলা এবং আপডেট। এই তিনটি অসঙ্গতি ডেটা অখণ্ডতার নীতিকে প্রভাবিত করে।

আসুন তিনটি অসঙ্গতির প্রতিটি নিয়ে আলোচনা করি। তবে, আসুন প্রথমে একটি সম্পর্ক বা টেবিল কর্মচারী বিবেচনা করুন। এটিতে চারটি বৈশিষ্ট্য রয়েছে, Emp_ID, Emp_Name, Emp_Add এবং Ep_Dept, যা কর্মীদের ডেটা সঞ্চয় করে।
কর্মচারী
Emp_ID | Emp_Name | Emp_Add | Emp_Dept |
---|---|---|---|
301 | জন | ক্যালিফোর্নিয়া | D01 |
301 | জন | ক্যালিফোর্নিয়া | D022 |
323 | স্যামি | ওয়াশিংটন ডিসি | D08 |
366 | নিক | শিকাগো | D10 |
366 | নিক | শিকাগো | D14 |
উপরের সারণীটি কর্মচারীর তথ্য সংরক্ষণ করে। তবে, এটি একটি স্বাভাবিক আকারে নয়। যখন টেবিলটি একটি স্বাভাবিক উপায়ে না থাকে, তখন আপনি আকর্ষণীয় নতুন ডেটা, কোনো বিদ্যমান ডেটা মুছে ফেলা বা বর্তমান ডেটা আপডেট করার সময় বিভিন্ন সমস্যার সম্মুখীন হতে পারেন।
সন্নিবেশ অসঙ্গতি ব্যবহারকারীদের ডাটাবেসে কোনো নতুন ডেটা যোগ করার অনুমতি দেয় না। এটি কিছু নির্দিষ্ট তথ্যের অনুপস্থিতির কারণে। উপরের কর্মচারী সম্পর্ক বিবেচনা করুন. যদি কোন নতুন কর্মচারী কোম্পানিতে যোগদান করে, এবং তাকে বা তার জন্য কোন বিভাগ বরাদ্দ না করা হয়, তবে সেই নির্দিষ্ট কর্মচারীর ডেটা টেবিলে ঢোকানো যাবে না। কারণ আমরা Emp_Dept এ NULL সন্নিবেশ করতে পারি না।
আরেকটি অসঙ্গতি হল মুছে ফেলার অসঙ্গতি। এই পরিস্থিতিতে, ডেটা মুছে ফেলা সম্ভব হবে না কারণ এর ফলে ডেটা ক্ষতি হতে পারে। উপরের কর্মচারী টেবিল বিবেচনা করুন. ধরুন D08 বিভাগটি বন্ধ হয়ে গেলে, কর্মচারী টেবিল থেকে Sammy সম্পর্কিত ডেটা মুছে ফেলা হবে। সুতরাং, কোম্পানিটি স্যামির ডেটা হারাবে কারণ সে শুধুমাত্র একটি বিভাগে কাজ করে।
একটি আপডেট অসঙ্গতি হল আরেকটি উপাদান যা ডেটা অসঙ্গতি তৈরি করে। একটি আপডেটের অসঙ্গতি বোঝার জন্য আমরা কর্মচারী টেবিলের একটি উদাহরণ নিই। কর্মচারী জনকে বিবেচনা করুন, যিনি D01 এবং D022 বিভাগে কাজ করেন। আপনি যদি জনের ঠিকানা পরিবর্তন করতে চান তবে আপনাকে D01 এবং D022 উভয় সারি আপডেট করতে হবে; এটি ডেটা অখণ্ডতার নীতির ক্ষতি করতে পারে। যদি ঠিকানাটি এক সারিতে পরিবর্তন করা হয় এবং অন্য সারিটি আগেরটির মতোই থাকে, তবে এটি একটি আপডেটের অসঙ্গতিতে শেষ হয়।
দ্য ডাটাবেস স্বাভাবিককরণ একটি দুর্বল ডাটাবেস টেবিলের ফলে উপরের তিনটি অসামঞ্জস্যতা দূর করতে কার্যকর। স্বাভাবিককরণের বেশ কিছু নিয়ম বা রূপ রয়েছে। স্বাভাবিকীকরণ ফর্মের গভীরে যাওয়ার আগে, আমরা প্রথমে ডাটাবেস সিস্টেমে স্বতন্ত্র ধরনের কী শিখব। ডাটাবেস নর্মালাইজেশন শেখার আগে আপনাকে অবশ্যই কী-এর ধরন জানতে হবে।
ডাটাবেসের মধ্যে কী
ডাটাবেসের কীগুলি এতে উপস্থিত ডেটা সনাক্ত করতে গুরুত্বপূর্ণ ভূমিকা পালন করে। কী ব্যবহার করে, আপনি টেবিল থেকে দ্রুত এবং সহজে যেকোনো ডেটা খুঁজে পেতে পারেন। বড় টেবিলগুলিকে ছোট করে ভাগ করা হয় এবং ছোট টেবিলগুলিকে সংযুক্ত করতে কীগুলি ব্যবহার করা হয়।
আরো দেখুন 20 সেরা ওয়ার্কফ্লো ম্যানেজমেন্ট সফ্টওয়্যার
চলুন DBMS-এ ব্যবহৃত বিভিন্ন ধরনের কী দেখি।
দ্য প্রাথমিক কী টেবিলের একটি বৈশিষ্ট্য যা যেকোনো সারি বা টিপলকে স্বতন্ত্রভাবে সনাক্ত করে। আপনাকে অবশ্যই প্রাথমিক কী চয়ন করতে হবে যা টেবিল থেকে অনন্যভাবে কোনো ডেটা খুঁজে পাবে।
একটি সম্পর্ক কর্মচারী বিবেচনা করুন. এতে Emp_ID, Emp_Name, Emp_Add, Passport_Number এবং License_Number এর মতো বৈশিষ্ট্য রয়েছে। কর্মচারী সম্পর্কের প্রাথমিক কী হবে Emp_ID, কারণ এটি প্রতিটি কর্মচারীর ডেটা অনন্যভাবে সনাক্ত করবে। উপরন্তু, Passport_Number এবং License_Number এছাড়াও প্রাথমিক কী হিসাবে কাজ করতে পারে কারণ এগুলি প্রত্যেক কর্মচারীর জন্য অনন্য।
দ্য প্রার্থী কী যেকোনো টেবিলের ন্যূনতম গুণাবলীর একটি সেট এবং সম্পর্কটিতে অনন্যভাবে যেকোনো সারি সনাক্ত করতে পারে। একটি একক সম্পর্কের জন্য একক বা একাধিক প্রার্থী কী থাকতে পারে।
কর্মচারীর উপরোক্ত সম্পর্ক বিবেচনা করুন। আমরা দেখেছি যে প্রাথমিক কী হল Emp_ID, যা প্রত্যেক কর্মচারীর জন্য অনন্য এবং অ-পুনরাবৃত্ত। অন্য দুটি বৈশিষ্ট্য, Passport_Number এবং License_Number, এছাড়াও অ-পুনরাবৃত্ত। সুতরাং, তারা উভয়ই প্রার্থীর কী হিসাবে কাজ করতে পারে।
হিসাবে প্রাথমিক কী এবং প্রার্থী কী প্রতিটি টিপলকে অনন্যভাবে চিহ্নিত করে, সুপার কী টেবিলের অনন্য টিপল খুঁজে পেতেও সাহায্য করে। প্রার্থী কী সুপার কী-এর উপসেট। এক বা একাধিক সুপার কী থাকতে পারে।
সুপার কী সম্পর্কে স্পষ্ট ধারণা পেতে আমরা একই কর্মচারী সম্পর্ক ব্যবহার করব। Emp_ID অ্যাট্রিবিউট অনন্যভাবে যেকোনো কর্মচারীর ডেটা খুঁজে বের করতে পারে। Emp_Name বৈশিষ্ট্যটি প্রাথমিক কী হিসাবে ব্যবহার করা যাবে না, কারণ দুইজন কর্মচারীর একই নাম থাকতে পারে। কিন্তু, Emp_ID এবং Emp_Name এর সংমিশ্রণটি কর্মচারীর ডেটা অনন্যভাবে খুঁজে পেতে পারে। সুতরাং, (Epm_ID, Emp_Name) কর্মচারী সম্পর্কের জন্য সুপার কী হিসাবে কাজ করে।
Passpt_Number এবং License_Number এছাড়াও কর্মচারী সম্পর্কের সুপার কী।
বিদেশী কী উপরের তিনটি কী থেকে বেশ আলাদা। এটি দুটি সম্পর্কের মধ্যে সংযোগ স্থাপন করতে ব্যবহৃত হয়। A এবং B দুটি সম্পর্কের কথা বিবেচনা করুন। ধরুন A সম্পর্কের কোনো বৈশিষ্ট্য হল B সম্পর্কের প্রাথমিক কী; যে বৈশিষ্ট্য বিদেশী কী হিসাবে উল্লেখ করা হয়.
বিদেশী মূল ধারণাটি বোঝার জন্য আমরা সহজ উদাহরণটি দেখব। কোম্পানির কর্মীদের উদাহরণ নেওয়া যাক। প্রত্যেক কর্মচারীকে বিভিন্ন বিভাগে নিয়োগ দেওয়া হয়। তাই, আমরা দুটি সম্পর্ক ব্যবহার করি, কর্মচারী এবং বিভাগ।
আমরা কর্মচারী সম্পর্ককে কর্মচারী হিসাবে সংজ্ঞায়িত করি ( Emp_ID , Emp_Name, Passport_Number, License_Number, Dept_ID), এবং বিভাগ হিসাবে বিভাগ সম্পর্ক ( বিভাগ_আইডি , বিভাগ_নাম)।
কর্মচারী সম্পর্কে, Emp_ID হল প্রাথমিক কী, যেখানে Dept_ID হল বিভাগের সম্পর্কের প্রাথমিক কী। এট্রিবিউট Dept_Id হল কর্মচারী সম্পর্কের একটি অ্যাট্রিবিউট, যা ডিপার্টমেন্ট রিলেশনের প্রাথমিক কী। তাই, Dept_ID বিদেশী কী হিসাবে কাজ করে।
একটি যৌগিক কী হল বৈশিষ্ট্যগুলির একটি গ্রুপ যা অনন্যভাবে সম্পর্ক থেকে খুব কর্মচারীর ডেটা খুঁজে পায়। যৌগিক কী হল দুটি এবং দুটির বেশি বৈশিষ্ট্যের সমন্বয়।
উপরোক্ত কর্মচারী সম্পর্ক Emp থেকে ( Emp_ID , Emp_Name, Passport_Number, License_Number), কম্পোজিট কী হল (Emp_name, Emp_ID)।
ডেটা স্বাভাবিকীকরণ ফর্মের আগে, আরেকটি ধারণা আপনাকে অবশ্যই শিখতে হবে তা হল মূল প্রকারের সাথে কার্যকরী নির্ভরতা। আমাদের বিস্তারিতভাবে কার্যকরী নির্ভরতা জানতে দিন।
ডাটাবেসে কার্যকরী নির্ভরতা
ই.এফ. কড অপ্রয়োজনীয় ডেটা এড়াতে বা নির্মূল করার জন্য কার্যকরী নির্ভরতার ধারণা তৈরি করে। কার্যকরী নির্ভরতা হল একই সম্পর্কের যেকোনো দুটি বৈশিষ্ট্য বা কলামের মধ্যে সম্পর্ক। অন্য কথায়, একটি বৈশিষ্ট্য অনন্যভাবে আরেকটি বৈশিষ্ট্য খুঁজে পায়। উভয় বৈশিষ্ট্য একই সম্পর্কের অন্তর্গত।
উদাহরণস্বরূপ, একই টেবিলের দুটি কলাম, A এবং B বিবেচনা করুন। কার্যকরী নির্ভরতা শুধুমাত্র A এবং B এর মধ্যে বিদ্যমান থাকে যদি কলাম A স্বতন্ত্রভাবে B কলাম খুঁজে পায়। এটি A -> B হিসাবে উপস্থাপন করা হয় এবং B কার্যকরীভাবে A এর উপর নির্ভরশীল বলে পড়া হয়। আপনি A কে নির্ধারক এবং B নির্ভরশীল হিসাবে উল্লেখ করতে পারেন .
বিভিন্ন ধরণের কার্যকরী নির্ভরতা রয়েছে। আসুন এখানে এই ধরনের কিছু কার্যকরী নির্ভরতা দেখি।
একই সম্পর্কের দুটি বৈশিষ্ট্য, A এবং B বিবেচনা করুন। তুচ্ছ কার্যকরী নির্ভরতা কেবল তখনই ধারণ করে যদি B A এর উপসেট হয়।
A -> B, B যদি A এর উপসেট হয়।
একটি কর্মচারী সম্পর্ক বিবেচনা করুন. দুটি বৈশিষ্ট্য নিন, Emp_ID এবং Emp_Name। Emp_Id বৈশিষ্ট্যটি কার্যকরীভাবে {Emp_ID, Emp_Name}-এর উপর নির্ভরশীল।
{Emp_ID, Emp_Name} -> Emp_ID
এখানে, Emp_ID হল {Emp_ID, Emp_Name} এর উপসেট। তাই, {Emp_ID, Emp_Name} -> Emp_ID একটি তুচ্ছ কার্যকরী নির্ভরতা।
অ-তুচ্ছ কার্যকরী নির্ভরতা তুচ্ছ কার্যকরী নির্ভরতার বিপরীত। একই সম্পর্কের দুটি কলাম, P এবং Q নিন। Q যদি P-এর উপসেট না হয় তাহলে নন-তুচ্ছ কার্যকরী নির্ভরতা ধারণ করে।
P -> Q, যদি Q P এর উপসেট না হয়
যদি P ছেদ Q NULL হয়, তাহলে এটি সম্পূর্ণ অ-তুচ্ছ কার্যকরী নির্ভরতা।
কর্মচারী সম্পর্কের তিনটি কলাম, Emp_ID, Emp_Name এবং Emp_Add বিবেচনা করুন।
আরো দেখুন শীর্ষ 15 সেরা উইন্ডোজ মেরামত সরঞ্জামEmp_ID -> Emp_Name
উপরের নির্ভরতা একটি অ-তুচ্ছ কার্যকরী নির্ভরতা, কারণ Emp_Name Emp_ID এর উপসেট নয়।
একটি ট্রানজিটিভ কার্যকরী নির্ভরতা দুটি স্বতন্ত্র কার্যকরী নির্ভরতা জড়িত। এটি পরোক্ষভাবে দুটি নির্ভরতা জড়িত গঠিত হয়. একই টেবিলের A, B এবং C তিনটি বৈশিষ্ট্য বিবেচনা করুন। তুচ্ছ নির্ভরতা A -> C ধরে, যদি
ছাত্র টেবিল বিবেচনা করুন. তিনটি কলাম নিন, Stud_ID, Stud_Name এবং Stud_Age। ট্রানজিটিভ কার্যকরী নির্ভরতা Stud_ID -> Stud_Age হোল্ড, যদি
তাই, যদি আমরা ছাত্রের আইডি জানি, তাহলে আমরা তার বয়স জানতে পারি।
যেকোন কার্যকরী নির্ভরতার ক্ষেত্রে একক নির্ধারকের জন্য, দুই বা ততোধিক নির্ভরশীল রয়েছে। কার্যকরী নির্ভরতা X -> Y বিবেচনা করুন। বহু-মূল্য নির্ভরতায়, প্রতিটি X-এর জন্য, Y-এর একাধিক মান রয়েছে।
বহুমূল্য নির্ভরতা সন্তুষ্ট করতে, সম্পর্কের মধ্যে ন্যূনতম তিনটি বৈশিষ্ট্য থাকা উচিত। উদাহরণস্বরূপ, R(X, Y, Z)। যদি X এবং Y এর মধ্যে একটি বহুমূল্যের কার্যকরী নির্ভরতা থাকে, তাহলে Y এবং Z বৈশিষ্ট্যগুলি একে অপরের থেকে স্বাধীন হওয়া উচিত।
আমরা বোঝার জন্য প্রয়োজনীয় সমস্ত প্রয়োজনীয় উপাদান দেখেছি ডাটাবেস স্বাভাবিককরণ . এখন, মূল বিষয়ের দিকে যাওয়া যাক ডাটাবেস স্বাভাবিককরণ ফর্ম
A, B, C, এবং D বৈশিষ্ট্য সম্বলিত R-এর সম্পর্ক বিবেচনা করুন। R সম্পর্কটি অন্য দুটি সম্পর্ক, R1 এবং R2-এ পচে যায়, যেখানে R1-এর A, B, এবং C বৈশিষ্ট্য রয়েছে এবং R2-এর C এবং D বৈশিষ্ট্য রয়েছে। যদি আমরা কমন অ্যাট্রিবিউট C ব্যবহার করে R1 এবং R2 যোগ করি এবং এর ফলে R-এর সম্পর্ক একই হয়, তাহলে নির্ভরতা যোগদান বিদ্যমান
দ্য নির্ভরতা যোগদান লসলেস বলা হয় যদি যোগদানের পর রিলেশনের অ্যাট্রিবিউটগুলো R-এর অ্যাট্রিবিউটের মতোই হয়।
ডাটাবেস স্বাভাবিককরণের বিভিন্ন ফর্ম
এর বেশ কয়েকটি রূপ ডাটাবেস স্বাভাবিককরণ ডেটা অপ্রয়োজনীয়তা দূর করতে এবং উন্নত করার জন্য তৈরি করা হয়েছে তথ্য অখণ্ডতা . নিম্নলিখিত বিভিন্ন ডাটাবেস স্বাভাবিকীকরণ ফর্ম, তাদের উদাহরণ সহ.

এর প্রথম রূপ ডাটাবেস স্বাভাবিককরণ প্রথম স্বাভাবিক ফর্ম। ডাটাবেস সম্পর্কটি প্রথম স্বাভাবিক আকারে তখনই থাকে যখন এর সমস্ত বৈশিষ্ট্যের একটি একক বা পারমাণবিক মান থাকে। টেবিলের কোনো বৈশিষ্ট্যে একাধিক মান থাকা উচিত নয়। টেবিলটি প্রথম স্বাভাবিক ফর্মের সাথে কীভাবে মেনে চলে তার একটি উদাহরণ দেখা যাক।
Emp_ID, Emp_Name, Emp_Add, এবং Emp_Mobile_Number বৈশিষ্ট্য হিসাবে একটি কর্মচারী টেবিল বিবেচনা করুন।
কর্মচারী
Emp_ID | Emp_Name | Emp_Add | Emp_Mobile_Number |
---|---|---|---|
E01 | জন | নতুন দিল্লি | 8389097676 |
E02 | মিশেল | মুম্বাই | 7878689878 |
E03 | স্যাম | রাঁচি | 98765432197656463686 |
E04 | অলিভার | কলকাতা | 9087654547 |
উপরের সারণীটি প্রথম স্বাভাবিক আকারে নেই (1NF); একজন কর্মচারী হিসাবে, স্যামের দুটি মোবাইল নম্বর রয়েছে। এইভাবে, উপরের টেবিলটি প্রথম স্বাভাবিক ফর্মের সাথে সম্মত হয় না। প্রথম স্বাভাবিক ফর্মটি বলে যে প্রতিটি বৈশিষ্ট্যের একটি পারমাণবিক মান রাখা উচিত। অতএব, আমাদের প্রথম সাধারণ আকারে উপরের টেবিলটি তৈরি করতে হবে।
কর্মচারী ১
Emp_ID | Emp_Name | Emp_Add | Emp_Mobile_Number |
---|---|---|---|
E01 | জন | নতুন দিল্লি | 8389097676 |
E02 | মিশেল | মুম্বাই | 7878689878 |
E03 | স্যাম | রাঁচি | 9876543219 |
E03 | স্যাম | রাঁচি | 7656463686 |
E04 | অলিভার | কলকাতা | 9087654547 |
উপরের Employee1 সম্পর্কটি প্রথম স্বাভাবিক আকারে, কারণ প্রতিটি বৈশিষ্ট্যের একটি একক মান রয়েছে।
আমরা দ্বিতীয় স্বাভাবিক ফর্ম শুরু করার আগে, আপনাকে নন-প্রাইম এবং প্রাইম বৈশিষ্ট্যগুলি সম্পর্কে জানতে হবে। প্রাইম অ্যাট্রিবিউট হল ক্যান্ডিডেট কী-তে যেটি উপস্থিত থাকে। এবং নন-প্রাইম অ্যাট্রিবিউট হল সেইটি যা ক্যান্ডিডেট কী-তে নেই।
আরেকটা ডাটাবেস স্বাভাবিককরণ ফর্ম হল দ্বিতীয় স্বাভাবিক ফর্ম। যেকোন ডাটাবেস সম্পর্ক বা টেবিল দ্বিতীয় স্বাভাবিক ফর্মের সাথে সম্মতি দেয় যদি এটি নিম্নলিখিত শর্তগুলিকে সন্তুষ্ট করে:
নীচের উদাহরণটি দেখার পরে আপনি দ্বিতীয় স্বাভাবিক ফর্ম সম্পর্কে একটি পরিষ্কার ধারণা পেতে পারেন।
শিক্ষক_আইডি, বিষয় এবং শিক্ষক_বয়স বিশিষ্ট একটি শিক্ষক সম্পর্ককে বৈশিষ্ট্য হিসাবে বিবেচনা করুন। টেবিলটি নিম্নরূপ:
শিক্ষক
শিক্ষক_আইডি | বিষয় | শিক্ষক_বয়স |
---|---|---|
T01 | জাভা | 35 |
T01 | ডাটা স্ট্রাকচার | 35 |
T02 | পাইথন | 35 |
T03 | ডাটা স্ট্রাকচার | 40 |
T03 | ডিবিএমএস | 40 |
এখানে, প্রার্থীর কীগুলি হল {Teacher_ID, Subject}, যা অনন্যভাবে শিক্ষকদের ডেটা খুঁজে পায়। শিক্ষক_বয়স বৈশিষ্ট্যটি প্রার্থী কী-তে নেই, এটি নন-প্রাইম অ্যাট্রিবিউট হিসেবে সার্ভার করে।
উপরের সম্পর্কটি দেখার পরে, আমরা উপসংহারে পৌঁছাতে পারি যে টেবিলটি প্রথম স্বাভাবিক ফর্মের সাথে মেনে চলে ডাটাবেস স্বাভাবিককরণ . প্রতিটি বৈশিষ্ট্য একক-মূল্যবান। তবে, এটি দ্বিতীয় স্বাভাবিক আকারে নয়। আমরা শুধুমাত্র Teacher_ID বৈশিষ্ট্যের মাধ্যমে যেকোনো শিক্ষকের বয়স শনাক্ত করতে পারি। যেহেতু শিক্ষক_বয়স একটি নন-প্রাইম অ্যাট্রিবিউট এবং শিক্ষক_আইডি হল প্রার্থী কী-এর সঠিক উপসেট, এটি 2NF নিয়ম ভঙ্গ করে।
উপরের সম্পর্কটিকে দ্বিতীয় স্বাভাবিক আকারে তৈরি করতে, আমাদের এটিকে নিম্নরূপ দুটি টেবিলে বিভক্ত করতে হবে:
আরো দেখুন iPhone ইস্যুতে অনুপলব্ধ অবস্থানের জন্য 16 সমাধানশিক্ষক_বয়স
শিক্ষক_আইডি | শিক্ষক_বয়স |
---|---|
T01 | 35 |
T02 | 35 |
T03 | 40 |
বিষয়
শিক্ষক_আইডি | বিষয় |
---|---|
T01 | জাভা |
T01 | ডাটা স্ট্রাকচার |
T02 | পাইথন |
T03 | ডাটা স্ট্রাকচার |
T03 | ডিবিএমএস |
উপরের দুটি সম্পর্ক দ্বিতীয় স্বাভাবিক আকারে রয়েছে।
তৃতীয় স্বাভাবিক রূপ হল নীড় ডাটাবেস স্বাভাবিককরণ ফর্ম যে কোনো সম্পর্ককে তৃতীয় স্বাভাবিক বলে বলা হয় যে এটি নিম্নোক্ত শর্তগুলো পূরণ করে:
আপনি তৃতীয় স্বাভাবিক ফর্ম সংজ্ঞায়িত করতে পারেন ডাটাবেস স্বাভাবিককরণ যেহেতু টেবিলটি 2NF-এ থাকা উচিত এবং কার্যকরী নির্ভরতা X -> Y-কে নিম্নলিখিত শর্তগুলির যে কোনও একটি অনুসরণ করা উচিত:
আমরা দেখব কিভাবে টেবিলটি তৃতীয় স্বাভাবিক ফর্মের সাথে সম্মত হয়। Emp_ID, Emp_Name, Emp_Zip, Emp_State, Emp_City এবং Emp_District আছে এমন একটি কর্মচারী সম্পর্ক বিবেচনা করুন। এই সম্পর্কটি নিম্নরূপ উপস্থাপন করা হয়:
কর্মচারী
Emp_ID | Emp_Name | Emp_Zip | Emp_State | Emp_City | Emp_জেলা |
---|---|---|---|---|---|
E01 | জন | 267778 | মহারাষ্ট্র | Kalyan | মুম্বাই |
E02 | স্যাম | 234567. | তামিলনাড়ু | চেন্নাই | এম-সিটি |
E06 | জনি | 278967 | উত্তরাখণ্ড | পাউরি | ভগবান |
E07 | গোলাপ | 209876 | তামিলনাড়ু | চেন্নাই | উরপক্কম। |
E08 | স্টিভ | 215647 | মধ্য প্রদেশ | গোয়ালিয়র | রতন |
কর্মচারী সম্পর্কের সুপার কীগুলি হল {Emp_ID}, {Emp_ID, Emp_Name}, {Emp_ID, Emp_Name, Emp_Zip}, এবং আরও অনেকগুলি৷ প্রার্থী কী হল {Emp_ID}। তাই, EMP_ID হল প্রাইম অ্যাট্রিবিউট এবং অন্য সব নন-প্রাইম অ্যাট্রিবিউট।
আপনি দেখতে পাচ্ছেন যে তিনটি বৈশিষ্ট্য, Emp_State, Emp_City এবং Emp_District, কার্যকরীভাবে Emp_Zip বৈশিষ্ট্যের উপর নির্ভরশীল। আমরা Emp_ID অ্যাট্রিবিউট ব্যবহার করে জিপ নম্বর খুঁজে পেতে পারি। তাই, Emp_Zip Emp_ID এর উপর নির্ভরশীল।
তিনটি বৈশিষ্ট্য, Emp_State, Emp_City, এবং Emp_District হল নন-প্রাইম অ্যাট্রিবিউট। তারা পরোক্ষভাবে Emp_ID বৈশিষ্ট্যের উপর নির্ভরশীল, যা 3NF নিয়ম ভঙ্গ করে। কর্মচারী সম্পর্ককে তৃতীয় স্বাভাবিক ফর্ম (3NF) মেনে চলতে, আমাদেরকে নীচের মতো ছোট টেবিলে বিভক্ত করতে হবে:
কর্মচারী আইডি
Emp_ID | Emp_Name | Emp_Zip |
---|---|---|
E01. | জন | 267778 |
E02 | স্যাম | 234567 |
E06 | জনি | 278967 |
E07 | গোলাপ | 209876 |
E08 | স্টিভ | 215647. |
কর্মচারী_জিপ
Emp_Zip | Emp_State | Emp_City | Emp_জেলা |
---|---|---|---|
267778. | মহারাষ্ট্র | Kalyan | মুম্বাই |
234567 | তামিলনাড়ু | চেন্নাই | এম-সিটি |
278967 | উত্তরাখণ্ড | পাউরি | ভগবান |
209876 | তামিলনাড়ু | চেন্নাই | উরপক্কম। |
215647 | মধ্য প্রদেশ | গোয়ালিয়র | রতন |
উপরের দুটি টেবিল তৃতীয় স্বাভাবিক আকারে আছে।
The Boyce Codd এর সাধারণ রূপ ডাটাবেস স্বাভাবিককরণ 3NF এর একটি বর্ধিত সংস্করণ। এটি 3.5NF হিসাবে উল্লেখ করা হয়। যেকোন টেবিল বা সম্পর্ক BCNF এর সাথে মেনে চলে যদি এটি নিম্নলিখিত শর্তগুলি ধারণ করে:
আপনি একাধিক কোম্পানির বিভাগে কর্মরত কর্মীদের উদাহরণের মাধ্যমে BCNF ধারণাটি স্পষ্টভাবে বুঝতে পারেন। Emp_ID, Emp_Nationality, Emp_Department, Dept_Type, No_of_Employees গুণাবলী সহ একটি কর্মচারী সম্পর্ক বিবেচনা করুন। সম্পর্ক নিম্নলিখিত মান ধারণ করে:
কর্মচারী
Emp_ID | Emp_Nationality | Emp_Department | বিভাগ_প্রকার | নেই_কর্মচারি |
---|---|---|---|---|
E01 | ভারতীয় | উৎপাদন | D01 | 250 |
E01 | ভারতীয় | ব্যবস্থাপনা | D02 | 300 |
E02 | মার্কিন | কারিগরি সহযোগিতা | D03. | 400 |
E02 | মার্কিন | ক্রয় | D04 | 450 |
উপরের সম্পর্কের প্রার্থী হল {Emp_ID, Emp_Dept}। না একক Emp_ID বৈশিষ্ট্য বিভাগের তথ্য প্রদান করতে পারে, না Emp_Dept কর্মচারী তথ্য নির্ধারণ করতে পারে। সুতরাং, উপরের সম্পর্কটি BCNF-এর সাথে মেনে চলে না। BCNF-তে উপরের টেবিলটি তৈরি করতে, এটিকে নিম্নরূপ তিনটি টেবিলে ভাগ করুন:
কর্মচারী_জাতীয়তা
Emp_ID | Emp_Nationality |
---|---|
E01 | ভারতীয় |
E02 | মার্কিন |
এখানে, Emp_ID হল প্রার্থী কী। কার্যকরী নির্ভরতা হল Emp_ID -> Emp_Nationality। অতএব, এটি বিসিএনএফ-এ রয়েছে।
কর্মচারী_বিভাগ
Emp_Department | বিভাগ_প্রকার | নেই_কর্মচারি |
---|---|---|
উৎপাদন | D01 | 250 |
ব্যবস্থাপনা | D02 | 300 |
কারিগরি সহযোগিতা | D03 | 400 |
ক্রয় | D04 | 450 |
এখানে, Emp_Dept হল প্রার্থী কী, এবং কার্যকরী নির্ভরতা হল {Emp_Dept -> Dept_Type, No_of_Employees}। অতএব, উপরের সম্পর্কটি BCNF-এর সাথেও সঙ্গতিপূর্ণ।
Employee_ID_Dept
Emp_ID | Emp_Dept |
---|---|
E01 | উৎপাদন |
E01 | ব্যবস্থাপনা |
E02 | কারিগরি সহযোগিতা |
E02 | ক্রয় |
এই সম্পর্কের জন্য, Emp_ID এবং Emp_Dept, উভয়ই প্রার্থীর কী।
আমরা উপরের বিভাগে বহু-মূল্যবান নির্ভরতা দেখেছি। টেবিলটিকে চতুর্থ স্বাভাবিক আকারে বলা হয় যদি এটি নীচের সমস্ত শর্ত ধারণ করে:
আমরা ছাত্র সম্পর্ক ব্যবহার করে চতুর্থ স্বাভাবিক ফর্ম সম্পর্কে কথা বলব। শিক্ষার্থীদের সম্পর্কের তিনটি বৈশিষ্ট্য রয়েছে। Stud_ID, Stud_Course, এবং Stud_Hobby. টেবিলের মান নিম্নরূপ:
ছাত্ররা
Stud_ID | স্টুড_কোর্স | Stud_Hobby |
---|---|---|
S01 | অংক | হকি |
S01 | পদার্থবিদ্যা | টেনিস |
S02 | প্রোগ্রামিং | হকি |
S02 | রসায়ন | টেনিস |
উপরের সম্পর্কটি চতুর্থ স্বাভাবিক আকারে (4NF) নয়, কারণ এতে বহু-মূল্যবান নির্ভরতা রয়েছে। Stud_Course এবং Stud_Hobby বৈশিষ্ট্যগুলি Stud_ID বৈশিষ্ট্যের উপর নির্ভরশীল, যা বহু-মূল্য নির্ভরতায় শেষ হয়। অতএব, উপরের সম্পর্কটিকে 4NF-তে তৈরি করতে, আমাদের এই সম্পর্কটিকে দুটি ভিন্ন সম্পর্কের মধ্যে ভাঙ্গতে হবে:
ছাত্রদের_কোর্স
Stud_ID | স্টুড_কোর্স |
---|---|
S01 | অংক |
S01 | পদার্থবিদ্যা |
S02 | প্রোগ্রামিং |
S02 | রসায়ন |
ছাত্রদের_শখ
Stud_ID | Stud_Hobby |
---|---|
S01 | হকি |
S01 | টেনিস |
S02 | হকি |
S02 | টেনিস |
উপরের দুটি সম্পর্ক চতুর্থ স্বাভাবিক আকারে রয়েছে।
আরেকটা ডাটাবেস স্বাভাবিককরণ ফর্ম পঞ্চম স্বাভাবিক ফর্ম. এটিকে প্রজেক্ট-জইন সাধারন ফর্ম (PJ/NF) হিসাবেও উল্লেখ করা হয়। যেকোন সম্পর্ক পঞ্চম স্বাভাবিক ফর্মের সাথে মেনে চলে যদি এটি নিম্নলিখিত শর্তগুলিকে সন্তুষ্ট করে:
পঞ্চম স্বাভাবিক ফর্ম ধারণা বোঝার জন্য, আমরা অনুষদ সম্পর্কের একটি উদাহরণ দেখতে পাব।
অনুষদ
ফ্যাক_বিষয় | ফ্যাক_নাম | Fac_Sem |
---|---|---|
কম্পিউটার বিজ্ঞান | জন | সেম 1 |
কম্পিউটার বিজ্ঞান | অলিভার | সেম 1 |
ইলেকট্রনিক্স এবং টেলিকমিউনিকেশন | অলিভার | সেম 1 |
ইলেকট্রনিক্স এবং টেলিকমিউনিকেশন | স্টিভ | সেম 2 |
যান্ত্রিক | স্টিফেন | সেম 1 |
ফ্যাকাল্টি সম্পর্ক পঞ্চম স্বাভাবিক ফর্ম (5NF) মেনে চলে না। ফ্যাকাল্টি সম্পর্ককে পঞ্চম স্বাভাবিক আকারে তৈরি করতে, এটিকে তিনটি ভিন্ন সম্পর্কের মধ্যে বিভক্ত করুন, যা নীচে দেখানো হয়েছে:
অনুষদ ১
Fac_Sem | ফ্যাক_বিষয় |
---|---|
সেম 1 | কম্পিউটার বিজ্ঞান |
সেম 1 | ইলেকট্রনিক্স ও টেলিযোগাযোগ |
সেম 1 | যান্ত্রিক |
সেম 2 | ইলেকট্রনিক্স ও টেলিযোগাযোগ |
অনুষদ 2
Fac_Sem | ফ্যাক_নাম |
---|---|
সেম 1 | জন |
সেম 1 | অলিভার |
সেম 1 | অলিভার |
সেম 2 | স্টিভ |
সেম 1 | স্টিফেন |
অনুষদ ৩
ফ্যাক_বিষয় | ফ্যাক_নাম |
---|---|
কম্পিউটার বিজ্ঞান | জন |
কম্পিউটার বিজ্ঞান | অলিভার |
ইলেকট্রনিক্স এবং টেলিকমিউনিকেশন | অলিভার |
ইলেকট্রনিক্স এবং টেলিকমিউনিকেশন | স্টিভ |
যান্ত্রিক | স্টিফেন |
উপরের তিনটি সম্পর্কই পঞ্চম স্বাভাবিক আকারে রয়েছে।
উপসংহার
দ্য ডাটাবেস স্বাভাবিককরণ প্রক্রিয়াটি পুনরাবৃত্তিমূলক ডেটা নির্মূল করতে এবং ডেটা অখণ্ডতার নীতির উন্নতিতে অত্যন্ত কার্যকর। অতিরিক্তভাবে, এটি ডাটাবেস থেকে অপ্রয়োজনীয় ডেটা সরিয়ে ডিস্কের স্থান সংরক্ষণ করে। এই পোস্টে গেলেই বুঝতে পারবেন ভিন্ন কথা ডাটাবেস স্বাভাবিককরণ ফর্ম এবং কার্যকরী নির্ভরতা প্রকার।
কীগুলি ডাটাবেসের প্রাথমিক উপাদান। তারা ব্যবহারকারীদের দ্রুত এবং দক্ষতার সাথে ডেটা পুনরুদ্ধার করার অনুমতি দেয়। আমরা কী, প্রাইমারি কী, ক্যান্ডিডেট কী, সুপার কী, বিদেশী কী এবং কম্পোজিট কী এর ধরন কভার করেছি।
এই নিবন্ধের বিষয়বস্তু আপনাকে স্বতন্ত্র কার্যকরী নির্ভরতার প্রকারগুলি সম্পর্কে একটি সংক্ষিপ্ত ধারণা প্রদান করবে। আমরা ছয়টি বিভিন্ন ধরণের কভার করেছি ডাটাবেস স্বাভাবিককরণ ফর্ম, 1NF, 2NF, 3NF, BCNF, 4NF, এবং 5NF এবং তাদের নিজ নিজ উদাহরণ। আমরা আশা করি আপনি অধ্যয়নের জন্য প্রয়োজনীয় সমস্ত প্রয়োজনীয় তথ্য পাবেন ডাটাবেস স্বাভাবিককরণ ফর্ম