githubEdit

Relationship

ဒီအပိုင်းမှာတော့ execute လုပ်တဲ့ screenshots တွေမပါသေးပါဘူး။ SQL ရဲ့ relationship အကြောင်းကိုပေါ်လွင်အောင်ရှင်းပြပေးပြီးတော့ နောက်အပိုင်းတွေမှာတစ်ခုခြင်းဆီကို နမူနာတွေနဲ့တကွ run ကြည့်သွားပါမယ်။

SQL မှာ relationship ဆိုတာက Tables တွေကိုချိတ်ဆက်ပြီးလိုအပ်သလို data တွေကိုဆွဲထုတ်ခြင်းကိုဆိုလိုပါတယ်။ Table တစ်လုံးခြင်းဆီတိုင်းက သီးသန့်ရပ်တည်နိုင်သလို တစ်လုံးနှင့်တစ်လုံး ပတ်သက်ဆက်နွယ်ခြင်း မျိုးတွေလည်းရှိနိုင်ပါတယ်၊ ဒီလိုပတ်သက်ဆက်နွယ်ခြင်းကို relationship အနေနဲ့သတ်မှတ်နိုင်ပြီး Table တစ်လုံးနဲ့တစ်လုံးဘယ်လိုချိတ်ဆက်နိုင်မလဲဆိုတာကို အောက်မှာဥပမာတွေပေးပြီးရှင်းပြပေးသွားပါမယ်။

Primary Key

Primary Key ဆိုတာကတော့ Table တစ်လုံးမှာရှိတဲ့ unique identifier column ဖြစ်ပါတယ်။ unique ဖြစ်တယ်ဆိုတာ record (row) တိုင်းမှာပါတဲ့ အဲ့ဒီ column ရဲ့ value မှာ ထပ် နေခြင်းမရှိတာကိုဆိုလိုခြင်းဖြစ်ပါတယ်။

ဥပမာအောက်က employeesဆိုတဲ့ Table မှာ employee_id ဆိုတဲ့ column ဟာအမြဲတမ်း unique ဖြစ်နေနိုင်တဲ့အတွက် PRIMARY KEY အဖြစ်သတ်မှတ်ထားလို့ရပါတယ်။

CREATE Table employees (
    employee_id INT PRIMARY KEY,
    name VARCHAR(50),
    department_id INT
);

ဒီ PRIMARY KEY ကို Table တွေ relationship ချိတ်ဆက်တဲ့နေရာမှာလည်းပြန်လည်အသုံးပြုပါတယ်။

Foreign Keys

Foreign Key ဆိုတာကတော့တစ်ခြား Table တစ်လုံးက primary key ဖြစ်ပါတယ်။ Table နှစ်လုံးကိုချိတ်ဆက်တဲ့အခါအသုံးပြုတဲ့အရာပဲဖြစ်ပါတယ်။ Table B က Table A ကိုချိတ်ဆက်ချင်တယ်ဆို Table B ထဲမှာ Table A ရဲ့ primary key ကိုထည့်လိုက်ခြင်းဖြင့်ချိတ်ဆက်နိုင်ပါတယ်။ အောက်ကဥပမာကိုကြည့်လိုက်ရင်ပိုပြီးမြင်သွားလိုက်ပါမယ်။

CREATE Table departments (
    department_id INT PRIMARY KEY,
    department_name VARCHAR(50)
);

departments ဆိုတဲ့ Table တစ်လုံးရှိပါမယ်၊ department_id ကို PRIMARY KEY အဖြစ်သတ်မှတ်ထားပါတယ်။

employees ဆိုတဲ့ Table ထဲမှာ department_id ထည့်ထားပြီး FOREIGN KEY အဖြစ်သတ်မှတ်လိုက်မယ်ဆို employees Table ကနေတစ်ဆင့် departments Table ထဲက data တွေကိုပါဆွဲထုတ်နိုင်သွားမှာဖြစ်ပါတယ်။ department_id က departments Table ထဲမှာတော့ PRIMARY KEY ဖြစ်ပေမယ့် employees Table ထဲမှာတော့ FOREIGN KEY အနေနဲ့ဖြစ်သွားပါတယ်။

ဒါကတော့ FOREIGN KEY အဖြစ်သတ်မှတ်ကြောင်းရေးတဲ့အပိုင်းဖြစ်ပါတယ်။ ဘယ် Table ကို REFERENCES (link) လုပ်မလဲဆိုတာကိုပါထည့်သွင်းပေးရပါမယ်။

Types of Relationships

Relationship ရဲ့သဘောတရားကိုနားလည်သွားပြီဆိုတော့ relationship type အကြောင်းလေးတွေကိုဆက်ရှင်းပေးသွားပါမယ်။ Table တစ်လုံးနဲ့တစ်လုံးချိတ်ဆက်တဲ့အချိန်မှာ ချိတ်ဆက်နိုင်တဲ့ အမျိုးအစား တွေလို့လည်းဆိုနိုင်ပါတယ်။

One To One Relationship

Table တစ်ခုနဲ့တစ်ခုဟာ one to one ပုံစံမျိုးနဲ့ပဲချိတ်ဆက်ထားတာကို one to one relationship လို့ခေါ်ပါတယ်။ ဥပမာအောက်ကနမူနာမှာဆို students Table နဲ့ student_details ဆိုတဲ့ Table နှစ်လုံးရှိပါတယ်။ student တစ်ယောက်ဟာ သူနဲ့ပတ်သတ်တဲ့ detail record တစ်ခုပဲရှိနိုင်ပါတယ်။ ဒါကြောင့်မို့ ဒီ Table နှစ်လုံးရဲ့ relationship ပုံစံဟာ one to one ဖြစ်ပါတယ်။

One To Many Relationship

Tableတစ်လုံးက record သည် နောက် Table တစ်လုံးမှာ တစ်ခုထက်ပိုသော records တွေအဖြစ်ချိတ်ဆက်နိုင်ခြေရှိတယ်ဆို one to many relationship ပုံစံမျိုးဖြစ်နိုင်ပါတယ်။

ဥပမာအောက်ကနမူနာမှာဆို author Table တစ်လုံးရှိပါမယ်။ author တစ်ယောက်ကစာအုပ်တွေတစ်အုပ်ထက်ပိုပြီးရေးနိုင်ပါတယ်။ ဒါကြောင့် books Table မှာ author_id ကို foreign key အဖြစ်ထားပြီး one to many relationship ပုံစံမျိုးချိတ်ဆက်နိုင်ပါတယ်။ authors -> one , books -> many ဖြစ်သွားပါမယ်။

ဒီလိုချိတ်ဆက်လိုက်ခြင်းအားဖြင့် books Table ထဲက records တွေကိုဆွဲထုတ်တဲ့အချိန်မှာ အဲ့ဒီ book record ရဲ့ author information တွေကိုတစ်ပါတည်းဆွဲနိုင်မှာဖြစ်ပါတယ်။

Many To Many Relationship

Table နှစ်လုံးလုံးဟာအခြင်းခြင်း တစ်ခုထက်ပိုတဲ့ records တွေအပြန်အလှန်ရှိနိုင်ခြေရှိတယ်ဆို many to many relationship ပုံစံမျိုးဖြစ်သွားနိုင်ပါတယ်။ ဒီလိုအခြေအနေမှာတော့ကြည့်ရတာပိုပြီးရှင်းလင်းအောင် ကြားခံ Table တစ်လုံးဆောက်လေ့ရှိကြပါတယ်။ Table နှစ်လုံးကို ကြားခံဆက်သွယ်ပေးတဲ့ပုံစံဖြစ်ပါတယ်။ junction Table, associative Table လို့လည်းခေါ်ကြပါတယ်။

အောက်ကနမူနာကိုကြည့်မယ်ဆို students Table နဲ့ courses Table ကိုမြင်ရပါမယ်။ student တစ်ယောက်ဟာ course တွေအများကြီးရှိနိုင်သလို course တစ်ခုမှာလည်း student တွေအများကြီးတက်ရောက်နေတာမျိုးရှိပါတယ်။ ဒီလိုအခြေအနေကို many to many လို့ခေါ်ဆိုနိုင်ပြီး ဒီနှစ်ခုကိုလွယ်ကူစွာချိတ်ဆက်နိုင်ရန်အတွက် student_courses ဆိုပြီးကြားခံ junction Table တစ်ခုဆောက်နိုင်ပါတယ်။ Junction Table ထဲမှာ students Table နဲ့ courses Table ကို reference လုပ်နိုင်တဲ့ FOREIGN KEYS တွေထည့်လိုက်ရုံပါပဲ။

ဒီအပိုင်းမှာ relationship ဆိုတာကို theoretically အရ နားလည်ရလွယ်ကူအောင်အရင်ရှင်းပြပေးခဲ့ပါတယ်။ relationship ဆိုတာဘာလဲ၊ ဘယ်လိုမျိုးချိတ်ဆက်နိုင်တယ်၊ ဘယ်လို relationship အမျိုးအစားတွေရှိမယ်ဆိုတာတွေကိုရေးခဲ့ပါတယ်။ လက်တွေ့ query တွေကို execute မလုပ်ရသေးတဲ့အတွက်နည်းနည်းနားလည်ရခက်နိုင်ပေမယ့် နောက်အပိုင်းတွေမှာ relationship အမျိုးအစားတွေကို တစ်ခုခြင်းဆီအသေးစိတ်ပြန်ရေးရင်း query တွေ run ကြည့်သွားမှာဖြစ့်တဲ့အတွက် ပိုပြီးနားလည်သွားမယ်လို့ထင်ပါတယ်။

Last updated