Normalization: Fourth Normal Form
Fourth Normal Form
Section titled “Fourth Normal Form”Database design အများစုအတွက် 3NF သို့မဟုတ် BCNF အထိ ရောက်အောင် လုပ်ဆောင်နိုင်ရင် လုံလောက်ပါတယ်။ ဒါပေမဲ့ 4NF က 3NF နှင့် BCNF တို့ကနေ ဖြေရှင်းမပေးနိုင်တဲ့ ပြဿနာတစ်မျိုးဖြစ်တဲ့ Multivalued Dependency ကို ရှင်းထုတ်ပေးပါတယ်။
Multi-valued dependencies (MVD)
Section titled “Multi-valued dependencies (MVD)”Multivalued Dependency ဆိုတာ table တစ်ခုတည်းမှာ တစ်ခုနှင့်တစ်ခုလုံးဝမသက်ဆိုင်တဲ့ list နှစ်ခု (သို့မဟုတ်) နှစ်ခုထက်ပိုပြီး သိမ်းဆည်းဖို့ကြိုးစားတဲ့အခါ ဖြစ်ပေါ်လာတဲ့ ပြဿနာဖြစ်ပါတယ်။
သင်္ကေတ —
A →→ B (A multidetermines B)
ဥပမာ- စားသောက်ဆိုင် မီနူး
Section titled “ဥပမာ- စားသောက်ဆိုင် မီနူး”ပီဇာဆိုင်ခွဲတွေရဲ့ တည်နေရာ၊ သူတို့ရောင်းတဲ့ ပီဇာအမျိုးအစားတွေနှင့် သူတို့အသုံးပြုတဲ့ Delivery Service တွေကို ဖော်ပြထားတဲ့ table တစ်ခုရှိတယ်လို့ ယူဆပါစို့။
Business Rules:
- ဆိုင်ခွဲတစ်ခုက ပီဇာအမျိုးအစားများစွာကို ရောင်းနိုင်တယ်။ (ဥပမာ- Pepperoni, Hawaiian)
- ဆိုင်ခွဲတစ်ခုက Delivery Service များစွာကို အသုံးပြုနိုင်တယ်။ (ဥပမာ- FoodPanda, GrabFood)
- ပီဇာအမျိုးအစားနှင့် Delivery Service တွေဟာ သက်ဆိုင်မှုမရှိဘဲ ဆိုင်ခွဲနှင့်ပတ်သက်ပြီးသာ ဆက်စပ်နေတာဖြစ်ပါတယ်။
Location | PizzaType | DeliveryService |
---|---|---|
Downtown | Pepperoni | FoodPanda |
Downtown | Pepperoni | GrabFood |
Downtown | Hawaiian | FoodPanda |
Downtown | Hawaiian | GrabFood |
Uptown | Veggie | FoodPanda |
Uptown | Veggie | GrabFood |
Location →→ PizzaType (Location တစ်ခုက Pizza Type list ကိုဆုံးဖြတ်ပေးတယ်။)
Location →→ DeliveryService (Location တစ်ခုက Delivery Service list ကိုဆုံးဖြတ်ပေးတယ်။)
ဒီ Table မှာ Primary Key က (Location, Pizza Type, Delivery Service) သုံးခုပေါင်း ဖြစ်လာပါတယ်။ တခြား Functional Dependency တွေ မရှိတဲ့အတွက် ဒီ Table ဟာ BCNF အထိ အောင်မြင်ပါတယ်။ ဒါပေမဲ့ Multivalued Dependency ရှိနေပါတယ်။ Table က အချင်းချင်းမသက်ဆိုင်တဲ့ list နှစ်ခုဖြစ်တဲ့ Downtown ဆိုင်ခွဲရဲ့ (Pepperoni, Hawaiian) နှင့် (FoodPanda, GrabFood) တို့ကို ပေါင်းစပ်ပြီး ဖြစ်နိုင်ခြေရှိတဲ့ အတွဲတိုင်းအတွက် row တစ်ခုစီကို ဖန်တီးထားရပါတယ်။
Fourth Normal Form (4NF) သို့ ပြောင်းလဲခြင်း။
Section titled “Fourth Normal Form (4NF) သို့ ပြောင်းလဲခြင်း။”4NF ဖြစ်အောင်လုပ်ဖို့ ဖြေရှင်းနည်းကတော့ ရှင်းပါတယ်။ list တွေကို သူ့ table နှင့်သူ ခွဲထုတ်လိုက်ဖို့ပါပဲ။
1. Location_Pizzas Table (4NF)
Section titled “1. Location_Pizzas Table (4NF)”Location | PizzaType |
---|---|
Downtown | Pepperoni |
Downtown | Hawaiian |
Uptown | Veggie |
2. Location_Deliveries Table (4NF)
Section titled “2. Location_Deliveries Table (4NF)”Location | DeliveryService |
---|---|
Downtown | FoodPanda |
Downtown | GrabFood |
Uptown | FoodPanda |
ခုဆိုရင်တော့ ကျွန်တော်တို့ရဲ့ design က 4NF မှာရှိသွားပါပြီ။