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 รูปแบบ ที่จะมาแนะนำกันให้รับทราบในวันนี้นะครับ
- Select (σ) *
- Project (∏) *
- Rename (ρ) *
- Cartesian Product (X) **
- Union (U) **
- Difference (-) **
หมายเหตุ: * แทนการใช้งานโดยมี Operator 1 ตัว, ** แทนการใช้งานโดยมี Operator 2 ตัว
1. Select (σ) เป็น unary relational operation หรือกล่าวได้ว่า ใช้ Operator 1 ตัวนั้นเอง และ Syntax ของมันก็คือ σ p (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 ของตารางทั้งหมดมารวมกัน เป็นตารางเดียวกันครับ
ตัวอย่าง Left Outer Join
ตัวอย่าง Right 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
ไม่มีความคิดเห็น :
แสดงความคิดเห็น