Fourth Normal Form (4NF)
4NF ၏ စည်းမျဉ်းများ
Section titled “4NF ၏ စည်းမျဉ်းများ”Table တစ်ခုဟာ Fourth Normal Form (4NF) အဆင့်ကို ရောက်ဖို့ဆိုရင်:
- BCNF အဆင့်မှာ ရှိပြီးသား ဖြစ်ရမယ်။
- Multi-valued Dependency (MVD) မရှိရဘူး။
Multi-valued Dependency ဆိုတာ ဘာလဲ?
Section titled “Multi-valued Dependency ဆိုတာ ဘာလဲ?”Multi-valued Dependency (MVD) ဆိုတာ Table တစ်ခုထဲမှာ Primary Key နဲ့ ဆက်စပ်နေတဲ့ အချက်အလက် အစုအဝေး (Set of values) နှစ်ခု သို့မဟုတ် နှစ်ခုထက်ပိုပြီး ရှိနေပေမယ့်၊ အဲဒီ အစုအဝေးတွေ အချင်းချင်းကတော့ ဘာမှ မသက်ဆိုင်ဘဲ သီးခြားစီ ဖြစ်နေတဲ့ အခြေအနေမျိုးကို ခေါ်ပါတယ်။
MVD ဟာ အနည်းဆုံး Column ၃ ခု ပါတဲ့ Table တွေမှာသာ ဖြစ်လေ့ရှိပါတယ်။ ပုံသေနည်းအနေနဲ့ A ->> B လို့ ရေးလေ့ရှိပါတယ်။
4NF လိုအပ်လာပုံ (ဥပမာ)
Section titled “4NF လိုအပ်လာပုံ (ဥပမာ)”ဝန်ထမ်းတွေရဲ့ ကျွမ်းကျင်မှု (Skills) တွေနဲ့ သူတို့ပြောနိုင်တဲ့ ဘာသာစကား (Languages) တွေကို မှတ်ထားတဲ့ Table တစ်ခုကို ကြည့်ရအောင်။
စည်းမျဉ်းများ (Business Rules):
- ဝန်ထမ်းတစ်ယောက်ဟာ Skill တွေ အများကြီး ရှိနိုင်ပါတယ်။
- ဝန်ထမ်းတစ်ယောက်ဟာ ဘာသာစကား တွေလည်း အများကြီး ပြောနိုင်ပါတယ်။
- ဒါပေမဲ့ Skill နဲ့ Language ဟာ ဘာမှ မသက်ဆိုင်ပါဘူး။ (ဥပမာ - Python တတ်တာနဲ့ French စကားပြောတတ်တာ မဆိုင်ပါဘူး။)
| EmployeeID | Skill | Language |
|---|---|---|
| 101 | Programming | English |
| 101 | Programming | French |
| 101 | Design | English |
| 101 | Design | French |
ဒီ Table မှာ:
- Primary Key က
(EmployeeID, Skill, Language)သုံးခုစလုံး ပေါင်းထားတဲ့ Composite Key ပါ။ (ဒါမှ Unique ဖြစ်မှာမို့လို့ပါ) - Non-Key Column မပါတဲ့အတွက် BCNF အဆင့်ထိ ရောက်နေပြီလို့ ယူဆလို့ ရပါတယ်။
ဒါပေမဲ့ ပြဿနာ ရှိနေပါသေးတယ်: Employee 101 မှာ Skill အသစ် (ဥပမာ - Marketing) တစ်ခု တတ်သွားပြီ ဆိုပါစို့။ သူတတ်တဲ့ ဘာသာစကားက ၂ မျိုး ဖြစ်နေတဲ့အတွက်၊ အဲဒီ Skill အသစ်ကို ထည့်ချင်ရင် Row ၂ ကြောင်း (Marketing-English, Marketing-French) ထပ်ထည့်ရပါတော့မယ်။ Data တွေ အလဟဿ ထပ်နေတဲ့ (Redundancy) ပြဿနာ ဖြစ်လာပါတယ်။
ဒါဟာ Multi-valued Dependency ဖြစ်နေလို့ပါ။ EmployeeID ဟာ Skill ကိုလည်း အများကြီး သတ်မှတ်နိုင်သလို (EmployeeID ->> Skill)၊ Language ကိုလည်း အများကြီး သတ်မှတ်နိုင်ပါတယ်။ (EmployeeID ->> Language)။ ဒါပေမဲ့ Skill နဲ့ Language က အချင်းချင်း ဘာမှ မဆိုင်ပါဘူး။
BCNF မှ 4NF သို့ ပြောင်းလဲခြင်း
Section titled “BCNF မှ 4NF သို့ ပြောင်းလဲခြင်း”ဒီပြဿနာကို ဖြေရှင်းဖို့ 4NF စည်းမျဉ်းအရ အချင်းချင်း မသက်ဆိုင်တဲ့ Multi-valued Dependency တွေကို သီးသန့် Table တွေအဖြစ် ခွဲထုတ် ပေးရပါမယ်။
Table 1: Employee_Skills
| EmployeeID | Skill |
|---|---|
| 101 | Programming |
| 101 | Design |
Table 2: Employee_Languages
| EmployeeID | Language |
|---|---|
| 101 | English |
| 101 | French |
အခုဆိုရင် Skill အသစ်ထည့်ချင်ရင် Employee_Skills Table ထဲမှာ တစ်ကြောင်းတည်း သွားထည့်လိုက်ရုံပါပဲ။ ဘာသာစကား (Language) တွေကို လိုက်ပြီး ပွားထည့်စရာ မလိုတော့ပါဘူး။
ဒီလို ခွဲထုတ်လိုက်တဲ့အတွက် Data ထပ်နေတဲ့ ပြဿနာကို အပြည့်အဝ ဖြေရှင်းနိုင်သွားပြီး Fourth Normal Form (4NF) အဆင့်ကို ရောက်ရှိသွားပါပြီ။