Skip to content
GitHub

Second Normal Form (2NF)

2NF ၏ စည်းမျဉ်းများ

Section titled “2NF ၏ စည်းမျဉ်းများ”

Table တစ်ခုဟာ Second Normal Form (2NF) အဆင့်ကို ရောက်ဖို့ဆိုရင်:

  1. 1NF အဆင့်မှာ ရှိပြီးသား ဖြစ်ရမယ်။
  2. Partial Dependency (တစ်စိတ်တစ်ပိုင်း မှီခိုမှု) မရှိရဘူး။ Table ထဲက Non-Key Column (Primary Key မဟုတ်တဲ့ Column) တွေ အားလုံးဟာ Composite Primary Key တစ်ခုလုံး အပေါ်မှာပဲ အပြည့်အဝ မှီခို (Fully Dependent) နေရပါမယ်။

ဒီစည်းမျဉ်းကို သေချာနားလည်ဖို့ Dependency ဆိုတာ ဘာလဲ အရင်လေ့လာကြည့်ရအောင်။


Functional Dependency ဆိုတာ ဘာလဲ?

Section titled “Functional Dependency ဆိုတာ ဘာလဲ?”

Functional Dependency (FD) ဆိုတာ Column တစ်ခုရဲ့ တန်ဖိုးကို သိလိုက်တာနဲ့၊ နောက် Column တစ်ခုရဲ့ တန်ဖိုးကိုပါ တိတိကျကျ ဆုံးဖြတ်ပေးနိုင်တဲ့ ဆက်စပ်မှုကို ခေါ်ပါတယ်။

ပုံသေနည်း အနေနဲ့ A -> B လို့ ရေးလေ့ရှိပါတယ်။

  • ဆိုလိုတာက A (Determinant) ကို သိရင် B (Dependent) ကို တိတိကျကျ သိနိုင်ပါတယ်။

ဥပမာ:

EmployeeID -> FirstName, LastName

EmployeeID (ဥပမာ 101) ကို သိလိုက်တာနဲ့ အဲဒီ ဝန်ထမ်းရဲ့ နာမည်က “Sarah Connor” ဆိုတာ တိတိကျကျ သိနိုင်ပါတယ်။ ဒါကြောင့် FirstName နဲ့ LastName ဟာ EmployeeID အပေါ်မှာ မှီခို (Dependent) နေပါတယ်။


ဒီ သဘောတရားက Primary Key အဖြစ် Column နှစ်ခု ပေါင်းထားတဲ့ Composite Primary Key တွေမှာ အလွန် အရေးကြီးပါတယ်။

  • Full Dependency (အပြည့်အဝ မှီခိုမှု): Column တစ်ခုဟာ Composite Primary Key ရဲ့ အစိတ်အပိုင်း အားလုံး အပေါ်မှာ မှီခိုနေတာ။
  • Partial Dependency (တစ်စိတ်တစ်ပိုင်း မှီခိုမှု): Column တစ်ခုဟာ Composite Primary Key ရဲ့ တစ်စိတ်တစ်ပိုင်း (Column တစ်ခုတည်း) အပေါ်မှာပဲ မှီခိုနေတာ။

ဥပမာ: Primary Key က (StudentID, CourseID) ဖြစ်တဲ့ ကျောင်းသားအမှတ်စာရင်း Table ကို စဉ်းစားကြည့်ပါ။

  1. StudentName: StudentID ကို သိတာနဲ့ နာမည်ကို သိနိုင်ပါတယ်။ CourseID မလိုပါဘူး။ ဒါဟာ Partial Dependency ပါ။
  2. CourseProfessor: CourseID ကို သိတာနဲ့ ဘယ်ဆရာသင်လဲ သိနိုင်ပါတယ်။ StudentID မလိုပါဘူး။ ဒါလည်း Partial Dependency ပါ။
  3. Grade (အမှတ်): ဒီကျောင်းသား ဘယ်လောက်ရလဲ သိချင်ရင် StudentID (ဘယ်သူလဲ) နဲ့ CourseID (ဘယ်ဘာသာလဲ) နှစ်ခုလုံးကို သိမှ ရပါမယ်။ ဒါဟာ Full Dependency ပါ။

1NF မှ 2NF သို့ ပြောင်းလဲခြင်း

Section titled “1NF မှ 2NF သို့ ပြောင်းလဲခြင်း”

အရင် 1NF အခန်းက Orders Table မှာ (OrderID, BookID) ဟာ Composite Primary Key ဖြစ်ပါတယ်။

Dependency တွေကို ကြည့်ရင်:

  • CustomerName, CustomerAddress တို့ဟာ OrderID အပေါ်မှာပဲ မှီခိုနေပါတယ်။ (Partial)
  • BookTitle, Price တို့ဟာ BookID အပေါ်မှာပဲ မှီခိုနေပါတယ်။ (Partial)
  • Quantity ကတော့ OrderID နဲ့ BookID နှစ်ခုလုံး သိမှ ရပါမယ်။ (Full)

2NF ဖြစ်ဖို့ဆိုရင် အဲဒီ Partial Dependency တွေကို ဖယ်ရှားပြီး သီးသန့် Table တွေ ခွဲထုတ် ပေးရပါမယ်။

ခွဲထုတ်လိုက်တဲ့အခါ အောက်ပါအတိုင်း Table ၃ ခု ရလာပါမယ်:

Orders Table (2NF)OrderItems Table (2NF)Books Table (2NF)
2NF Orders Table
2NF Order Items Table
2NF Books Table
Customer အချက်အလက်များOrder နဲ့ Book ချိတ်ဆက်မှု (Quantity)စာအုပ် အချက်အလက်များ

အခုဆိုရင် ဇယားတိုင်းမှာ Partial Dependency မရှိတော့တဲ့အတွက် Second Normal Form (2NF) စည်းမျဉ်းနဲ့ ကိုက်ညီသွားပါပြီ။

ဒါပေမဲ့ Orders Table ထဲမှာ ပြဿနာလေး တစ်ခု ကျန်နေပါသေးတယ်။ အဲဒါကို ဖြေရှင်းဖို့ 3NF ကို ဆက်လေ့လာကြပါမယ်။