Fifth Normal Form (5NF)
5NF ၏ စည်းမျဉ်းများ
Section titled “5NF ၏ စည်းမျဉ်းများ”Table တစ်ခုဟာ Fifth Normal Form (5NF) အဆင့်ကို ရောက်ဖို့ဆိုရင်:
- 4NF အဆင့်မှာ ရှိပြီးသား ဖြစ်ရမယ်။
- Non-trivial Join Dependency မရှိရဘူး။ (ဆိုလိုတာက Table တစ်ခုကို ထပ်ပြီး သေးငယ်အောင် ခွဲထုတ်လို့ မရတော့တဲ့ အခြေအနေ (Lossless Decomposition) ကို ရောက်နေရပါမယ်။)
Join Dependency ဆိုတာ ဘာလဲ?
Section titled “Join Dependency ဆိုတာ ဘာလဲ?”Join Dependency ဆိုတာ ကြီးမားတဲ့ Table တစ်ခုကို သေးငယ်တဲ့ Table တွေအဖြစ် ခွဲထုတ်လိုက်တဲ့အခါ၊ အဲဒီ သေးငယ်တဲ့ Table တွေ အားလုံးကို ပြန်ပြီး Join (ပေါင်း) လိုက်မှသာ မူလ Table ကို Data အတိမ်းအစောင်းမရှိ (Lossless) ပြန်ရနိုင်တဲ့ အခြေအနေမျိုးကို ခေါ်ပါတယ်။
- တကယ်လို့ ပြန်ပေါင်းလိုက်တဲ့အခါ မူလ Table မှာ မပါတဲ့ အတန်း (Row) အတုတွေ ပါလာတယ်ဆိုရင် ဒါဟာ Lossy Decomposition ဖြစ်သွားပြီး မှားယွင်းပါတယ်။
5NF လိုအပ်လာပုံ (ဥပမာ)
Section titled “5NF လိုအပ်လာပုံ (ဥပမာ)”Salesperson (အရောင်းကိုယ်စားလှယ်)၊ Company (ကုမ္ပဏီ) နဲ့ Product (ပစ္စည်း) တွေကို မှတ်ထားတဲ့ Table တစ်ခုကို ကြည့်ရအောင်။
စည်းမျဉ်းများ (Business Rules):
- Salesperson တစ်ယောက်ဟာ Company တစ်ခုအတွက် အလုပ်လုပ်ပါတယ်။
- အဲဒီ Company က Product တစ်ခုကို ထုတ်လုပ်တယ် ဆိုပါစို့။
- ဒါဆိုရင် အဲဒီ Salesperson ဟာ အဲဒီ Product ကို ရောင်းပေးရပါမယ်။
| SalePerson | Company | Product |
|---|---|---|
| Smith | MegaCorp | Laptops |
| Smith | MegaCorp | Phones |
| Bob | TechInc | Laptops |
| Smith | TechInc | Laptops |
ဒီ Table မှာ ပြဿနာ ရှိနေပါတယ်:
Smith က Laptops ရောင်းတယ် ဆိုတဲ့ အချက်အလက်ကို ကြည့်ပါ။
- သူက MegaCorp အတွက်လည်း Laptop ရောင်းပေးရတယ်။
- TechInc အတွက်လည်း Laptop ရောင်းပေးရတယ်။
ဒီလိုနဲ့ Smith က နောက်ထပ် Laptop ထုတ်တဲ့ ကုမ္ပဏီ ၃ ခုနဲ့ ထပ်ပြီး အလုပ်လုပ်တယ် ဆိုပါစို့။ Smith က Laptops ရောင်းတယ် ဆိုတဲ့ အချက်အလက်ကို အကြိမ်ကြိမ် (Redundant fact) မှတ်တမ်းတင်နေရပါတော့မယ်။ တကယ်လို့ Smith က Laptop လုံးဝ မရောင်းတော့ဘူးဆိုရင် အဲဒီ Row တွေ အကုန်လုံးကို လိုက်ရှာပြီး ဖျက်ပစ်ရမှာပါ။
ဒါဟာ Table ကြီးတစ်ခုထဲမှာ အကုန်လုံးကို ပေါင်းသိမ်းထားလို့ ဖြစ်လာတဲ့ Join Dependency ပြဿနာပါ။
4NF မှ 5NF သို့ ပြောင်းလဲခြင်း
Section titled “4NF မှ 5NF သို့ ပြောင်းလဲခြင်း”ဒီပြဿနာကို ဖြေရှင်းဖို့ 5NF စည်းမျဉ်းအရ မူရင်း Table ကြီးကို ဆက်စပ်နေတဲ့ Table အသေး ၃ ခုအဖြစ် ခွဲထုတ် (Decompose) လိုက်ပါမယ်။
Table 1: SalePerson_Company (ဘယ်သူက ဘယ်ကုမ္ပဏီမှာ အလုပ်လုပ်လဲ)
| SalePerson | Company |
|---|---|
| Smith | MegaCorp |
| Smith | TechInc |
| Bob | TechInc |
Table 2: Company_Product (ကုမ္ပဏီက ဘာပစ္စည်းထုတ်လဲ)
| Company | Product |
|---|---|
| MegaCorp | Laptops |
| MegaCorp | Phones |
| TechInc | Laptops |
Table 3: SalePerson_Product (ဘယ်သူက ဘာပစ္စည်းရောင်းလဲ)
| SalePerson | Product |
|---|---|
| Smith | Laptops |
| Smith | Phones |
| Bob | Laptops |
အခုဆိုရင် Smith က Laptops ရောင်းတယ် ဆိုတဲ့ အချက်အလက်ဟာ SalePerson_Product Table ထဲမှာ တစ်ကြောင်းတည်းပဲ ရှိပါတော့တယ်။ ကုမ္ပဏီတွေ ဘယ်လောက်ပဲ တိုးလာတိုးလာ ထပ်ပြီး ပွားနေစရာ မလိုတော့ပါဘူး။
ဘယ် Salesperson က ဘယ်ကုမ္ပဏီအတွက် ဘယ်ပစ္စည်းရောင်းလဲ သိချင်ရင်တော့ ဒီ Table (၃) ခုလုံးကို ပြန်ပေါင်း (Join) ရပါမယ်။ ဒါကြောင့်လည်း Join Dependency လို့ ခေါ်တာပါ။