တတိယပုံမှန်ပုံစံ (3NF) ကိုအပေါ်သို့တည်ဆောက်ခြင်းအားဖြင့်ဒေတာများ၏သမာဓိကိုထောက်ပံ့မယ့်ဒေတာဘေ့စနိယာမတစ်ခုဖြစ်သည် ဒေတာဘေ့စပုံမှန်အခြေခံမူ ပထမဦးစွာပုံမှန်ပုံစံ (1NF) နှင့်ဒုတိယအချက်မှာပုံမှန်ပုံစံ (2NF) ကထောက်ပံ့ပေးခဲ့သည်။
တတိယပုံမှန် Form ကိုလိုအပ်ချက်များ
တတိယပုံမှန်ပုံစံအတွက်ဖြစ်မယ့်ဒေတာဘေ့စနှစ်ခုအခြေခံလိုအပ်ချက်များကိုရှိပါတယ်:
- အဆိုပါဒေတာဘေ့စပြီးသားနှစ်ဦးစလုံး၏လိုအပ်ချက်များကိုဖြည့်ဆည်းရမယ် 1NF နှင့် 2NF ။
- အားလုံးဒေတာဘေ့စကော်လံသည့်အပေါ်မူတည်ရမယ် မူလတန်း key ကို မဆိုကော်လံရဲ့တန်ဖိုးကိုသာအဓိကသော့ချက်ကနေဆင်းသက်လာနိုင်ဆိုလိုတာက။
မူလတန်း Key ကိုမှီခိုအကြောင်း
ရဲ့ငါတို့ရှိသမျှသည်ကော်လံမူလတန်းသော့ချက်အပေါ်မူတည်ရမယ်ဆိုတဲ့အချက်ကိုအားဖြင့်အဘယ်သို့ဆိုလိုသည်ကိုထပ်မံစူးစမ်းလေ့လာကြပါစို့။
တစ်ကော်လံရဲ့တန်ဖိုးကိုအဓိကသော့ချက်နှင့် table ထဲမှာအခြားကော်လံနှစ်ခုလုံးကနေဆင်းသက်လာနိုင်ပါသည်ဆိုပါက 3NF ချိုးဖောက်။ ဤအကော်လံနှင့်အတူတစ်န်ထမ်းစားပွဲပေါ်မှာစဉ်းစားကြည့်ပါ:
- EmployeeID
- နာမည်
- မျိုးနွယ်အမည်
LastName နှင့် FIRSTNAME နှစ်ဦးစလုံး EmployeeID ၏တန်ဖိုးအပေါ်သာမူတည်ပါသလား ကောင်းပြီ, LastName FIRSTNAME အပေါ်မူတည်နိုင်မည်နည်း အဘယ်သူမျှမကြောင့် LastName အတွက်မွေးရာပါဘာမျှ FIRSTNAME ၏တန်ဖိုးအကြံပြုလိမ့်မယ်။ FIRSTNAME LastName အပေါ်မူတည်ရနိုင်မလား? တူညီသောစစ်မှန်တဲ့ကြောင့်အဘယ်သူမျှမဖနျ: တစ် LastName ဖြစ်စေခြင်းငှါသမျှသောကြောင့် FIRSTNAME ၏တန်ဖိုးမှအဖြစ်အရိပ်အမြွက်မပေးနိုင်ဘူး။ ထို့ကြောင့်ဤစားပွဲပေါ်မှာ 3NF လိုက်နာဖြစ်ပါတယ်။
ဒါပေမဲ့ဒီယာဉ်စားပွဲပေါ်မှာစဉ်းစားပါ:
- VehicleID
- ထုတ်လုပ်သူ
- ပုံစံ
အဆိုပါထုတ်လုပ်သူများနှင့်မော်ဒယ်ကတော့ VehicleID ထံမှရယူထားခြင်းနိုင် - ဒါပေမယ့်တစ်ဦးမော်တော်ယာဉ်မော်ဒယ်တစ်ခုသာအထူးသဖြင့်ထုတ်လုပ်သူများကဖန်ဆင်းထားသည်ကြောင့်မော်ဒယ်ကတော့ထုတ်လုပ်သူများထံမှလည်းရယူထားခြင်းနိုင်ဘူး။ ဤသည်ကိုစားပွဲဒီဇိုင်းကို Non-3NF လိုက်နာဖြစ်တယ်, ဒါကြောင့် data ကိုကွဲလွဲချက်များဖြစ်ပေါ်နိုင်ပါတယ်။ ဥပမာအားဖြင့်, သငျသညျတိမိတ်ဆက်, မော်ဒယ်ကို update မပါဘဲထုတ်လုပ်သူကို update ပေလိမ့်မည်။
ကလိုက်နာစေရန်, ကျနော်တို့အခြားစားပွဲပေါ်မှာဖို့နောက်ထပ်မှီခိုကော်လံရွှေ့နှင့်နိုင်ငံခြား key ကိုသုံးပြီးကကိုးကားရန်လိုအပ်သည်လိမ့်မယ်။ ဒီအပွားနှစျပွားမှုမယ်လို့:
မော်တော်ယာဉ်များဇယား
အောက်ပါဇယားမှာ ModelID အဆိုပါ & Models စားပွဲပေါ်မှာဖို့နိုင်ငံခြားသော့ချက်ဖြစ်ပါသည်:
- VehicleID
- ထုတ်လုပ်သူ
- ModelID
မော်ဒယ်ဇယား
ဤသည်အသစ်သောစားပွဲပေါ်မှာထုတ်လုပ်သူမှမော်ဒယ်များမြေပုံ။ သင်တစ်ဦးမော်ဒယ်မှသတ်သတ်မှတ်မှတ်မဆိုမော်တော်ယာဉ်သတင်းအချက်အလက်ကို update ချင်လျှင်, သင်အစားယာဉ်များ table ထဲမှာထက်, ဒီဇယားကလုပ်ပေးလိမ့်မယ်။
- ModelID
- ထုတ်လုပ်သူ
- ပုံစံ
အဆိုပါ 3NF မော်ဒယ်အတွက်ဆင်းသက်လာ Fields
စားပွဲပေါ်မှာတခြားကော်လံပေါ်တွင်အခြေခံတွက်ချက်ကြောင်းတဦးတည်း - တစ်ဦးကစားပွဲတစ်ဆင်းသက်လာသောလယ်ဆံ့ပေလိမ့်မည်။ ဥပမာအားဖြင့်, ဝစ်ဂျက်ကိုအမိန့်၏ဤစားပွဲပေါ်မှာစဉ်းစားပါ:
- အမှာစာနံပါတ်
- ဖောက်သည်အရေအတွက်
- တစ်ခုချင်းစျေးနှုန်း
- အရေအတွက်
- စုစုပေါငျး
စုစုပေါင်းလပ်ချိန် 3NF လိုက်နာမှုကအရေအတွက်အားဖြင့်ယူနစ်စျေးနှုန်းမြှောက်, အစားထက်အဓိကသော့ချက်အပေါ်သို့အပြည့်အဝမှီခိုဖြစ်ခြင်းအားဖြင့်ဆင်းသက်လာနိုင်ပါသည်။ အကြောင်းမူကား, ကျနော်တို့တတိယပုံမှန်ပုံစံတွေနဲ့လိုက်လျောဖို့စားပွဲကနေဖယ်ရှားပစ်ရမည်ဖြစ်သည်။
ကဆင်းသက်လာတာဖြစ်ပါတယ်ကတည်းကတကယ်တော့, ကမှာလူအပေါင်းတို့သည်ဒေတာဘေ့စထဲမှာသိုလှောင်သိမ်းဆည်းမပိုကောင်းတယ်။
ဒေတာဘေ့စမေးမြန်းချက်ဖျော်ဖြေတဲ့အခါမှာကျနော်တို့ရိုးရှင်းစွာ "ဟုအဆိုပါယင်ကောင်အပေါ်က" တွက်ချက်နိုင်ပါတယ်။ ဥပမာအားဖြင့်ကျနော်တို့ဟာအရင်ကအမိန့်နံပါတ်များနှင့်စုစုပေါင်း retrieve ဤစုံစမ်းမှုကိုအသုံးပြုခဲ့ကြလိမ့်မယ်:
WidgetOrders FROM မှ OrderNumber, စုစုပေါင်း SELECTယခုကြှနျုပျတို့အောက်ပါ query ကိုအသုံးပွုနိုငျ:
OrderNumber, UnitPrice * WidgetOrders FROM မှစုစုပေါင်း AS အရေအတွက် SELECTပုံမှန်စည်းမျဉ်းစည်းကမ်းတွေကိုချိုးဖောက်မရှိဘဲတူညီသောရလာဒ်များအောင်မြင်ရန်။