ဒေတာဘေ့စတစ်ချိန်တုန်းကအတွက်အပြည့်အဝအသုံးမှီခိုမှု

တစ်ဦးကအပြည့်အဝအလုပ်လုပ်တဲ့မှီခိုနေတဲ့ပြည်နယ်ဖြစ်တယ် ဒေတာဘေ့စပုံမှန် ၏ပုံမှန်စံမှနှိုင်းယှဉ်ထားသည်ကြောင်း ဒုတိယအပုံမှန်ပုံစံ (2NF) ။ အကျဉ်းခုနှစ်တွင်, ဒီကပထမဦးစွာပုံမှန်ပုံစံ (1NF) ၏လိုအပ်ချက်များကိုတွေ့ဆုံအပေါင်းတို့နှင့်တကွ, Non-key ကို attribute တွေအပြည့်အဝ function မူလတန်းသော့ချက်အပေါ်မှီခိုကြသည်ဟုဆိုလိုသည်။

ဤသည်ကအသံစခွေငျးငှါကဲ့သို့ရှုပ်ထွေးမဟုတ်ပါဘူး။ ရဲ့အသေးစိတ်အတွက်ဒီကိုကြည့်ကြပါစို့။

ပထမဦးစွာပုံမှန် Form ကိုအကျဉ်းချုပ်

ဒေတာဘေ့စအပြည့်အဝ function မှီခိုနိုင်ပါတယ်မပြုမီ, ကပထမဦးဆုံးလိုက်နာရမည် ပထမဦးစွာပုံမှန် Form ကို

ဤအမှုအလုံးစုံတို့ကိုအသီးအသီး attribute ကတစ်ခုတည်း, အနုမြူဗုံးတန်ဖိုးကိုကိုင်ထားရမယ်လို့ဆိုလိုပါတယ်။

အလုပျသမား Tina တစ်ခုတည်းဆဲလ်နှစ်ခုတည်နေရာ, သူတို့ထဲကနှစ်ဦးစလုံးနှင့်ဆက်စပ်သည်ကို ထောက်. ဥပမာ, အောက်ပါစားပွဲ, 1NF နှင့်အတူလိုက်လျောပါဘူး:

ပထမဦးစွာပုံမှန် Form ကို non-လေးစားလိုက်နာခြင်း
လုပ်သား တည်နေရာ
ယောဟနျသ Los Angeles မြို့
tina Los Angeles မြို့, ချီကာဂို

ဒီဒီဇိုင်းကိုခွင့်ပြုအဆိုးဒေတာ updates များကိုသို့မဟုတ် entries တွေကိုအကျိုးသက်ရောက်နိုင်။ အားလုံး attribute တွေ (သို့မဟုတ်ကော်လံဆဲလ်) တစ်ခုတည်းတန်ဖိုးကိုကိုင်နိုင်အောင် 1NF လိုက်နာမှုသေချာစေရန်, စားပွဲပြန်စီ:

ပထမဦးစွာပုံမှန် Form ကိုလေးစားလိုက်နာခြင်း
လုပ်သား တည်နေရာ
ယောဟနျသ 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 မှလိုက်နာစောင့်ထိန်းစဉ်းစားပါ။ ဒီနေရာတွင်ကဖနျဖြစ်ပါသည်:

ပထမဦးစွာပုံမှန် Form ကိုလေးစားလိုက်နာခြင်း
လုပ်သား တည်နေရာ
ယောဟနျသ Los Angeles မြို့
tina Los Angeles မြို့
tina ချီကာဂို

tina နှစ်ခုမှတ်တမ်းများရှိပါတယ်။ ကျနော်တို့နှစ်ဦးကိုရှိတယ်လို့သတိမထားမိဘဲတဦးတည်းကို update လျှင်, ရလဒ်ကိုက်ညီမှုဒေတာဖြစ်လိမ့်မယ်။

သို့မဟုတ်အဘယျအကြှနျုပျတို့သညျဤစားပွဲပေါ်မှာတစ်ခုဝန်ထမ်း add ချင်ပေမယ့်ကျနော်တို့သေးတည်နေရာမသိရပါဘူးဆိုရငျကော ကျနော်တို့တည်နေရာ attribute ကို null တန်ဖိုးများကိုခွင့်မပြုပါဘူးဆိုရင်တောင်မှသစ်တစ်ခုဝန်ထမ်းကိုထည့်သွင်းဖို့မြစ်တားခြင်းကိုခံရပေလိမ့်မည်။

ဒါဟာပုံမှန်မှကြွလာသောအခါအပြည့်အဝမှီခိုသျောတစျခုလုံးရုပ်ပုံမဟုတ်ပါဘူး။ သင်သည်သင်၏ဒေတာဘေ့စသည်သေချာအောင်ရမယ် တတိယပုံမှန် Form ကို (3NF) ။