တစ်ဦးကအပြည့်အဝအလုပ်လုပ်တဲ့မှီခိုနေတဲ့ပြည်နယ်ဖြစ်တယ် ဒေတာဘေ့စပုံမှန် ၏ပုံမှန်စံမှနှိုင်းယှဉ်ထားသည်ကြောင်း ဒုတိယအပုံမှန်ပုံစံ (2NF) ။ အကျဉ်းခုနှစ်တွင်, ဒီကပထမဦးစွာပုံမှန်ပုံစံ (1NF) ၏လိုအပ်ချက်များကိုတွေ့ဆုံအပေါင်းတို့နှင့်တကွ, Non-key ကို attribute တွေအပြည့်အဝ function မူလတန်းသော့ချက်အပေါ်မှီခိုကြသည်ဟုဆိုလိုသည်။
ဤသည်ကအသံစခွေငျးငှါကဲ့သို့ရှုပ်ထွေးမဟုတ်ပါဘူး။ ရဲ့အသေးစိတ်အတွက်ဒီကိုကြည့်ကြပါစို့။
ပထမဦးစွာပုံမှန် Form ကိုအကျဉ်းချုပ်
ဒေတာဘေ့စအပြည့်အဝ function မှီခိုနိုင်ပါတယ်မပြုမီ, ကပထမဦးဆုံးလိုက်နာရမည် ပထမဦးစွာပုံမှန် Form ကို ။
ဤအမှုအလုံးစုံတို့ကိုအသီးအသီး attribute ကတစ်ခုတည်း, အနုမြူဗုံးတန်ဖိုးကိုကိုင်ထားရမယ်လို့ဆိုလိုပါတယ်။
အလုပျသမား Tina တစ်ခုတည်းဆဲလ်နှစ်ခုတည်နေရာ, သူတို့ထဲကနှစ်ဦးစလုံးနှင့်ဆက်စပ်သည်ကို ထောက်. ဥပမာ, အောက်ပါစားပွဲ, 1NF နှင့်အတူလိုက်လျောပါဘူး:
လုပ်သား | တည်နေရာ |
---|---|
ယောဟနျသ | Los Angeles မြို့ |
tina | Los Angeles မြို့, ချီကာဂို |
ဒီဒီဇိုင်းကိုခွင့်ပြုအဆိုးဒေတာ updates များကိုသို့မဟုတ် entries တွေကိုအကျိုးသက်ရောက်နိုင်။ အားလုံး attribute တွေ (သို့မဟုတ်ကော်လံဆဲလ်) တစ်ခုတည်းတန်ဖိုးကိုကိုင်နိုင်အောင် 1NF လိုက်နာမှုသေချာစေရန်, စားပွဲပြန်စီ:
လုပ်သား | တည်နေရာ |
---|---|
ယောဟနျသ | Los Angeles မြို့ |
tina | Los Angeles မြို့ |
tina | ချီကာဂို |
သို့သော် 1NF နေဆဲဒေတာနှင့်အတူပြဿနာများကိုရှောင်ရှားဖို့လုံလောက်တဲ့မဟုတ်ပါဘူး။
ဘယ်လို 2NF အပြည့်အဝရမှီခိုမှုရှိစေရန်မှအလုပ်လုပ်
အပြည့်အဝမှီခိုဖြစ်စေရန်, အားလုံး Non-ကိုယ်စားလှယ်လောင်း key ကို attribute တွေအဓိကသော့ချက်အပေါ်မူတည်ရမည်ဖြစ်သည်။ (ကသတိရပါ ကိုယ်စားလှယ်လောင်း key ကို attribute ကိုဥပမာဆို key ကို (တစ်မူလတန်းသို့မဟုတ်နိုင်ငံခြားသော့ချက်) ထူးခြားနေတဲ့ဒေတာဘေ့စစံချိန်ကိုဖေါ်ထုတ်ရန်အသုံးပြုသည်။
ဒေတာဘေ့စဒီဇိုင်နာများ attribute တွေအကြားမှီခိုဆက်ဆံရေးကိုဖော်ပြရန်တစ်ဦးသင်္ကေတကိုအသုံးပြုရန်:
> B - - attribute ကိုတစ်ဦးက B ကို၏တန်ဖိုးကိုဆုံးဖြတ်လျှင်, ငါတို့သည်ဤသူတစ်ဦးကရေးလိုက် B ကအေပေါ်မူတည်နေချိန်တွင် B တွင်ဤဆက်ဆံရေးမျိုးမှာတော့အေအပေါ် function မှီခိုကြောင်းဆိုလိုတာက A, B ၏တန်ဖိုးကိုဆုံးဖြတ်
ဥပမာအားဖြင့်, အောက်ပါထမ်းဦးစီးဌာနများ table ထဲမှာ, EmployeeID နှင့် DeptID နှစ်ဦးစလုံးကိုယ်စားလှယ်လောင်းသော့နေသောခေါင်းစဉ်: DeptID နိုင်ငံခြားသော့ချက်စဉ် EmployeeID စားပွဲရဲ့အဓိကသော့ချက်ဖြစ်ပါတယ်။
အခြားမည်သည့် attribute ကို - ဤအမှု၌, EmployeeName နှင့် DeptName - ၎င်း၏တန်ဖိုးကိုရရှိရန်အဓိကသော့ချက်အပေါ်မူတည်ရမည်ဖြစ်သည်။
EmployeeID | EmployeeName | DeptID | DeptName |
---|---|---|---|
Emp1 | ယောဟနျသ | Dept001 | ဘဏ္ဍာရေး |
Emp2 | tina | Dept003 | အရောင်း |
Emp3 | ကားလို့စ် | Dept001 | ဘဏ္ဍာရေး |
အဆိုပါ EmployeeName မူလတန်း key ကို EmployeeID ပေါ်မှာမူတည်ပါတယ်စဉ်အခါ, DeptName အဆိုပါ DeptID အပေါ်အစားမူတည်ကြောင့်ဤကိစ္စတွင်ခုနှစ်, စားပွဲအပြည့်အဝမှီခိုမဟုတ်ပါဘူး။ ဒါဟာတစိတ်တပိုင်းမှီခိုဟုခေါ်သည်။
ဒီစားပွဲ 2NF မှကိုက်ညီအောင်ကျနော်တို့ကျောက်ပြားနှစ်ပြားထဲသို့ဒေတာကိုခွဲခြားရန်လိုအပ်ပါသည်:
EmployeeID | EmployeeName | DeptID |
---|---|---|
Emp1 | ယောဟနျသ | Dept001 |
Emp2 | tina | Dept003 |
Emp3 | ကားလို့စ် | Dept001 |
ကျနော်တို့န်ထမ်းစားပွဲကနေ DeptName attribute ကိုဖယ်ရှားပစ်အသစ်တစ်ခုစားပွဲပေါ်မှာဦးစီးဌာနများဖန်တီး:
DeptID | DeptName |
---|---|
Dept001 | ဘဏ္ဍာရေး |
Dept002 | လူ့အင်အားအရင်းအမြစ် |
Dept003 | အရောင်း |
အခုတော့စားပွဲကြားရှိဆက်ဆံရေးအပြည့်အဝမှီခို, ဒါမှမဟုတ် 2NF ၌ရှိကြ၏။
အပြည့်အဝရမှီခိုမှုအရေးကြီးအဘယျကွောငျ့
ဒေတာဘေ့စ attribute တွေအကြားအပြည့်အဝမှီခိုဒေတာသမာဓိရှိသေချာနှင့်အချက်အလက်ကွဲလွဲချက်များကိုရှောင်ကြဉ်ကူညီပေးသည်။
ဥပမာအားဖြင့်, ကြောင်းအထက်ပါအပိုင်းအတွက်စားပွဲပေါ်မှာသာ 1NF မှလိုက်နာစောင့်ထိန်းစဉ်းစားပါ။ ဒီနေရာတွင်ကဖနျဖြစ်ပါသည်:
လုပ်သား | တည်နေရာ |
---|---|
ယောဟနျသ | Los Angeles မြို့ |
tina | Los Angeles မြို့ |
tina | ချီကာဂို |
tina နှစ်ခုမှတ်တမ်းများရှိပါတယ်။ ကျနော်တို့နှစ်ဦးကိုရှိတယ်လို့သတိမထားမိဘဲတဦးတည်းကို update လျှင်, ရလဒ်ကိုက်ညီမှုဒေတာဖြစ်လိမ့်မယ်။
သို့မဟုတ်အဘယျအကြှနျုပျတို့သညျဤစားပွဲပေါ်မှာတစ်ခုဝန်ထမ်း add ချင်ပေမယ့်ကျနော်တို့သေးတည်နေရာမသိရပါဘူးဆိုရငျကော ကျနော်တို့တည်နေရာ attribute ကို null တန်ဖိုးများကိုခွင့်မပြုပါဘူးဆိုရင်တောင်မှသစ်တစ်ခုဝန်ထမ်းကိုထည့်သွင်းဖို့မြစ်တားခြင်းကိုခံရပေလိမ့်မည်။
ဒါဟာပုံမှန်မှကြွလာသောအခါအပြည့်အဝမှီခိုသျောတစျခုလုံးရုပ်ပုံမဟုတ်ပါဘူး။ သင်သည်သင်၏ဒေတာဘေ့စသည်သေချာအောင်ရမယ် တတိယပုံမှန် Form ကို (3NF) ။