วันอังคารที่ 9 กุมภาพันธ์ พ.ศ. 2559

Relational Algebra Operation

Relational Algebra Operation สานสัมพันธ์ Algebra

วันนี้เราจะมาพูดถึงความสัมพันธ์ของ "อาเจ๊(บ้า)" กันดีกว่า 

ขอกล่าวก่อนว่า "อาเจ๊" ที่ผมจะใช้ในบทความอันนี้ ขอแทนคำว่า Algebra เพื่อความ Cool นะครับ อิ้อิ้

Cover Content เนื้อหาภายใน Content นี้

  • Part 1: TR - The Relations ความ3000 (สามพัน)
  • Part 2: TQ - The Questions ถามมา-ตอบไป

Part 1: TR - The Relations ความ3000 (สามพัน)

ซึ่งความสัมพันธ์จะมีอยู่ทั้งหมด 6 รูปแบบ ที่จะมาแนะนำกันให้รับทราบในวันนี้นะครับ
  1. Select (σ) *
  2. Project (∏) *
  3. Rename (ρ) *
  4. Cartesian Product (X) **
  5. Union (U) **
  6. Difference (-) **
หมายเหตุ: * แทนการใช้งานโดยมี Operator 1 ตัว, ** แทนการใช้งานโดยมี Operator 2 ตัว

1. Select (σ) เป็น unary relational operation หรือกล่าวได้ว่า ใช้ Operator 1 ตัวนั้นเอง และ Syntax ของมันก็คือ σ (t) โดยที่ p เป็น Condition และ t เป็น table โดยหลักการของ select แล้ว เราจะใช้สำหรับการ "เลือก" ข้อมูลจากในตาราง ซึ่งในการเลือกเราก็มีเงื่อนไขกำหนดไว้ด้วย 

ตัวอย่างการใช้งาน 
σSTD_NAME = “James” (STUDENT) 

จากข้างต้นจะเป็นการเลือกข้อมูลที่มีเงื่อนไข STD_NAME ตรงกับ "James" จากในตาราง STUDENT ซึ่งผลลัพธ์ที่ได้ก็จะเป็นดั่งรูป


σdept_id = 20 AND salary>=10000 (EMPLOYEE)

จากข้างต้นจะเป็นการ Query 2 เงื่อนไข โดยเงื่อนไขแรกคือค่า dept_id จะต้องเท่ากับ 20 และ ค่า salary จะต้องมากกว่าหรือเท่ากับ 10000 ซึ่งทั้งหมดนี้เราจะเลือกออกมาจากตาราง EMPLOYEE ทั้งหมด ผลลัพธ์จะได้ว่า



2. Project (∏) เป็น unary relational operation หรือกล่าวได้ว่า ใช้ Operator 1 ตัวเช่นเดียวกัน และ Syntax ของมันก็คือ a1, a2, a3 (t) ซึ่ง a1, a2, a3 เป็น Column ในตาราง และ t เป็นชื่อของตาราง หลักการใช้ Project นั้นคือจะเป็นการเลือก Column บางส่วน(หรือทั้งหมด)จากตาราง แล้วนำมาแสดง (ทำหน้าที่เหมือน SELECT ใน SQL)

ตัวอย่างการใช้งาน 
std_name, address, course (STUDENT)

จากข้างต้น เราจะทำการเลือก Column std_name, address, course จาก table STUDENT และผลลัพธ์ที่ได้ก็จะแสดงแค่ส่วนที่เลือก ซึ่งจะไม่แสดงส่วนอื่นๆเลย ดังรูป 



3. Rename (ρ) เป็น unary relational operation หรือกล่าวได้ว่า ใช้ Operator 1 ตัวเช่นเดียวกัน และ Syntax ของมันก็คือ ρ R(E) ซึ่ง R เป็นชื่อเดิมของ Table ที่ต้องการจะเปลี่ยนชื่อ และ E เป็นชื่อใหม่ของ Table ที่ต้องการ หลักการใช้ Rename นั้นคือการเปลี่ยนชื่อ ตามคำแปลในพจนานุกรมเลยครับ มาดูตัวอย่างการใช้เลยครับ

ตัวอย่างการใช้งาน 
ρ STUDENT (STD_TABLE)

กล่าวคือจะเป็นการเปลี่ยนชื่อ STUDENT table เป็นชื่อ STD_TABLE แทน ดังรูป


ซึ่งเราสามารถเปลี่ยนชื่อ Column ได้ด้วยนะ หากแต่ต้องเป็น Syntax แบบนี้ ρ STD_ID, STD_NAME, STD_ADDRESS(STUDENT) โดยที่ STD_ID บลาๆ เป็นชื่อ Column ไล่ตามลำดับในตาราง และ STUDENT ก็คือตารางที่เราต้องการจะเปลี่ยนนั่นเอง

4. Cartesian product (X) เป็น binary relational operation หรือกล่าวได้ว่า ใช้ Operator 2 ตัว และ Syntax ของมันก็คือ R X S โดยที่ R และ S เป็นตารางซึ่งผลที่ได้ก็จะได้ผลลัพธ์แบบ ผลคูณ Cartesian ในอาเจ๊เช่นเดียวกัน 

ตัวอย่างการใช้งาน 
EMPLOYEE X DEPT

โดยคำอธิบายก็คือ นำเอา Table ที่ชื่อ EMPLOYEE และ DEPT มาหาผลคูณ Cartesian กันได้ผลลัพธ์ดังรูป


5. Union (U) เป็น binary relational operation หรือกล่าวได้ว่า ใช้ Operator 2 ตัว และ Syntax ของมันก็คือ R U S โดยที่ R และ S เป็นตารางซึ่งผลที่ได้ก็จะได้ผลลัพธ์แบบการ Union กันในอาเจ๊เช่นเดียวกัน 

ตัวอย่างการใช้งาน 
DESIGN_EMPLOYEE U TESTING_EMPLOYEE

โดยคำอธิบายก็คือ นำเอา Table ที่ชื่อ DESIGN_EMPLOYEE และ TESTING_EMPLOYEE มาทำการ Union กันได้ผลลัพธ์ดังรูป

6. Difference (-) เป็น binary relational operation หรือกล่าวได้ว่า ใช้ Operator 2 ตัว และ Syntax ของมันก็คือ R – S โดยที่ R และ S เป็นตารางซึ่งผลที่ได้ก็จะได้ผลลัพธ์แบบการ Difference กันในอาเจ๊เช่นเดียวกัน

ตัวอย่างการใช้งาน 
DESIGN_EMPLOYEE −TESTING_EMPLOYEE

โดยคำอธิบายก็คือ นำเอา Table ที่ชื่อ DESIGN_EMPLOYEE และ TESTING_EMPLOYEE มาทำการ Difference กันได้ผลลัพธ์ดังรูป

แถมมมมม
หากใครยังพอมีบุญเก่าเรื่อง Intersection ยังพอจำกันได้ ในที่นี้ก็มีเหมือนกันนะครับ แต่ว่าไม่ได้เป็น Primary สักเท่าไหร่เพราะเราสามารถแตก R ∩ S --> R-(R-S) ได้นั่นเองครับ


Part 2: TQ - The Questions ถามมา-ตอบไป

Q: What is an inner join? outer join?
A: อยากให้มอง Inner Join เป็นในลักษณะของ Intersection ข้อมูลกันระหว่างตาราง A และ ตาราง B ส่วน Outer Join จะแบ่งออกได้เป็น 3 รูปแบบ คือ Left Outer Join (A - B), Right Outer Join (B - A), Full Outer Join (A U B) โดยที่ A และ B เป็น Set ตารางของข้อมูลนะครับ และที่สำคัญของคำว่า Join เลยก็คือ การเอาส่วนของ Column ของตารางทั้งหมดมารวมกัน เป็นตารางเดียวกันครับ

ตัวอย่าง Inner Join
INNER JOIN

ตัวอย่าง Left Outer Join
LEFT OUTER JOIN1

ตัวอย่าง Right Outer Join
RIGHT OUTER JOIN

ตัวอย่าง Full Outer Join
FULL OUTER JOIN

ซึ่งถ้าใครสนใจจะอ่านเพิ่มเติม (มีโค้ดตัวอย่าง) สามารถเข้าไปชมต่อได้ที่ SQLHINTS.COM
------------------------
Q: What is a division operation in SQL?
A: การ Division หรือการหารใน SQL ก็เป็นเช่นเดียวกันกับการหารในอาเจ๊นั่นแหละ และยังคล้ายกันกับ Inner Join ด้วยแต่ความต่างอยู่ที่ Column ของตารางไม่ได้รวมกันเหมือน Join แต่จะยึดตาราง "ตัวหาร" เป็นตารางหลักนะครับ

ตัวอย่าง Division Operation

ที่มารูปภาพ: www.tutorialcup.com

Thanks ขอขอบคุณ: 

1. Joins by sqlhints
2. Relation Query Languages by tutorialcup

ไม่มีความคิดเห็น :

แสดงความคิดเห็น