တတိယပုံမှန်ပုံစံ (3NF) တွင်တစ်ဦး Database ကိုချပြီး

တတိယပုံမှန်ပုံစံ (3NF) ကိုအပေါ်သို့တည်ဆောက်ခြင်းအားဖြင့်ဒေတာများ၏သမာဓိကိုထောက်ပံ့မယ့်ဒေတာဘေ့စနိယာမတစ်ခုဖြစ်သည် ဒေတာဘေ့စပုံမှန်အခြေခံမူ ပထမဦးစွာပုံမှန်ပုံစံ (1NF) နှင့်ဒုတိယအချက်မှာပုံမှန်ပုံစံ (2NF) ကထောက်ပံ့ပေးခဲ့သည်။

တတိယပုံမှန် Form ကိုလိုအပ်ချက်များ

တတိယပုံမှန်ပုံစံအတွက်ဖြစ်မယ့်ဒေတာဘေ့စနှစ်ခုအခြေခံလိုအပ်ချက်များကိုရှိပါတယ်:

မူလတန်း Key ကိုမှီခိုအကြောင်း

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

တစ်ကော်လံရဲ့တန်ဖိုးကိုအဓိကသော့ချက်နှင့် table ထဲမှာအခြားကော်လံနှစ်ခုလုံးကနေဆင်းသက်လာနိုင်ပါသည်ဆိုပါက 3NF ချိုးဖောက်။ ဤအကော်လံနှင့်အတူတစ်န်ထမ်းစားပွဲပေါ်မှာစဉ်းစားကြည့်ပါ:

LastName နှင့် FIRSTNAME နှစ်ဦးစလုံး EmployeeID ၏တန်ဖိုးအပေါ်သာမူတည်ပါသလား ကောင်းပြီ, LastName FIRSTNAME အပေါ်မူတည်နိုင်မည်နည်း အဘယ်သူမျှမကြောင့် LastName အတွက်မွေးရာပါဘာမျှ FIRSTNAME ၏တန်ဖိုးအကြံပြုလိမ့်မယ်။ FIRSTNAME LastName အပေါ်မူတည်ရနိုင်မလား? တူညီသောစစ်မှန်တဲ့ကြောင့်အဘယ်သူမျှမဖနျ: တစ် LastName ဖြစ်စေခြင်းငှါသမျှသောကြောင့် FIRSTNAME ၏တန်ဖိုးမှအဖြစ်အရိပ်အမြွက်မပေးနိုင်ဘူး။ ထို့ကြောင့်ဤစားပွဲပေါ်မှာ 3NF လိုက်နာဖြစ်ပါတယ်။

ဒါပေမဲ့ဒီယာဉ်စားပွဲပေါ်မှာစဉ်းစားပါ:

အဆိုပါထုတ်လုပ်သူများနှင့်မော်ဒယ်ကတော့ VehicleID ထံမှရယူထားခြင်းနိုင် - ဒါပေမယ့်တစ်ဦးမော်တော်ယာဉ်မော်ဒယ်တစ်ခုသာအထူးသဖြင့်ထုတ်လုပ်သူများကဖန်ဆင်းထားသည်ကြောင့်မော်ဒယ်ကတော့ထုတ်လုပ်သူများထံမှလည်းရယူထားခြင်းနိုင်ဘူး။ ဤသည်ကိုစားပွဲဒီဇိုင်းကို Non-3NF လိုက်နာဖြစ်တယ်, ဒါကြောင့် data ကိုကွဲလွဲချက်များဖြစ်ပေါ်နိုင်ပါတယ်။ ဥပမာအားဖြင့်, သငျသညျတိမိတ်ဆက်, မော်ဒယ်ကို update မပါဘဲထုတ်လုပ်သူကို update ပေလိမ့်မည်။

ကလိုက်နာစေရန်, ကျနော်တို့အခြားစားပွဲပေါ်မှာဖို့နောက်ထပ်မှီခိုကော်လံရွှေ့နှင့်နိုင်ငံခြား key ကိုသုံးပြီးကကိုးကားရန်လိုအပ်သည်လိမ့်မယ်။ ဒီအပွားနှစျပွားမှုမယ်လို့:

မော်တော်ယာဉ်များဇယား

အောက်ပါဇယားမှာ ModelID အဆိုပါ & Models စားပွဲပေါ်မှာဖို့နိုင်ငံခြားသော့ချက်ဖြစ်ပါသည်:

မော်ဒယ်ဇယား

ဤသည်အသစ်သောစားပွဲပေါ်မှာထုတ်လုပ်သူမှမော်ဒယ်များမြေပုံ။ သင်တစ်ဦးမော်ဒယ်မှသတ်သတ်မှတ်မှတ်မဆိုမော်တော်ယာဉ်သတင်းအချက်အလက်ကို update ချင်လျှင်, သင်အစားယာဉ်များ table ထဲမှာထက်, ဒီဇယားကလုပ်ပေးလိမ့်မယ်။

အဆိုပါ 3NF မော်ဒယ်အတွက်ဆင်းသက်လာ Fields

စားပွဲပေါ်မှာတခြားကော်လံပေါ်တွင်အခြေခံတွက်ချက်ကြောင်းတဦးတည်း - တစ်ဦးကစားပွဲတစ်ဆင်းသက်လာသောလယ်ဆံ့ပေလိမ့်မည်။ ဥပမာအားဖြင့်, ဝစ်ဂျက်ကိုအမိန့်၏ဤစားပွဲပေါ်မှာစဉ်းစားပါ:

စုစုပေါင်းလပ်ချိန် 3NF လိုက်နာမှုကအရေအတွက်အားဖြင့်ယူနစ်စျေးနှုန်းမြှောက်, အစားထက်အဓိကသော့ချက်အပေါ်သို့အပြည့်အဝမှီခိုဖြစ်ခြင်းအားဖြင့်ဆင်းသက်လာနိုင်ပါသည်။ အကြောင်းမူကား, ကျနော်တို့တတိယပုံမှန်ပုံစံတွေနဲ့လိုက်လျောဖို့စားပွဲကနေဖယ်ရှားပစ်ရမည်ဖြစ်သည်။

ကဆင်းသက်လာတာဖြစ်ပါတယ်ကတည်းကတကယ်တော့, ကမှာလူအပေါင်းတို့သည်ဒေတာဘေ့စထဲမှာသိုလှောင်သိမ်းဆည်းမပိုကောင်းတယ်။

ဒေတာဘေ့စမေးမြန်းချက်ဖျော်ဖြေတဲ့အခါမှာကျနော်တို့ရိုးရှင်းစွာ "ဟုအဆိုပါယင်ကောင်အပေါ်က" တွက်ချက်နိုင်ပါတယ်။ ဥပမာအားဖြင့်ကျနော်တို့ဟာအရင်ကအမိန့်နံပါတ်များနှင့်စုစုပေါင်း retrieve ဤစုံစမ်းမှုကိုအသုံးပြုခဲ့ကြလိမ့်မယ်:

WidgetOrders FROM မှ OrderNumber, စုစုပေါင်း SELECT

ယခုကြှနျုပျတို့အောက်ပါ query ကိုအသုံးပွုနိုငျ:

OrderNumber, UnitPrice * WidgetOrders FROM မှစုစုပေါင်း AS အရေအတွက် SELECT

ပုံမှန်စည်းမျဉ်းစည်းကမ်းတွေကိုချိုးဖောက်မရှိဘဲတူညီသောရလာဒ်များအောင်မြင်ရန်။