วันจันทร์ที่ 8 กุมภาพันธ์ พ.ศ. 2559

To Do week4(Relational Algebra)

    More examples of queries in Relational Algebra
     Relational Algebra คือ การแสดงถึงความสัมพันธ์ของข้อมูล ซึ่งเป็นพื้นฐานของการสร้างฟังก์ชันของคำสั่งต่างๆใน SQL
     Relational Algebra มี operations พื้นฐานได้แก่
    1.  Select *      
    2.  Project     
    3.  Rename *   
    4.  Union **
    5.  Set difference **
    6.  Cartesian-product  **
       *  Unary operations คือการมี Operand เพียงตัวเดียว
       ** Binary operations คือการมี Operand 2 ตัว
     นอกจากนี้ยังมีคำสั่งอื่นๆอีกเช่น 
    1. set intersection
    2. natural join
    3. division
    4. assignment
     ในที่นี้จะเริ่มอธิบาย operations พื้นฐาน ก่อนได้แก่




  • Select operation
    การทำงาน : เป็นคำสั่งที่ใช้เลือกข้อมูล ในแถวที่ตรงกับเงื่อนไขที่กำหนด คล้ายกับคำสั่ง where ในภาษา SQL
    แทนด้วยสัญลักษณ์ : 
     

    วิธีการใช้งาน : 
                

    condition สามารถใช้เครื่องหมาย :
    การเปรียบเทียบ  = , > , < ,  ≥  ,     , 
    ตัวอย่างการใช้งาน :
     
    เช่นในตารางความสัมพันธ์ของสมุดโทรศัพท์ มีข้อมูลของผู้ติดต่ออยู่
    ภาพแสดงตารางข้อมูลทั้งหมด ของ ความสัมพันธ์ Contact

    เราจะเลือกเอาข้อมูลเฉพาะผู้ติดต่อที่ อยู่ใน Home ซึ่งสามารถเขียนโดยใช้ Select operation ได้ดังนี้

    ภาพแสดงการใช้งานRelational Algebra

    ภาพแสดงตารางใหม่ ตามเงื่อนไขที่ได้กำหนด
    โดย relational algebra ดังกล่าวมีความหมายเดียวกับ คำสั่ง SQL ดังต่อไปนี้
                      select * from contact
                      where department="Home" ;




  • Project operationการทำงาน : เป็นคำสั่งที่ใช้แสดงข้อมูล ในcolumn(attribute) ที่ตรงกับเงื่อนไขที่กำหนด คล้ายกับคำสั่ง select ในภาษา SQLแทนด้วยสัญลักษณ์ : 
    วิธีการใช้งาน :



    • ตัวอย่างการใช้งาน :
       
      เช่นต้องการแสดงข้อมูลName และ Phone โดยไม่สนใจข้อมูลใน column อื่นๆ
        ภาพแสดงตารางข้อมูลทั้งหมด ของ ความสัมพันธ์ Contact

      เราจะเลือก attribute ที่นำมาแสดงซึ่งสามารถเขียนโดยใช้ Project operation ได้ดังนี้
      ภาพแสดงการใช้งานRelational Algebra

      ภาพแสดงตารางใหม่ ตามเงื่อนไขที่ได้กำหนด

      โดย relational algebra ดังกล่าวมีความหมายเดียวกับ คำสั่ง MySQL ดังต่อไปนี้
                          select name,phone from contact;


  • Rename  operation
    การทำงาน :  ใช้ในการเปลี่ยชื่อตาราง หรือ attribute ในตาราง คล้ายกับคำสั่ง alter ในภาษาSQL
    แทนด้วยสัญลักษณ์ : 
    วิธีการใช้งาน :
     
                
    ตัวอย่างการใช้งาน :
    เช่นต้องการเปลี่ยนชื่อ ตารางจากContact เป็น Mycontact และต้องการเปลี่ยน attribute ในตารางจาก Phone เป็น call

    ภาพแสดงตารางข้อมูลทั้งหมด ของ ความสัมพันธ์ Contact

    จากความต้องการด้านบน สามารถเขียนโดยใช้ Rename operation ได้ดังนี้

    ภาพแสดงการใช้งานRelational Algebra


    ภาพแสดงตารางใหม่ ตามเงื่อนไขที่ได้กำหนด


  • Union operation 
    การทำงาน :  ใช้เมื่อต้องการเชื่อมข้อมูล กับตารางมากกว่า1ตาราง โดยจะเอาข้อมูลทุกตัว ถ้ามีข้อมูลซ้ำกันจะแสดงข้อมูลนั้นเพียง1ตัว
    แทนด้วยสัญลักษณ์ :  U
    วิธีการใช้งาน :  A U B    //โดย A และ B เป็นความสัมพันธ์

    ตัวอย่างการใช้งาน :
    เช่น ต้องการหาชื่อของสมาชิก  ลูกค้าปกติ และลูกค้า VIP ซึ่งเราต้องการแค่ชื่อของสมาชิก จึงใช้ Project operation เข้ามาช่วย ในการใช้ร่วมกับคำสั่ง Union operation 

    ภาพแสดงตาราง member และตาราง VIP

    จากความต้องการด้านบน สามารถเขียนโดยใช้ Project operation และ Union operation  ได้ดังนี้

    ∏name(member) U ∏name(vip)

    ซึ่งตรงกับการทำงานของ SQL ดังรูป


    ภาพแสดงการทำงานของคำสั่งข้างต้น และผลลัพธ์ที่ได้
  • Set difference 
    การทำงาน :  เลือกแสดงค่าที่อยู๋ในความสัมพันธ์หนึ่งแต่ ไม่พบค่านั้นในอีกความสัมพันธ์หนึ่ง
    แทนด้วยสัญลักษณ์ :  - (เครื่องหมาย - )
    วิธีการใช้งาน :  A - B    //โดย A และ B เป็นความสัมพันธ์
                                          //ค่าที่ได้จะอยู่ใน A แต่ไม่อยู๋ใน B 
               
    ภาพแสดงพื้นที่ที่จะเลือกข้อมูล
    ตัวอย่างการใช้งาน :
     
    เช่นต้องต้องการหาชื่อลูกค้าที่เป็น member และไม่ได้เป็น VIP

    ภาพแสดงการทำงานของคำสั่งข้างต้น และผลลัพธ์ที่ได้

    จากความต้องการด้านบน สามารถเขียนโดยใช้ 
    Project operation และ Union operation  ได้ดังนี้
     ∏name(member) - ∏name(vip)

    ภาพแสดงผลลัพธ์ที่ได้
  • Cartesian-product
    การทำงาน :  ใช้สำหรับนำข้อมูลทั้ง 2 ตารางมา cross กันซึ่งค่าที่ได้ออกมาจะเป็นการจับคู่กันทั้ง 2 ตารางซึ่งจะไม่มีประโยชน์อะไร เราจึงต้องใช้การ select และ project เข้ามาช่วย
    แทนด้วยสัญลักษณ์ :  X
    วิธีการใช้งาน :  A x B
    เมื่อนำมาใช้รวมกับ select operation 

    จะทำให้มีลักษณะการทำงานเหมือน join

    ตัวอย่างการใช้งาน :
    ------
What is an inner join? outer join?
Ans Inner join นั้นคือการนำค่าระหว่าง set หรือข้อมูลที่มีการซ้อนทับกันหรือเหมือนกัน ส่วน Outer join นั้นคือการเอาค่าทั้งหมดของระหว่าง set นั้นเอง และยังมี join ประเภทอื่นๆอีกมากมาย


ภาพแสดงการ Join ในรูปแบบต่างๆ

What is a division operation?
Ans การทำ division operation คือการนำเอาค่าของ Attribute ตารางที่เป็น Divisor(S) ไปเทียบกับค่า Attributeในตาราง Dividend(R) เมื่อมีค่าที่เหมือนกันเราจะนำเอาค่านั้นออกมาแสดงเป็นผลลัพธ์ดังตัวอย่างที่เขียนในด้านล่างนี้

ภาพแสดงตัวอย่างการใช้ division

จากรูปจะเห็นว่า การนำข้อมูลของตาราง s ไปเทียบกับ attribute ในตาราง r ซึ่งได้ข้อมูลออกมาเป็น set  โดยข้อมูลที่ได้ คือการที่ attribute A ตัวเดียวกันมีค่าใน attribute B ทั้งสองค่า ไม่ใช่แค่มีค่าใดค่า  1


ข้อมูลอ้างอิงจาก :
http://www.srisangworn.go.th/home/databaselearnx/ms2t2-2.htm