Skip to content
GitHub

Relationships

Relationships (ဆက်စပ်မှုများ) ဆိုတာ ဘာလဲ?

Section titled “Relationships (ဆက်စပ်မှုများ) ဆိုတာ ဘာလဲ?”

Relational Database ရဲ့ အဓိက သဘောတရားက Data တွေကို ခေါင်းစဉ် (Subject) အလိုက် သီးခြား Table လေးတွေ ခွဲပြီး သိမ်းတာပါ။ ဒါပေမဲ့ အဲဒီလို ခွဲသိမ်းထားတဲ့ Data တွေဟာ တစ်ခုနဲ့ တစ်ခု အပြန်အလှန် ပတ်သက်ဆက်နွယ်နေလေ့ ရှိပါတယ်။ အဲဒီလို ပတ်သက်မှုတွေကို Relationships (ဆက်စပ်မှုများ) လို့ ခေါ်ပါတယ်။

Relationships တွေကို အဓိကအားဖြင့် ၃ မျိုး ခွဲခြားနိုင်ပါတယ်:

  1. One-to-One (1:1)
  2. One-to-Many (1:N)
  3. Many-to-Many (M:N)

Table (A) ထဲက Record တစ်ခုဟာ Table (B) ထဲက Record တစ်ခုတည်းနဲ့သာ ချိတ်ဆက်ပတ်သက်နေတဲ့ အခြေအနေကို ခေါ်ပါတယ်။

ဥပမာ: နိုင်ငံတစ်နိုင်ငံမှာ မြို့တော် တစ်ခုတည်း ရှိသလို၊ မြို့တော် တစ်ခုဟာလည်း နိုင်ငံ တစ်ခုတည်းနဲ့ပဲ သက်ဆိုင်ပါတယ်။ (One Country -> One Capital City)

ဒီ Relationship မျိုးက တွေ့ရခဲပါတယ်။ များသောအားဖြင့် Table နှစ်ခု ခွဲထားမယ့်အစား Table တစ်ခုတည်း အနေနဲ့ ပေါင်းပြီး သုံးလိုက်တာက ပိုအဆင်ပြေတတ်ပါတယ်။ ဒါပေမဲ့ Security အရ (ဥပမာ - User ရဲ့ သာမန်အချက်အလက် နဲ့ လျှို့ဝှက်အချက်အလက်) ကို ခွဲသိမ်းချင်တဲ့ အခါမျိုးမှာ သုံးလေ့ရှိပါတယ်။

One to One Relationship

Table (A) ထဲက Record တစ်ခုဟာ Table (B) ထဲက Record အများကြီးနဲ့ ချိတ်ဆက်ပတ်သက်နေပေမယ့်၊ ပြောင်းပြန်အနေနဲ့ Table (B) ထဲက Record တစ်ခုကတော့ Table (A) ထဲက Record တစ်ခုတည်းနဲ့ပဲ သက်ဆိုင်နေတဲ့ အခြေအနေမျိုးကို ခေါ်ပါတယ်။

ဒါဟာ Relational Database မှာ အတွေ့ရအများဆုံး Relationship အမျိုးအစားပါ။

ဥပမာ: မိခင် တစ်ယောက်မှာ သားသမီး အများကြီး ရှိနိုင်ပါတယ်။ ဒါပေမဲ့ သားသမီး တစ်ယောက်မှာတော့ မိခင် တစ်ယောက်ပဲ ရှိပါတယ်။ (One Mother -> Many Children)

နောက်ထပ် ဥပမာအနေနဲ့ Customer တစ်ယောက်က Order အများကြီး တင်နိုင်ပါတယ်။ ဒါပေမဲ့ Order တစ်ခုချင်းစီကတော့ Customer တစ်ယောက်တည်းနဲ့ပဲ သက်ဆိုင်ပါတယ်။

One to Many Relationship

Table (A) ထဲက Record တစ်ခုဟာ Table (B) ထဲက Record အများကြီးနဲ့ ချိတ်ဆက်နိုင်သလို၊ ပြောင်းပြန်အနေနဲ့ Table (B) ထဲက Record တစ်ခုကလည်း Table (A) ထဲက Record အများကြီးနဲ့ အပြန်အလှန် ချိတ်ဆက်နေတဲ့ အခြေအနေမျိုးကို ခေါ်ပါတယ်။

ဥပမာ: ကျောင်းသား (Student) တစ်ယောက်က ဘာသာရပ် (Course) အများကြီးကို ယူနိုင်ပါတယ်။ ပြောင်းပြန်အနေနဲ့ ဘာသာရပ် တစ်ခုတည်းကိုလည်း ကျောင်းသား အများကြီးက လာတက်နိုင်ပါတယ်။ (Many Students <-> Many Courses)

Relational Database တွေမှာ Many-to-Many Relationship ကို တိုက်ရိုက် တည်ဆောက်လို့ မရပါဘူး။ ဒါကြောင့် အလယ်မှာ Linking Table (သို့မဟုတ် Junction Table) ဆိုတဲ့ တတိယ Table အသစ်တစ်ခုကို ဖန်တီးပြီး၊ One-to-Many Relationship နှစ်ခုအဖြစ် ခွဲထုတ်ပြီးမှ ပြန်ချိတ်ဆက်ရပါတယ်။

Many to Many Relationship

Linking Table ထဲမှာပါတဲ့ Field တွေဟာ (Student_ID, Course_ID) လိုမျိုး တခြား Table တွေက Foreign Key တွေ ဖြစ်ကြပါတယ်။