Normalization အကြောင်း သိကောင်းစရာ
Programming ကိုလေ့လာနေသူတိုင်းအတွက် မသိမဖြစ်လိုအပ်တဲ့ database အပိုင်းထဲက ခေါင်းစဉ်တစ်ခုဖြစ်တဲ့ "Normalization" အကြောင်းလေးကို သူငယ်ချင်းအားလုံးနဲ့ ဆွေးနွေးချင်ပါတယ်။
သိသမျှလေးကို အခုလို Share ပေးပြီး discussion လုပ်ခြင်းဟာ programming ကို စတင်လေ့လာနေတဲ့ သူငယ်ချင်းတွေအတွက် တစိတ်တဒေသ အကျိုးဖြစ်ထွန်းမှုဖြစ်စေမယ်ဆိုရင် ကျေနပ်ပီတိဖြစ်မိမှာ အမှန်ပါပဲ။
တကယ်လို့ ရေးထားတဲ့အထဲမှာ အယူအဆလွဲမှားတယ်လို့တွေ့ရှိခဲ့ရင်လည်း အကြံပြုပေးမယ့် သူငယ်ချင်းများကိုကြိုဆိုပါတယ်။
ကဲ ဒါဆိုရင်တို့တွေ "Normalization" အကြောင်းကိုလေ့လာကြည့်ကြရအောင်နော်။
ဆရာတစ်ယောက်ပြောဖူးတဲ့စကားတစ်ခွန်းရှိပါတယ်။
အကြောင်းအရာတစ်ခုကို စပြီးလေ့လာတော့မယ်ဆိုရင် အပိုင်း (၄) ပိုင်း ခွဲပြီးလေ့လာသင့်တယ်တဲ့။
အဲဒီအပိုင်းတွေက
1.What ?
2.Why ?
3.How ?
4.When ?
2.Why ?
3.How ?
4.When ?
(1).What ?
What is Normalization ?
What ကတော့ - is a process ( သူက လုပ်ငန်းစဉ်တစ်ခုပါပဲ )
What ကတော့ - is a process ( သူက လုပ်ငန်းစဉ်တစ်ခုပါပဲ )
(2).Why ?
Why ကေတာ့ - to achieve consistency/integrity.
တနည်းအားဖြင့်ပြောမယ်ဆိုရင် uniform ( တစ်သမတ်တည်း) ဖြစ်ပြီး correctness (မှန်ကန်မှု) ရှိဖို့ပါပဲ။
တနည်းအားဖြင့်ပြောမယ်ဆိုရင် uniform ( တစ်သမတ်တည်း) ဖြစ်ပြီး correctness (မှန်ကန်မှု) ရှိဖို့ပါပဲ။
(3).How ?
မေးခွန်းကတော့ ဒီအကြောင်းအရာရဲ့တကယ့်အနှစ်သာရပါပဲ။ Example နဲ့တကွ အောက်မှာ discussion လုပ်ပေးပါမယ်။
(4).When ?
Normalization - everytime
Denormalization - sometimes, some cases
Denormalization - sometimes, some cases
How ရဲ့ question လေးကို example နဲ့တကွ အတူလေ့လာလာကြည့်ကြရအောင်။
Normalization က theory အရတော့ (6)ခုရှိပါတယ်။
- Zero Form
- First Normal Form
- Second Normal Form
- Third Normal Form
- Fourth Normal Form
- Fifth Normal Form
ဒါပေမယ့် တကယ့်လက်တွေ့ ကုမ္မဏီကြီးတွေမှာကိုပဲ Third Normal Form ( 3NF ) ထိသုံးရင်ကို တော်တော်ပြည့်စုံတယ်လို့ လေ့လာဖူးပါတယ်။
Fourth & Fifth Normal Form ( 4NF, 5NF ) တွေက
တော့ Theory မှာပဲရှိပြီး လက်တွေ့မှာ မသုံးသလောက်နည်းပါးပါတယ်။
တော့ Theory မှာပဲရှိပြီး လက်တွေ့မှာ မသုံးသလောက်နည်းပါးပါတယ်။
ဒါဆို အခု Stationary ဖြန့်တဲ့ company တစ်ခုရဲ့ Order Form ကို example အနေနဲ့လေ့လာကြည့်ကြရအောင်။
Order Form
ပုံမှာ ပြပေးထားပါတယ်။
ပုံမှာ ပြပေးထားပါတယ်။
1.Separate Repeating Data
ထပ်နေတဲ့ data တွေကို table တစ်ခုအနေနဲ့ ခွဲထုတ်ရပါမယ်။
ထပ်နေတဲ့ data တွေကို table တစ်ခုအနေနဲ့ ခွဲထုတ်ရပါမယ်။
ဒါဆိုရင် zero form မှာ အနီရောင်နဲ့ ဝိုက်ထားတဲ့အပိုင်းမဟုတ်တဲ့အပိုင်းဟာ ထပ်နေတဲ့အပိုင်း တွေပါ။
အဲဒီ အပိုင်းကို table တစ်ခုအနေနဲ့ 1NF မှာခွဲထုတ်ရပါမယ်။
ပြီးရင်
2.Define Primary Key
Primary Key သတ်မှတ်ပေးရပါမယ်။
PK ဟာ Unique ဖြစ်ရပါမယ်။
Primary Key သတ်မှတ်ပေးရပါမယ်။
PK ဟာ Unique ဖြစ်ရပါမယ်။
3.Define Relationship (Foreign Key )
Foreign Key သတ်မှတ်ပေးရပါ့မယ်။
ဒါမှသာ table တစ်ခုနဲ့တစ်ခု relationship ရှိမှာဖြစ်ပါတယ်။
Foreign Key သတ်မှတ်ပေးရပါ့မယ်။
ဒါမှသာ table တစ်ခုနဲ့တစ်ခု relationship ရှိမှာဖြစ်ပါတယ်။
ပထမ table မှာပါတဲ့ PK(Primary Key) ဟာ ဒုတိယ table မှာ ပြန်ပါနေရင် FK (Foreign Key) လို့ ခေါ်ပါမယ်။
ကဲ ဒါဆိုရင် 1NF table ကို ပုံမှာကြည့်ပါ။
1.Separate "Part Key Dependency"
(Key တစ်ခုကိုပဲ denpend ဖြစ်နေတဲ့ဟာကို ဆွဲထုတ်ရပါမယ်။)
(Key တစ်ခုကိုပဲ denpend ဖြစ်နေတဲ့ဟာကို ဆွဲထုတ်ရပါမယ်။)
အခုဆိုရင် Normalization ပြီးသွားပါပြီ။
အဲဒီနေရာမှာ တစ်ခုပြောချင်တာက Theory မှာတော့
"Remove calculated attributes".calculated attributes တွေကိုဖယ်ရမယ်လို့ဆိုလိုပါတယ်။
"Remove calculated attributes".calculated attributes တွေကိုဖယ်ရမယ်လို့ဆိုလိုပါတယ်။
Eg. Amount,Total Amount
ဒါပေမယ့် လက်တွေ့မှာတော့မဖယ်ကြပဲ ထားကြတယ်လို့ ဆရာတစ်ဦးက ပြောဖူးပါတယ်။
Database System
OLTP
OLAP
OLAP
OLTP ( Online Transaction Processing ) System
Data entry တွေများများထည့်/ပြင်/ဖျက်
Table တွေခွဲ
တစ်နည်းအားဖြင့် Normalization ပါ။
Eg. POS System and Restaurant တွေမှာသုံးပါတယ်။
Table တွေခွဲ
တစ်နည်းအားဖြင့် Normalization ပါ။
Eg. POS System and Restaurant တွေမှာသုံးပါတယ်။
OLAP ( Online Analytical Processing ) System
Mostly no entry
Just retrival
တစ်နည်းအားဖြင့် denormalization ပါ။
Just retrival
တစ်နည်းအားဖြင့် denormalization ပါ။
Denormalization
Table တွေကို ခွဲထားရာကနေ ပြန်ပေါင်းတာကို denormalization လို့ခေါ်ပါတယ်။
Eg. Data Warehousing , Data Mining တို့လို Business Intelligence ( BI Technology ) တွေမှာ သုံးပါတယ်။
Credit : Shwe Yee
အမေးအဖြေ။
Question:
မေးပါရစေ 0NF မှာ ထပ်နေတဲ့ အပိုင်းဆိုတာ မကြည့်တတ်ဘူး။ ဘယ်လိုဟာကို ထပ်တယ် လို့ ယူရမလဲ တဆိတ်လောက် ပြောပြပေးပါရှင့်။
မေးပါရစေ 0NF မှာ ထပ်နေတဲ့ အပိုင်းဆိုတာ မကြည့်တတ်ဘူး။ ဘယ်လိုဟာကို ထပ်တယ် လို့ ယူရမလဲ တဆိတ်လောက် ပြောပြပေးပါရှင့်။
Answer:
0 NF ပုံ မှာ အနီရောင် ထောင့်ကွင်းထဲ က data တွေပဲ မတူတာ။ အဲ့data တွေကြောင့် တခြား field တွေ ထောင့်ကွင်း အပြင် က data တွေ က ထပ်နေပါတယ်။
0 NF ပုံ မှာ အနီရောင် ထောင့်ကွင်းထဲ က data တွေပဲ မတူတာ။ အဲ့data တွေကြောင့် တခြား field တွေ ထောင့်ကွင်း အပြင် က data တွေ က ထပ်နေပါတယ်။
တူနေတဲ့ data field တွေထပ်ခါ ထပ်ခါ ထပ်ထည့်နေရမယ် အစား 1NF မှာ table သပ်သပ် ခွဲထုတ်လိုက်တာပါ။
Credit : Shwe Yee
No comments