Skip to content
GitHub

First Normal Form (1NF)

First Normal Form (1NF) ၏ စည်းမျဉ်းများ

Section titled “First Normal Form (1NF) ၏ စည်းမျဉ်းများ”

Table တစ်ခုဟာ First Normal Form (1NF) အဆင့် ရောက်ဖို့ဆိုရင် အောက်ပါ စည်းမျဉ်း ၂ ခုနဲ့ ကိုက်ညီရပါမယ်:

  1. Cell (အကွက်) တစ်ခုချင်းစီမှာ Value တစ်ခုတည်းသာ ရှိရပါမည်။ (Atomic Values)
    • အကွက်တစ်ခုထဲမှာ Comma (,) တွေ ခံပြီး Data တွေ အများကြီး ပြွတ်သိမ်းထားတာမျိုး (Multivalued attributes) လုံးဝ မရှိရပါဘူး။
  2. Table တွင် Primary Key ရှိရပါမည်။
    • Record တွေကို တစ်ခုချင်းစီ တိတိကျကျ ခွဲခြားနိုင်ဖို့ Primary Key မဖြစ်မနေ ပါရှိရပါမယ်။

ဥပမာ - မှာယူမှုစာရင်း (Order List)

Section titled “ဥပမာ - မှာယူမှုစာရင်း (Order List)”

အောက်ပါ ဇယား (Table) ကို ကြည့်ပါ။ ဒါဟာ Normalization လုံးဝ မလုပ်ရသေးတဲ့ အခြေအနေပါ။

Unnormalized Order Table

Fig. 3.1: Unnormalized Orders Table

ပြဿနာကို ရှာဖွေခြင်း

Section titled “ပြဿနာကို ရှာဖွေခြင်း”

ဒီ ဇယားမှာ OrderID က 101 ဖြစ်တဲ့ အတန်းကို ကြည့်ရင်၊ BookTitle မှာ “Dune, Foundation” ဆိုပြီး စာအုပ် နှစ်အုပ်နာမည်ကို ရောသိမ်းထားပါတယ်။ အလားတူပဲ Quantity (2, 1) နဲ့ Price (20, 15) တွေမှာလည်း Data တွေ ရောထွေးနေပါတယ်။

ဒါဟာ 1NF ရဲ့ “အကွက်တစ်ခုမှာ Value တစ်ခုတည်းပဲ ရှိရမယ်” ဆိုတဲ့ စည်းမျဉ်းကို ချိုးဖောက်နေတာပါ။ ဒီလိုပုံစံနဲ့ဆိုရင် “Foundation စာအုပ် ဘယ်နှအုပ် ရောင်းရလဲ” လို့ ရှာချင်ရင် အရမ်း ခက်ခဲသွားပါပြီ။

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

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

ဒီ ပြဿနာကို ဖြေရှင်းဖို့ Data တွေကို အကွက်တစ်ခုမှာ တစ်ခုစီဖြစ်အောင် အတန်း (Row) အသစ်တွေ ခွဲထုတ်လိုက်ပါမယ်။

1NF Order Table

Fig. 3.2: 1NF Orders Table

အခုဆိုရင် အကွက်တိုင်းမှာ Value တစ်ခုတည်းပဲ ရှိသွားပါပြီ။ ဒုတိယ စည်းမျဉ်းဖြစ်တဲ့ Primary Key သတ်မှတ်ဖို့ လိုလာပါပြီ။

ဒီ ဇယားမှာ OrderID တစ်ခုတည်းနဲ့ Primary Key လုပ်လို့ မရတော့ပါဘူး (101 က နှစ်ကြောင်း ဖြစ်နေလို့ပါ)။ အဲဒီအတွက် OrderID နဲ့ BookID နှစ်ခုကို ပေါင်းပြီး Composite Primary Key အဖြစ် သတ်မှတ်ပေးလိုက်ရင် 1NF အဆင့်ကို အောင်မြင်စွာ ရောက်ရှိသွားပြီ ဖြစ်ပါတယ်။