Monday, April 4, 2016

3-Tier Schema and ERD

3-Tier Schema

            Data modeling ေတြလုပ္ေဆာင္ရန္အတြက္ ANSI-SPARC ကေနျပီးေတာ့ 3-tier schema ကို မိတ္ဆတ္ခဲ့ပါတယ္။ 3-Tier လို့ေျပာတဲ့အတိုင္းဘဲ သူ့မွာ အပိုင္းသံုးပိုင္းပါ ပါတယ္။

  1. External schema
  2. Internal schema
  3. Conceptual schema 
External schema က user point view က data ေတြ (user လိုခ်င္တဲ့ ပံုစံ) ကို အသံုးျပဳျပီး database ပံုစံတည္ေဆာက္တဲ့အပိုင္းျဖစ္ပါတယ္။ Conceptual schema ကေတာ့ data structure ကို logical အရ define လုပ္ေပးယံုပါ ။တကယ္ တည္ေဆာက္တာက internal schema အပိုင္းမွာျဖစ္ပါတယ္။ တစ္နည္းေျပာရရင္ internal schema က physical data structure ကို define လုပ္ေပးတာပါျဖစ္ပါတယ္။

ERD

          အေဆာက္ဦး တစ္ခုတည္ေဆာက္ေတာ့မယ္ ဆိုရင္ ဒီအတိုင္း ရမ္းသန္းေဆာက္လို့မရပါဘူး။ လိုအပ္တဲ့ design ေတြ ၊ resources ေတြကို analysis လုပ္ေပးျပီးမွ တည္ေဆာက္ရပါတယ္။ အေဆာက္ဦး ပံုစံ design ခ်တာမ်ိဳး -blueprint လုပ္တာမ်ိဳးလုပ္ရပါတယ္။ Database မွာလည္း ထိုနည္းတူစြာ ျပဳလုပ္ေပးရပါတယ္။ အဲ့လိုမ်ိဳး process ကို Entity-Relationship model (ERD) ဆိုတဲ့ diagram expressing ကေနျပီးေတာ့ ျပဳလုပ္ေပးပါတယ္။ ERD ပံုေတြဆိုတာ database blueprint ေတြျဖစ္ပါတယ္။ ERD က 3-Tier schema မွာဆိုရင္ conceptual schema အပိုင္းကို ေဖာ္ျပေပး တဲ့ diagram ေတြဘဲျဖစ္ပါတယ္။ ERD အဆင့္ထိ ဆိုရင္ DBMS independence ဘဲျဖစ္ပါေသးတယ္။  ဆိုလိုတာက အေဆာက္ဦးေဆာက္ဖို့ အတြက္ design ဆြဲတာ က ပံုစံခ်တာ သတ္သတ္ဘဲရွိပါေသးတယ္။ အဲ့ designed ဆြဲျပီးသား အေဆာက္ဦးကိုူ ဘာႏွင့္တည္ေဆာက္မွာလည္း (ဥပမာ သစ္သာ၊အုတ္ စသည္ျဖင့္) ဆိုတာက အပိုင္းတစ္ပိုင္းျဖစ္တယ္။ ERD က ပံုစံ သတ္သတ္ျဖစ္ျပီးေတာ့ အဲ့ကေနထြက္လာတဲ့ ပံုစံေပါမူတည္းျပီး ဘာ DBMS (ဥပမာ MySQL,Oracle စသည္ျဖင့္) ကိုသံုးမွာလညး္ ဆိုတာကို ျပဳလုပ္ၾကပါတယ္။
ERD model တစ္ခုမွာဆိုရင္ အပိုင္း ၃ ပိုင္းပါ ပါတယ္။

  1.   Entities
  2.  Relationships
  3.  Attributes
Entities ဆိုတာ က objects ေတြပါ။ သူ့ကို rectangle box ႏွင့္ေဖာ္ျပပါတယ္။ Relationship ဆိုတာကေတာ့ entity တစ္ခု ႏွင့္ entity တစ္ခုၾကားက ဆက္သြယ္မွဳပါဘဲ၊ သူ့ကုိ diamond ပံုစံျဖင့္ေဖာ္ျပပါတယ္။ Attribute ဆိုတာကေတာ့ entity ထဲမွာပါ ၀င္တဲ့ values ေတြပါ (characteristics of entities) ၊ သူ့ကုိ oval ပံုုစံျဖင့္ေဖာ္ျပပါတယ္။

ပံုတြင္ ေဖာ္ျပသည့္အတိုင္း Driver က ေနျပီး ကား ေမာင္းျပီး ခရီးတစ္ခု သြားတာ ျဖစ္ပါတယ္။ Driver ၊ Car ဆိုတာက objects ေတြျဖစ္ပါတယ္။ သူတုိ့ကို entities အေနႏွင့္ယူဆပါတယ္။ Driver တစ္ေယာက္မွာ နာမည္ပါမယ္၊ လိုင္စင္ပါမယ္ စသည္ျဖင့္ေပါ့ အဲ့တာေတြက driver ရဲ့ characteristics ေတြဘဲျဖစ္ပါတယ္။ ပံုမွာေတာ့ Driver ရဲ့ Name တစ္ခုကိုဘဲ attribute ယူထားတာဘဲျဖစ္ပါတယ္။ ထိုနည္းတူစြာပင္ Car လည္းအတူတူပင္ျဖစ္ပါတယ္။ Driver ႏွင့္ Car ၾကားမွာ ဘာ      ဆက္ႏြယ္မွူရွိလည္းဆိုရင္ ကားေမာင္းျခင္း (Drive) ဆိုတာက ဆက္သြယ္ေပးထားပါတယ္။ Drive Relationship မွာ attribute တစ္ခု ရွိေနတာ ကိုသတိျပဳမိမယ္ထင္ပါတယ္။ ဆိုလုိတာက trip ဆိုတာ Driver ေၾကာင့္ျဖစ္တာလညး္မဟုတ္ ဘူး၊ Car ေၾကာင့္ျဖစ္တာလည္း မဟုတ္ဘူး (Car ကိုဒီအတ္ိုင္းရပ္ထားရင္ေပါ့) ၊ Driver က Car ကို ေမာင္းသြားမွသာ Trip ဆိုတာ ျဖစ္ေပါေသာေၾကာင့္ Trip attribute ကို drive Relationship မွာ link ခ်ိတ္ေပးထား ျခင္းျဖစ္ပါတယ္။
Relationship အမ်ိဳးအစား သံုးမ်ိဳးရွိပါတယ္။
One-to-One
One-to-many
Many-to-many တိုဘဲျဖစ္ပါတယ္။ တကယ္လို့ Car တစ္စီး Driver တစ္ေယာက္ဘဲျဖစ္ရမယ္ လို့ constant ေပးမယ္ဆိုရင္ one-to-one relationship ျဖစ္ေပါပါတယ္။ အဲ့လိုမွ မဟုတ္ဘဲ Car တစ္စီး ကို Driver တစ္ေယာက္ထက္မက လို constant ေပးရင္ one-to-many relationship ျဖစ္ေပါပါတယ္။