Showing posts with label Database. Show all posts
Showing posts with label Database. Show all posts

Friday, April 8, 2016

Database Language

Database ကိုအသံုးျပဳဖို့အတြက္ database Language ဆိုတာလိုအပ္ပါတယ္။ database language ေတြက Database schema ေတြ၊ actual data ေတြကို define သတ္မွတ္ေပးရန္အတြက္အသံုးျပဳၾကပါတယ္။ Database Language အမ်ိဳးအစား ႏွစ္မ်ိဳးရွိပါတယ္။
  • SQL (Structured Query Language)
  • NDL

Relational data model ေတြကို အသံုးခ်ဖို့အတြက္ (data manipulation လုပ္ဖိုအတြက္) SQL ကိုအသံုးျပဳပါတယ္။ NDL ကေတာ့ network data model ကို manipulation လုပ္ဖို့အတြက္အသံုးျပဳၾကပါတယ္။
Database Language ေတြကို အေသးစိတ္ေလ့လာမယ္ဆိုရင္ သူ့ကို အမ်ိဳးအစား ၃ မ်ိဳးခြဲျခားႏုိင္ပါတယ္။
  • Data Definition Language (DDL)
  •  Data Manipulation Language (DML)
  •  End User Language (EUL)

Data Definition Language ဆိုတဲ့အတိုင္းဘဲ သူက data ေတြကို define လုပ္ေပးႏိုင္ပါတယ္။ တနည္းေျပာရရင္ schema ေတြကို သတ္မွတ္ေပးႏိုင္ပါတယ္။ ဥပမာ Create ၊ Drop ၊ Rename တို့ကုိေျပာျခင္းျဖစ္ပါတယ္။
Data Manipulation Language ဆိုတာကေတာ့ database ကို operation လုပ္ဖိုအတြက္ အသံုးျပဳတာျဖစ္ပါတယ္။ ဥပမာ table တစ္ခုကေန လုိခ်င္တဲ့ row ကို ဆဲြထုတ္တာမ်ိဳးကို ဆိုလိုပါတယ္။ (Select ၊ Insert ၊ Update စသည္ျဖင့္)
End User Language ဆိုတာကေတာ့ end user တွေအတွက် query Language ဘဲဖြစ်ပါတယ်။

SQL Database Language

            ခုအသံုးမ်ားဆံုး data model ကုိေျပာပါဆိုရင္ relational data model ဘဲျဖစ္ပါတယ္။ SQL ကေတာ့ relational data model ေတြကို manipulate လုပ္ဖိုအတြက္ အသံုးျပဳတဲ့ database Language တစ္ခုပါဘဲ။ SQL က non-procedural Language ျဖစ္တဲ့အတြက္ သူ့ရဲ့ statement ေတြက ရိုးရွင္း ပါတယ္။ တစ္နည္းေျပာရရင္ English Words စကားအတိုင္း ေရးသားထားျခင္း ဘဲျဖစ္ပါတယ္။ အဲ့တာေၾကာင့္ဘဲ SQL ကို ေနာ္တစ္မ်ိဳးေခါတာက SEQUEL ( Structured English Query Language ) ဘဲျဖစ္ပါတယ္။
(manipulate လုပ္တယ္ဆိုတာ set Operations ေတြျဖစ္တဲ့ Union ၊ Difference ၊ Intersection ၊ Cartesian product လို operations မ်ိဳးကိုလည္ေကာင္း ၊ Relation Operations ေတြျဖစ္တဲ့ Projection ၊ Join ၊ Divide လို operation မ်ိဳးကိုလည္းေကာင္း ျပဳလုပ္ေပး ျခင္းျဖစ္ပါတယ္။)
SQL structure
SQL မှာ Embedded SQL နှင့် Interactive SQL ဆိုပြီးနှစ်မျိုးသုံးလို့ရပါတယ်။

Embedded SQL ကို host language system မှာအသုံးပြုပါတယ်။ Host Language system ဆိုတာက database တွေကိုအခြား programming languages တွေကနေလှမ်းပြီးတော့ manipulate လုပ်တဲ့ system မျိုးဖြစ်ပါတယ်။ ဥပမာ ပြောရရင် Java program code ထဲကနေပြီးတော့ database queries တွေကို ခေါ်သုံးတာမျိုးဖြစ်ပါတယ်။

Interactive SQL ဆိုတာကတော့ self-contained system မှာအသုံးပြုတာဖြစ်ပါတယ်။ သူတို့က အခြား programming language တွေကနေပြီးတော့ database ကို manipulate လုပ်တာမဟုတ်ဘဲ၊ database manipulation language (MySQL) တစ်ခုတည်းကဘဲ manipulate လုပ်တာဖြစ်တယ်။


Data Loading

            Database တွေတည်ဆောက်ပြီးသွားတဲ့အခါမှာ database (table) ထဲကို data တွေ ကိုထည့်သွင်းပေးရပါတယ်။အဲ့လို process မျိုးကို database loading လို့ခေါ်ပါတယ်။ database loading ကို သုံးနည်းဖြင့်ပြုလုပ်နိုင်ပါတယ်။
            Interactive System ဆိုတာကတော့ SQL statement တစ်ခုဖြစ်တဲ့ INSERT ကိုအသုံးပြုပြီးတော့ data တွေကို line by line ထည့်သွင်းတာဘဲဖြစ်ပါတယ်။ Line by line လုပ်တာကြောင့် များစွာသော data တွေကို ထည့်ရာမှာ အစဉ်မပြေပါဘူး။
            Host Language System ဆိုတာကတော့ programming language တစ်ခုခုကိုအသုံးချပြီး data တွေကို ထည့်တာဘဲဖြစ်ပါတယ်။ Programming ကိုအသုံးပြုပြီးထည့်တာကြောင့် condition ( data ကို filter) ပြုလုပ်နိုင်ပါတယ်။

            Utility Program System  ဆိုတာကတော့ utility program တွေကိုအသုံးပြုပြီးတော့ data တွေကိုထည့်သွင်းတာဘဲဖြစ်ပါတယ်။ များစွာသော data တွေကိုထည့်သွင်းရာမှာအသုံးဝင်ပါတယ်။

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 ျဖစ္ေပါပါတယ္။ 

Sunday, April 3, 2016

Introduction To Database

Database
                ယေန့ေခတ္မွာ database ဆိုတာ အရမ္းအေရးပါတဲ့ အပိုင္းတစ္ခုျဖစ္ပါတယ္။ database ဆိုတဲ့အသံုးအႏွဳန္းကို 1960 ေလာက္မွာ စတင္မိတ္ဆတ္ခဲ့ပါတယ္။ database ေတြ မေပါခင္မွာ file-based system ေတြကို အသံုးျပဳခဲ့ၾကပါတယ္။
           

File-based System

            File base system ဆိုတာ user အသံုးျပဳခ်င္ေသာ application programs ေတြစုစည္းေပးထားေသာ Service တစ္ခုဘဲျဖစ္ပါတယ္။ Program တစ္ခုကို data တစ္ခု ျဖစ္တဲ့အတြက္ limitation ေတြမ်ားစြာရွိေနပါတယ္။ ( Data Isolation, Data dependence, Data duplication,  Lack of flexibility )
File-based System ရဲအားနည္း ခ်က္ေတြေၾကာင့္ database System ကို စတင္ အသံုးျပဳခဲ့ပါတယ္။ DB System က file မွာ support မေပးတာကို ကို support ေပးထားပါတယ္။ (Data Sharing, Consistency of data, Security of data, Data independence, Increased concurrency,  Improved data backups and recovery )
File-based System

Data Model

          Database ကို စတင္ မေျပာခင္မွာ အရင္ဆံုး data model ဆိုတာကို သိထားဖိုလိုပါတယ္။ Real world က data (Raw) ေတြကို computerized ျဖစ္ေအာင္ ပံုေျပာင္းေပးရပါတယ္။ အဲလိုမ်ိဳး process ကို data modeling လုပ္တယ္လို ေျပာပါတယ္။ တစ္နည္းေျပာရရင္ data model ဆိုတာ user ႏွင့္ DBMS ၾကားက interface တစ္ခုဘဲ ျဖစ္ပါတယ္။
User ေတြက ေပးတဲ့ data ( real world data ) ေတြကို computerized မလုပ္ခင္မွာ model ပံုစံတည္ေဆာက္ေပးျပီးမွ ေျပာင္းေပးရပါတယ္။



Hierarchical data model

          Hierarchical data model ကို 1968 မွာ IBM ကေန စတင္ မိတ္ဆတ္ခဲ့ပါတယ္။ data set ေတြက hierarchical ပုံစံအတိုင္းတည္ရွိေနပါတယ္။
ပံုအရ A node ကို root node (parent မရွိေသာ node) လို့ေခါပါတယ္။ node ေတြၾကားမွာ link   ခ်ိတ္ေပးထားတာ ကိုေတာ့ branch လို့ေခါပါတယ္။ ေအာက္ဆံုး nodes (G,H) ေတြကိုေတာ့ leaf node (child မရွိေသာ node) လိုေျပာပါတယ္။ root node အပါအ၀င္ အျခားေသာ node ေတြအားလံုးကို segment လို့သံုးဆြဲေလ့ရွိပါတယ္။ Hierarchical data model ရဲ့ထူးျခားခ်က္က node တစ္ခုမွာ parent node တစ္ခုထက္ပိုမရွိပါဘူး။
( A parent can have more than one child ,but each child can’t have more than on parent )
အဲ့လိုမ်ိဳး parent-child relationship ေၾကာင့္ item တစ္ခု (node) ကိုသြားဖုိဆိုရင္ လမ္းေၾကာင္း တစ္ခုတည္းက ေနသာသြားလို့ရပါတယ္။


Network data model

          Network data model ကို 1963 မွာ IDS ကေနစင္ မိတ္ဆက္ခဲ့ပါတယ္။ Hierarchical data mode မွာ ေတာ့ node ေတြ စုစည္းထားတာကို segment လုိ့ေခါေပမယ့္ network data model မွာ node ေတြကို record လို့သံုးႏွဳန္းပါတယ္။အဲ့ record ေတြကို network ႏွင့္ခ်ိတ္ခ်က္ထားပါတယ္။ သူ့မွာ တစ္ခုပိုလားတာက level ဆိုတာပါဘဲ။ Hierarchy တစ္ခုခ်င္းစိ ကို level တစ္ခုလိ့ုသတ္မွတ္ပါတယ္။ root node ကေတာ့ level 0 ျဖစ္ပါတယ္။
Network data model ရဲ့ထူးျခားခ်က္က child တစ္ခုမွာ parent တစ္ခုထက္ မက ရွိေနႏိုင္ေနတာဘဲ။ အဲ့တာေၾကာင့္ item တစ္ခုကို သြားေတာ့မယ္ဆိုရင္ လမ္းေၾကာင္းေတြက တစ္ခုထက္မက ရွိေနႏိုင္ပါတယ္။ ဥပမာ H node ကိုသြားခ်င္ရင္ A-B-E-H ကေနသြားႏိုင္သလို ။ A-C-F-H / A-C-E-H တို့ကေနလည္း သြားႏိုင္ပါတယ္။


Relational data model

          Relational data model ကို 1970 မွာ IBM ကေနစတင္ မိတ္ဆတ္ခဲ့ပါတယ္။ Relational မွာ table (Row –Column) ကိုဘဲအသံုးျပဳပါတယ္။ Row က record အတြက္ျဖစ္ျပီးေတာ့ ။ Column ကေတာ့ data field အတြက္ဘဲျဖစ္ပါတယ္။ Row ေတြကို တစ္နည္းအားျဖင့္ tuple လုို့လည္းေခါပါေသးတယ္။ ထိုနည္းတူစြာ column ေတြကို
Attribute လုိ့သံုႏွုန္းပါတယ္။