တစ်ချိန်တုန်းကအာမခံကိုကူညီပါဖို့ Transit မူတည်ရှောင်ကြဉ်ပါ
database ထဲတွင်တစ်ဦးက Transit မှီခိုနေတဲ့ကိုဖြစ်ပေါ်စေသည်သောတူညီ table ထဲမှာတန်ဖိုးများအကြားတစ်ဦးသွယ်ဝိုက်ကြားဆက်ဆံရေးဖြစ်ပါတယ် အလုပ်လုပ်တဲ့မှီခို ။ တတိယပုံမှန်ပုံစံ (3NF) ၏ပုံမှန်စံအောင်မြင်ရန်, သင်သည်မည်သည့်အကူးအပြောင်းမှီခိုဖယ်ရှားပစ်ရမည်ဖြစ်သည်။
၎င်း၏သဘာဝအားဖြင့်တစ်ဦးအကူးအပြောင်းမှီခိုနေတဲ့ table ထဲမှာကော်လံတစ်ဦးကတစ်ဦးအလယ်အလတ်ကော်လံ C. မှတဆင့်ကော်လံ B ကိုအပေါ်မှီခိုကြောင်းဆိုလိုတာကသူတို့ကိုအကြားတစ်ဦး functional မှီခိုရှိသည်သုံးခုသို့မဟုတ်ထိုထက်ပို attribute တွေ (သို့မဟုတ်ဒေတာဘေ့စကော်လံ) လိုအပ်ပါတယ်
ဒီအလုပ်မလုပ်စေခြင်းငှါ, ဘယ်လိုကြည့်ရှုကြပါစို့။
အကူးအပြောင်းမှီခိုမှုဥပမာ
အာဏာပိုင်များ
Author_ID | စာရေးသူ | စာအုပ် | Author_Nationality |
---|---|---|---|
Auth_001 | Orson Scott Card ကို | Ender ရဲ့ဂိမ်း | ယူနိုက်တက်စတိတ် |
Auth_001 | Orson Scott Card ကို | Ender ရဲ့ဂိမ်း | ယူနိုက်တက်စတိတ် |
Auth_002 | မာဂရက် Atwood | ကြှနျမရဲ့ပုံပြင် | ကနေဒါ |
အထက်အာဏာပိုင်များဥပမာထဲမှာ:
- စာအုပ်→ Author: ဤတွင်, ထိုစာအုပ် attribute ကိုဘျော attribute ကိုဆုံးဖြတ်သည်။ သင်စာအုပ်နာမကိုသိလျှင်, သင်ရေးသားသူရဲ့နာမညျကိုသင်ယူနိုင်ပါတယ်။ စာရေးဆရာမျိုးစုံစာအုပ်တွေရေးသားနိုငျသောကွောငျ့သို့သော်စာရေးသူ, စာအုပ်ဆုံးဖြတ်ရန်မထားဘူး။ ဥပမာအားဖြင့်ကျနော်တို့ရေးသားသူရဲ့နာမညျကို Orson Scott Card ကိုသိကြလို့ကျနော်တို့နေဆဲစာအုပ်အမည်အားမသိရပါဘူး။
- စာရေးသူ→ Author_Nationality: အလားတူပင်အာဘော် attribute ကိုလှည့်ပတ်အခြားနည်းလမ်း Author_Nationality ဆုံးဖြတ်သည်, ဒါပေမယ့်ဘဲ, ကျနော်တို့ကနိုင်ငံသားကိုသိရုံဘာဖြစ်လို့လဲဆိုတော့ကျနော်တို့ရေးသားသူဆုံးဖြတ်ရန်နိုင်ပါတယ်မဆိုလိုပါ။
သို့သော်ဤစားပွဲပေါ်မှာတစ်ဦးအကူးအပြောင်းမှီခိုမိတ်ဆက်:
- စာအုပ်→ Author_Nationality: ငါတို့သည်စာအုပ်နာမကိုသိလျှင်, ငါတို့သည်အာဘော်ကော်လံကနေတဆင့်နိုင်ငံသားဆုံးဖြတ်ရန်နိုင်ပါတယ်။
အကူးအပြောင်းမူတည်ရှောင်ရှား
တတိယပုံမှန် Form ကိုသေချာစေရန်ရဲ့အကူးအပြောင်းမှီခိုဖယ်ရှားပစ်ကြကုန်အံ့။
ကျနော်တို့ Authors စားပွဲပေါ်မှာအနေဖြင့်စာအုပ်ကော်လံဖယ်ရှားခြင်းနှင့်သီးခြားစာအုပ်များစားပွဲပေါ်မှာဖန်တီးခြင်းအားဖြင့်စတင်နိုင်ပါသည်:
စာစောင်များ
Book_ID | စာအုပ် | Author_ID |
---|---|---|
Book_001 | Ender ရဲ့ဂိမ်း | Auth_001 |
Book_001 | စိတျ၏ကလေးများ | Auth_001 |
Book_002 | ကြှနျမရဲ့ပုံပြင် | Auth_002 |
အာဏာပိုင်များ
Author_ID | စာရေးသူ | Author_Nationality |
---|---|---|
Auth_001 | Orson Scott Card ကို | ယူနိုက်တက်စတိတ် |
Auth_002 | မာဂရက် Atwood | ကနေဒါ |
ဒီက fix ခဲ့သလား ရဲ့ယခုကျွန်တော်တို့ရဲ့မှီခိုဆနျးစစျကွပါစို့:
စာစောင်များစားပွဲပေါ်မှာ:
- Book_ID →စာအုပ်: အဆိုပါစာအုပ်ကတော့ Book_ID ပေါ်တွင်မူတည်သည်။
- ဒီဇယားအဘယ်သူမျှမကအခြားမှီခိုတည်ရှိဒါကြောင့်ကျနော်တို့အဆင်ပြေဖြစ်ကြသည်။ ၎င်း၏အဓိကသော့ချက် Author_ID မှတဆင့်အာဏာပိုင်များစားပွဲပေါ်မှာဤစားပွဲပေါ်မှာနိုင်ငံခြား key ကို Author_ID လင့်များသတိပြုပါ။ ကျနော်တို့က Transit မှီခို, relational database များကိုတစ်ဦး key ကိုဒီဇိုင်းကိုရှောင်ကြဉ်ရန်ဆက်ဆံရေးဖန်တီးခဲ့ကြသည်။
Author စားပွဲပေါ်မှာ:
- Author_ID → Author: အဆိုပါစာရေးသူဟာ Author_ID ပေါ်တွင်မူတည်သည်။
- စာရေးသူ→ Author_Nationality: အဆိုပါနိုင်ငံသားရေးသားသူကဆုံးဖြတ်နိုင်ပါတယ်။
- Author_ID → Author_Nationality: အဆိုပါနိုင်ငံသားအာဘော် attribute ကနေတဆင့် Author_ID ကနေဆုံးဖြတ်နိုင်သည်။ ကျနော်တို့ဆဲအကူးအပြောင်းမှီခိုရှိသည်။
ကျနော်တို့ကဒီဒေတာကိုပုံမှန်တစ်တတိယစားပွဲပေါ်မှာ add ဖို့လိုအပ်:
COUNTRIES မှ
Country_ID | ပြည် |
---|---|
Coun_001 | ယူနိုက်တက်စတိတ် |
Coun_002 | ကနေဒါ |
အာဏာပိုင်များ
Author_ID | စာရေးသူ | Country_ID |
---|---|---|
Auth_001 | Orson Scott Card ကို | Coun_001 |
Auth_002 | မာဂရက် Atwood | Coun_002 |
အခုဆိုရင်ကျနော်တို့ကစားပွဲအကြားချိတ်ဆက်နိုင်ငံခြားသော့၏အသုံးချနေ, သုံးစားပွဲရှိသည်:
- အဆိုပါစာအုပ်လေးကိုစားပွဲရဲ့နိုင်ငံခြား key ကို Author_ID အာဏာပိုင်များ table ထဲမှာစာရေးဆရာတစ်ဦးစာအုပ်ချိတ်ဆက်ထားပါတယ်။
- ရေးသားသူစားပွဲပေါ်မှာရဲ့နိုင်ငံခြား key ကို Country_ID တိုင်းပြည် table ထဲမှာတိုင်းပြည်တစ်ပြည်မှတစ်ဦးကိုရေးသားသူချိတ်ဆက်ထားပါတယ်။
- ဒီဒီဇိုင်းမှာအခြားစားပွဲသို့လင့်ထားသည်ရန်မလိုအပ်ရှိပါတယ်ကြောင့် COUNTRIES မှစားပွဲပေါ်မှာအဘယ်သူမျှမကနိုင်ငံခြားသော့ချက်ရှိပါတယ်။
အကူးအပြောင်းမူတည်မကောင်းပါ Database ကိုဒီဇိုင်း Are အဘယ်ကြောင့်
3NF သေချာကူညီနိုင်ဖို့အကူးအပြောင်းမှီခိုရှောင်ရှား၏တန်ဖိုးကဘာလဲ? ရဲ့နောက်တဖန်ကျွန်တော်တို့ရဲ့ပထမဆုံးစားပွဲထည့်သွင်းစဉ်းစားကြစို့ကြောင့်ဖန်တီးကိစ္စရပ်များတွေ့မြင်:
အာဏာပိုင်များ
Author_ID | စာရေးသူ | စာအုပ် | Author_Nationality |
---|---|---|---|
Auth_001 | Orson Scott Card ကို | Ender ရဲ့ဂိမ်း | ယူနိုက်တက်စတိတ် |
Auth_001 | Orson Scott Card ကို | စိတျ၏ကလေးများ | ယူနိုက်တက်စတိတ် |
Auth_002 | မာဂရက် Atwood | ကြှနျမရဲ့ပုံပြင် | ကနေဒါ |
ဒီဇိုင်းဒီလိုမျိုးဥပမာ, ဒေတာကွဲလွဲချက်များနှင့်ရှေ့နောက်မညီအထောက်အကူပြုနိုင်သည်
- သငျသညျနှစ်ခုစာအုပ်တွေ "စိတျ၏ကလေးများ" နှင့်ဖျက်ပစ်ပါလျှင် "Ender ရဲ့ဂိမ်း" သင်ဒေတာဘေ့စကနေလုံးဝ "Orson Scott Card အား" နှင့်သူ၏နိုင်ငံသားရေးသားသူ delete လိမ့်မယ်။
- သငျသညျလညျးစာအုပ် add မဟုတ်လျှင်သင်ကဒေတာဘေ့စအသစ်တစ်ခုစာရေးဆရာ add လို့မရဘူး, အဘယ်အရာကိုရေးသားသူသေးအတည်မပြုရသေးသောဖြစ်ပါတယ်ဒါမှမဟုတ်သင်သူမရေးသားထားပြီးစာအုပ်၏အမည်ကိုမသိရပါဘူးဆိုရငျကော
- "Orson Scott Card ကို" မိမိနိုင်ငံသားအဖြစ်ပြောင်းလဲသွားလျှင်သင်သူပေါ်လာသောအရာအားလုံးကိုမှတ်တမ်းများထဲမှာပြောင်းလဲဖို့ရှိသည်လိမ့်မယ်။ အတူတူစာရေးဆရာနှင့်အတူမျိုးစုံမှတ်တမ်းများရှိခြင်းတိဒေတာမှုနိုင်သည်ဒေတာ entry ကိုလူတစ်ဦးကိုသူ့အဘို့မျိုးစုံမှတ်တမ်းများရှိပါတယ်နားလည်သဘောပေါက်ခြင်းနှင့်တစ်ဦးတည်းသာစံချိန်အတွက် data တွေကိုပြောင်းလဲမပါဘူးဆိုရင်ဘာလဲ?
- သင်တို့သည်လည်းလုံးဝရေးသားသူဖျက်ပစ်ခြင်းမရှိဘဲ "ကြှနျမရဲ့ပုံပြင်" နဲ့တူနေတဲ့စာအုပ်မဖျက်နိုင်ပါ။
ဤရွေ့ကားရုံတချို့အကြောင်းပြချက်အဘယ်ကြောင့်ဖြစ်ကြောင်း ပုံမှန် နှင့် Transit မှီခိုရှောင်ရှား, ဒေတာကာကွယ်ရန်နှင့်ကိုက်ညီမှုအာမခံပါသည်။