March 10, 2015

Constraint for Data Integrity

Relational Data Model ၏ Function များအတွင်းတွင် မှန်ကန်မှု့ရှိစေရန်ထားရှိနိုင်သော Constraint များသည် လွန်စွာအရေးပါသော အချက်တစ်ခုပင်ဖြစ်၏။ Data Structure အတွင်း Data များအား ပြုပြင်ပြောင်းလည်းမှု့များ ပြုလုပ်သည့်အခါတွင် Database အတွင်း Data များ မှန်ကန်စွာထားရှိနိုင်ရန် အဆိုပါ Constraint များအတိုင်း စီစစ်ပေးပါသည်။ ဤအခန်းတွင် Relational Database ၏ Data များအား မှန်ကန်မှု့ရှိစေရန် ထားရှိသော Constraint များအကြောင်းအား ဖော်ပြသွားပါမည်။


Domain Constraint


Relational Model ၏ Domain Constraint သည်၊ Attribute ၏တန်ဖိုးများသည် အဆိုပါ Domain အတွင်း Atomic Value ဖြစ်ရပါမည်။ ဆိုလိုသည်မှာ Atomic Value များသည် လက်ရှိတန်ဖိုးထက်ပို၍ အသေးစိတ်ခွဲခြား၍ မရနိုင်သောတန်ဖိုးများဖြစ်ရမည်ဟု ဆိုလိုခြင်း ဖြစ်ပါသည်။


Key Constraint


Relational Model ၏ Relation များသည် တူညီသော Tuple များဖြစ်၍ မရပါ။ ၎င်းတို့အား တစ်ခုချင်း ခွဲခြား၍သိရှိနိုင်ရန် လိုအပ်ပါသည်။ ထိုအတွက် Relation တစ်ခုအတွင်းရှိ Attribute တစ်ခု၏ တန်ဖိုး၊ ဒါမှမဟုတ် Attribute များ၏တန်ဖိုးဖြင့် Tuple တစ်ခုချင်းအား ခွဲခြားသတ်မှတ်နိုင်ရန်လိုအပ်ပါသည်။ ဤကဲ့သို့သော Attribute ဒါမှမဟုတ် Attribute အစုအဝေးအား Super Key ဟုခေါ်ဆိုပါသည်။

Relation များတင် အဆိုပါ Relation မှ ပိုင်ဆိုင်သင့်သော Attribute များအား စုစည်း၍ Super Key တစ်ခုအနေနှင့် ကြည့်မြင်နိုင်ပါသည်။ သို့ရာတွင် ဤကဲ့သို့သော Super Key အတွင်းရှိ Attribute များအတွင်းတွင် Tuple အား ခွဲခြားသတ်မှတ်ရာတွင် မလိုအပ်သော Attribute များလည်း ပါဝင်နိုင်ပါသည်။ Tuple အား ခွဲခြားသတ်မှတ်ရန်လိုအပ်သော အနည်းဆုံး Attribute အစုအဝေးအား Key ဟု ခေါ်ဆိုနိုင်ပါသည်။

ဥပမာအားဖြင့် အောက်ပါ Relation အား ကြည့်ပါ။ အမည်မှာ Branch ဖြစ်ပါသည်။


Branch Name, Township, Phone Number အစုအဝေးသည် Tuple တစ်ခုအား ခွဲခြားသတ်မှတ်နိုင်သောကြောင့် ၎င်းသည် Super Key ဖြစ်ပါသည်။ သို့ရာတွင် Tuple တစ်ခုအား ခွဲခြားသိရှိနိုင်ရန်မှာ Branch Name တစ်ခုတည်းနှင့်လည်း သိရှိနိုင်မည် ဖြစ်ပါသည်။ ဤနမှုနာတွင် Branch Name သည် Key ဖြစ်ပါသည်။



Candidate Key


အထက်ဖော်ပြပါအတိုင်း၊ Relation တစ်ခုတွင် ကီးတစ်ခုထက်မက ပိုင်ဆိုင်နိူင်ပါသည်။ အဆိုပါကီးမျိုးအား Candidate Key ဟုလည်းခေါ်ဆိုပါသည်။ အထက်ပါနမူနာတွင် Branch Name, Township, Phone Number တို့သည် Candidate Key အဖြစ်စဥ်းစားနိုင်မည်ဖြစ်သည်။ သို့ရာတွင် မြို့နယ်တစ်ခုအတွင်း ဆိုင်ခွဲတစ်ခုထက်မကရှိမည် ဆိုပါက Township အား Candidate Key အဖြစ် အသုံးပြုနိုင်မည်မဟုတ်ပေ။ အလားတူပင် ဆိုင်တစ်ဆိုင်တွင် ဖုန်းနံပါတ် တစ်ခုထက်မက ရှိမည် ဆိုပါက Phone Number ကိုလည်း အသုံးပြုနိုင်မည် မဟုတ်ပေ။


Employee Relational Schema တွင် Employee ID သည် Relation တစ်ခုလုံးတွင် တစ်ခုတည်းသာ ရှိ့မည်ဖြစ်သေားကြောင့် Candidate Key အဖြစ်အသုံးပြုနိုင်မည် ဖြစ်သည်။ အခြားသေားကီးများအား Candidate Key အဖြစ် အသုံးပြု၍သင့်တော်မည်မဟုတ်ပေ။



Primary Key


Candidate Key များအတွင်းမှ Relational Schema အတွက် အသင့်တော်ဆုံး ကီးတစ်ခုအား Primary Key အဖြစ် သတ်မှတ်အသုံပြုနိုင်ပါသည်။ မည်သည့်ကီးအား Primary Key အဖြစ် အသုံးပြုမည်ဆိုသည်မှာ Database ဒီဇိုင်းရေးသား ရာတွင် စဥ်းစားစရာ ပြဿနာ တစ်ခုဖြစ်ပါသည်။ အထက်ပါနမူနာတွင် Branch Name အား Branch ၏ Primary Key အဖြစ်၎င်း Employee ID အား Employee ၏ Primary Key အဖြစ်၎င်း သတ်မှတ်ထားပါသည်။



Primary Key အဖြစ် အသုံးပြုမည် ဆိုပါက Relation တစ်ခုလုံး အတွင်းရှိ တန်ဖိုးတစ်ခုတည်းကိုသာ အသုံးပြုရမည် ဖြစ်သည်။ တဖန် Primary Key Column အတွင်း တန်ဖိုးမပါပဲ Null အား သတ်မှတ်၍ရမည်မဟုတ်ပါ။



Foreign Key


Relational Schema တစ်ခု၏ Primary Key အား အခြားသေား Attribute များမှ Reference လုပ်နေခြင်း၊ ဒါမှမဟုတ် အခြားသေား Relation ၏ Attribute များမှ Reference လုပ်နေခြင်းတို့ရှိနေ တတ်ပါသည်။ ဤကဲ့သို့  Relation တစ်ခုအတွင်းမှ အခြားသေား Relation တစ်ခု၏ Primary Key အား Reference လုပ်နေသော Key အား Foreign Key ဟု ခေါ်ပါသည်။

အထက်ဖေါပြပါ နမူနာ အတွင်း Employee ၏ Branch Name သည် Branch ၏ Primary Key ဖြစ်သော Branch Name အား Reference လုပ်နေသောကြောင့် ၎င်း သည် Foreign Keyဖြစ်ပါသည်။


Referential Constraint


ဤကဲ့သို့ Relational Schema တစ်ခုအတွင်း ဒါမှမဟုတ် Relational Schema အချင်းချင်းရှိ Attribute တစ်ခု ဒါမှမဟုတ် အများသည် အခြားသေား Attribute တစ်ခု ဒါမှမဟုတ် အများ အား Reference လုပ်နေသော အခါမျိုးတွင် မှန်ကန်မှူ့ရှိစေရန် Referential Constraint များဖြင့် တားမြစ်ထားရပါသည်။ Referential Constraint အား Foreign Key များဖြင့်ရေးသားရပါသည်။

ဥပမာအားဖြင့် Foreign Key ဖြင့် Reference လုပ်နေသော ဒိုမိန်းသည် လတ်တွေ့ရှိမရှိ၊ အကယ်၍ အခြားသော Relational Schema မှ Reference လုပ်နေသော Tuple အား ဖျက်မိပါက မည်သို့ဖြစ်မည် အစရှိသည်တို့အား မှန်ကန်မှု့ရှိစေရန် ကန့်သတ်ချက်များ ထားရှိရမည် ဖြစ်ပါသည်။


 အထက်ပါနမူနာတွင်၊ Employee ၏ Branch Name သည် Branch ၏ Primary Key ဖြစ်သော Branch Name အား Reference လုပ်နေသော Foreign Key ဖြစ်ပါသည်။ အကယ်၍ ဝန်ထမ်းတစ်ဦး သည် တာဝန်ထမ်းဆောင်ရန် ဆိုင်ခွဲမသတ်မှတ်ရသေးပါက Branch Name ၏ တန်ဖိုးသည် Null ဖြစ်ပါမည်။ ဝန်ထမ်းမှလည် ဆိုင်ခွဲအားလည် Reference လုပ်နိုင်မည်မဟုတ်ပေ။

သို့ရာတွင် ဝန်ထမ်း၏ဆိုင်ခွဲအား သတ်မှတ်ပြီး ဆိုပါက ဆိုင်ခွဲအမည်ဖြင့် ဆိုင်ခွဲအား ရှာဖွေနိုင်ရမည် ဖြစ်သည်။ ဝန်ထမ်းတွင်ရေးသားထားသော ဆိုင်ခွဲမှာ လက်တွေ့တွင် တကယ်မရှိပါက အဓိပ္ပါယ်ရှိမည် မဟုတ်ပေ။

တဖန် Employee Relational Schema ၏ Leader ID သည် ၎င်း၏ Primary Key ဖြစ်သော Employee ID အား Reference လုပ်နေပါသည်။ ထို့ကြောင့် Employee တွင် ရေးသားထားသော Leader ID နှင့် Employee သည် လက်တွေ့တွင် တကယ်မရှိ၍မရပေ။

ဤကဲ့သို့ ဒေတာများအား မှန်ကန်မှု့ ရှိစေရန် အထက်ပါ Constraint အား အသုံးပြု၍ရေး သားရမည်ဖြစ်ပါသည်။


ဆက်ပါဦးမည်
မင်းလွင်

No comments:

Post a Comment