ဒေတာဘေ့စမှီခိုဘာတွေလဲ?

ဒေတာဘေ့စမှီခိုမကြာခဏရောနှောကျောင်းသားများနှင့်ဒေတာဘေ့စကျွမ်းကျင်ပညာရှင်များနှစ်ဦးစလုံး confuses တဲ့ခေါင်းစဉ်ဖြစ်ကြသည်။ ကံကောင်းထောက်မစွာ, သူတို့ကမရှုပ်ထွေးပါဘူးဖြစ်ကြပြီးအကောင်းဆုံးဥပမာတစ်ခုအရေအတွက်ကိုအသုံးပြုခြင်းမှတဆင့်သရုပ်ဖော်နိုင်ပါတယ်။ ဤဆောင်းပါး၌, ငါတို့ဘုံဒေတာဘေ့စမှီခိုအမျိုးအစားများကိုဆန်းစစ်။

ဒေတာဘေ့စမှီခို / Functional မူတည်

တစ်ဦးကမှီခိုအတူတူဒေတာဘေ့စ table ထဲမှာသိမ်းထားတဲ့အချက်အလက်တွေကိုထူးခြားအတူတူ table ထဲမှာသိုလှောင်ထားသည်အခြားသတင်းအချက်အလက်ဆုံးဖြတ်သည်တဲ့အခါဒေတာဘေ့စကိုတွေ့ရှိနိုင်ပါသည်။ သငျသညျကိုလည်း သိ. ဘယ်မှာဆက်ဆံရေးအဖြစ်ဤဖော်ပြရန်နိုင်ပါတယ် တန်ဖိုးကို အတူတူ table ထဲမှာတဦးတည်း attribute ကို (သို့မဟုတ် attribute တွေအစုတခု) ၏သင်သည်အခြား attribute ကို (သို့မဟုတ် attribute တွေ၏အစု) ၏တန်ဖိုးကိုပြောပြရန်လုံလောက်ပါတယ်။

attribute တွေအကြားတစ်ဦးမှီခိုနေတဲ့ table ထဲမှာရှိကွောငျးဟုသူတို့အား attribute တွေအကြားတစ်ဦး functional မှီခိုရှိကွောငျးဟုအဖြစ်အတူတူပင်ဖြစ်ပါသည်။ တစ်ဦးမှီခိုထိုကဲ့သို့သောတဲ့ဒေတာဘေ့စရှိသည်ဆိုပါက attribute ကို B ကို attribute ကိုတစ်ဦးအပျေါမှီခိုဖြစ်ပါသည်, သင် "-> B ကိုတစ်ဦး" အဖြစ်ဒီရေးဖို့လိမ့်မယ်။

ဥပမာအားဖြင့်, လူမှုဖူလုံရေးနံပါတ် (SSN) နှင့်နာမကိုအမှီအပါအဝင်ဝန်ထမ်းဝိသေသလက္ခဏာများစာရင်းစားပွဲတစ်ခုမှာ, အမည်အား SSN အပေါ်သို့မှီခိုကြောင်းဟုဆိုနိုငျ (သို့မဟုတ် SSN -> အမည်) တစ်ခုဝန်ထမ်းရဲ့နာမညျကိုထူးခြားမိမိတို့၏ SSN ကနေဆုံးဖြတ်ထားနိုင်ပါတယ်။ အကြောင်းမူကား, သို့သော်ပြောင်းပြန်ကြေညာချက် - တစ်ဦးထက်ပိုဝန်ထမ်းအမည်တူပေမယ့်ကွဲပြားခြားနားတဲ့ SSNs ရှိနိုင်ပါသည်ဘာဖြစ်လို့လဲဆိုတော့ (အမည်> SSN) စစ်မှန်တဲ့မဟုတ်ပါဘူး။

အသေးအဖွဲ Functional မူတည်

သငျသညျမူလ attribute ကိုပါဝင်သော attribute တွေတစ်ဦးစုဆောင်းမှုတခုတခုအပေါ်မှာ attribute ကိုတစ်ဦး functional မှီခိုဖော်ပြရန်သည့်အခါတစ်ဦးကအသေးအဖွဲအလုပ်လုပ်တဲ့မှီခိုတွေ့ရှိနိုင်ပါသည်။ ဥပမာအားဖြင့်, "{A, B} -> B က" တစ်ဦးဖြစ်ပါတယ် , အသေးအဖွဲအလုပ်လုပ်တဲ့မှီခို ဖြစ်သကဲ့သို့ "{အမည်, SSN} -> SSN" ။ ဒါကြောင့်ဘုံအသိကနေဆင်းသက်လာနိုင်ပါတယ်ဘာလို့လဲဆိုတော့အလုပ်လုပ်တဲ့မှီခို၏ဤအမျိုးအစားအသေးအဖွဲဟုခေါ်တွင်သည်။ ဒါဟာသင်ပြီးသား B က၏တန်ဖိုးကိုသိကြလျှင်, B, ၏တန်ဖိုးထူးခြားကြောင်းအသိပညာကဆုံးဖြတ်နိုင်သိသာသည်။

အပြည့်အဝအသုံးမူတည်

သငျသညျပြီးသားတစ်ဦး functional မှီခိုနှင့်၏လက်ဝဲဘက်မှာ attribute တွေ၏အစုများအတွက်လိုအပ်ချက်များကိုဖြည့်ဆည်းသည့်အခါတစ်ဦးကအပြည့်အဝအလုပ်လုပ်တဲ့မှီခိုဖြစ်ပေါ် အလုပ်လုပ်တဲ့မှီခို ကြေညာချက်တစ်စုံတစ်ရာထပ်မံလျှော့ချရနိုင်မှာမဟုတ်ဘူး။ ဥပမာအားဖြင့်, "{SSN, အသက်} -> နာမကိုအမှီ" ဟုအလုပ်လုပ်တဲ့မှီခိုဖြစ်တယ်, ဒါပေမဲ့တကမဟုတ်ပါဘူး အပြည့်အဝအလုပ်လုပ်တဲ့မှီခို သင်မှီခိုကြားဆက်ဆံရေးထိခိုက်ခြင်းမရှိဘဲကြေညာချက်၏လက်ဝဲဘက်ခြမ်းကနေအသက်အရွယ်ဖယ်ရှားနိုင်ပါသည်။ အကြောင်းမူကား,

အကူးအပြောင်းမူတည်

အကူးအပြောင်းတစ်ခုအလုပ်လုပ်တဲ့မှီခိုဖြစ်ပေါ်စေသည်တစ်ခုသွယ်ဝိုက်ကြားဆက်ဆံရေးလည်းမရှိသည့်အခါဖြစ်ပေါ် dependencies ။ ဥပမာ - "A> ကို C" ဟုဖြစ်ပါသည် Transit မှီခို "-> B ကိုတစ်ဦးက" နှင့် "B က -> ကို C" စစ်မှန်တဲ့ဖြစ်ကြသည်။ ဒါကြောင့်နှစ်ဦးစလုံးသာရှိသောကြောင့်မှန်လာသောအခါ

Multivalued မူတည်

Multivalued မှီခိုနေတဲ့ table ထဲမှာတစျခုသို့မဟုတ်ထိုထက်ပိုအတန်း၏ရှေ့မှောက်တွင်ပင် table ထဲမှာတစျခုသို့မဟုတ်ထိုထက်ပိုသည်အခြားအတန်း၏ရှေ့မှောက်တွင်အဓိပ္ပာယ်သက်ရောက်သည့်အခါပေါ်ပေါက်ပါတယ်။ ဥပမာအားဖြင့်, မော်တော်ကားအများအပြားမော်ဒယ်များထုတ်လုပ်မယ့်ကားကိုကုမ္ပဏီတစ်ခုစိတ်ကူးပေမယ့်အမြဲတစ်ဦးချင်းစီမော်ဒယ်၏အနီရောင်နှင့်အပြာရောင်အဆင်းအရောင်နှစ်မျိုးလုံးကိုမှန်ကန်စေသည်။ သင်ကုမ္ပဏီထုတ်လုပ်တစ်ခုချင်းစီကိုကားတစ်စီး၏မော်ဒယ်အမည်, အရောင်နဲ့တစ်နှစ်ပါဝင်သောစားပွဲတစ်ခုရှိပါကတစ်ဦးလည်းမရှိ multivalued မှီခို ကြောင်း table ထဲမှာ။ တစ်တန်းအပြာအတွက်အချို့မော်ဒယ်အမည်နှင့်တစ်နှစ်ရှိလျှင်လည်းထိုကားအနီရောင်ဗားရှင်းသက်ဆိုင်ရာအလားတူအတန်းရှိရပါမည်။

မှီခို၏အရေးပါမှု

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