บทที่ 3 แบบจำลองข้อมูล Data Models Algebra
Relational Algebra พีชคณิตเชิงสัมพันธ์หรือ Procedural Query Language เป็นการปฏิบัติการที่เกิดขึ้นกับ Relation เพื่อสร้าง Relation ใหม่ขึ้นมาเป็นแบบจำลองของการกระทำต่างๆ ที่สามารถเกิดขึ้นกับข้อมูลในฐานข้อมูล ซึ่งเป็นการกระทำพื้นฐานที่จะนำมาประกอบกันเป็น Procedure เพื่อกำหนดให้ฐานข้อมูลทำงานตามที่ต้องการ 1. Unary Operations 2. Set Operation 3. Join Operation
Relational Algebra Unary Operations จะปฏิบัติงานภายใต้รีเลชั่นเดียว มีโอเปอร์เรชั่น 1. Restrict (Or Selection) 2. Projection ()
Relational Algebra 1. Restrict (Or Selection) เป็นการกระทำเพื่อแสดงข้อมูลของ Tuple ใน Relation ที่มี ค่าตรงตามเงื่อนไขที่ระบุ คำสั่งที่ใช้ได้แก่ WHERE รูปแบบคือ A WHERE X operator Y
Relational Algebra Restrict
Relational Algebra B WHERE CITY = ‘New York’ S# SNAME STATUS CITY S1 Smith 20 New York
Relational Algebra 2. Projection () เป็นการกระทำเพื่อกำหนดรายชื่อของ Attribute ของRelation ที่ต้องการให้แสดงผลออกมา คำสั่งที่ใช้มีรูปแบบคือ A [X, Y,…., Z]
Relational Algebra Project
Relational Algebra A [SNAME, STATUS] SNAME STATUS Smith 20 Clark 20 (B WHERE CITY = ‘New York’) [S#] S# S1
Set Operations ในการทำงานกับข้อมูลจริง ๆ จะต้องนำรีเลชั่นหลายรีเลชั่นเข้ามาประกอบกัน set operation ทำให้เราสามารถปฏิบัติบนหลายรีเลชั่น (สามารถเรียกอีกชื่อหนึ่งว่า Binary Operation) Union, Set Difference, Intersection, Cartesian product
Relational Algebra 1. Union () เป็นการรวมกันของข้อมูลของ 2 Relation เพื่อแสดงข้อมูลของทุก Tuple ในรูปแบบของ Union ตามทฤษฎีของเซต คำสั่งที่ใช้คือ UNION รูปแบบคือ A UNION B
Relational Algebra UNION
Relational Algebra Example A S# SNAME STATUS CITY S1 Smith 20 New York S4 Clark 20 New York A S# SNAME STATUS CITY S1 Smith 20 New York S2 Jones 10 Chicago B
Relational Algebra A UNION B S# SNAME STATUS CITY S1 Smith 20 New York S4 Clark 20 New York S2 Jones 10 Chicago
Relational Algebra 2. Difference เป็นการกระทำเพื่อแสดงข้อมูลของ Tuple ที่ปรากฎอยู่ใน Relation หนึ่งแต่ไม่ปรากฏอยู่ในอีก Relation หนึ่ง ในรูปแบบของ A-B ตามทฤษฎีของเซต คำสั่งที่ใช้คือ MINUS รูปแบบคือ A MINUS B
Relational Algebra Difference
Relational Algebra A MINUS B S# SNAME STATUS CITY S4 Clark 20 New York B MINUS A S# SNAME STATUS CITY S2 Jones 10 Chicago
Relational Algebra 3. Intersection () เป็นการกระทำเพื่อแสดงข้อมูลของ Tuple ที่ปรากฎทั้ง 2 Relation ที่นำมารวมกันในรูปแบบของ Intersection ตามทฤษฎีของเซต คำสั่งที่ใช้คือ INTERSECT รูปแบบคือ A INTERSECT B
Relational Algebra Intersection
Relational Algebra A INTERSECT B S# SNAME STATUS CITY S1 Smith 20 New York
Relational Algebra 4. Cartesian Product เป็นการกระทำเพื่อแสดงข้อมูลของทุก Tuple ที่สามารถเป็นไปได้ที่เกิดจากการจับคู่กันของข้อมูล 2 Relation แบบผลคูณ Cartesian คำสั่งที่ใช้คือ TIMES มีรูปแบบคือ A TIMES B
Relational Algebra Product a b c x y a b c x y
Relational Algebra S# S1 S2 S3 P# P1 P2 P3 Example A B S# S1 S2 S3 P# A TIMES B
3. Join Operation Join กำเนิดมาจากผลคูณ Cartesian ที่ถือว่าเป็นหนึ่งใน โอเปอร์เรชั่นที่มีประสิทธิภาพสูง และถือว่าเป็นโอเปอร์เรชั่นที่ยากที่สุดในการนำไปใช้งานบน RDBMS ระบบฐานข้อมูลเชิงสัมพันธ์จึงมักเกิดปัญหาเกี่ยวกับประสิทธิภาพ ซึ่งส่วนหนึ่งก็อาจเกิดจากกระบวนการ join รีเลชั่นที่ผิดพลาด โอเปอร์เรชั่น join ประกอบด้วย Theta Join Equi Join Natural join Outer Join Semi Join
Theta Join Theta-Join เป็นโอเปอเรชั่นที่นิยามถึงรีเลชั่นที่บรรจุไปด้วยทัปเพิลที่ต้องการตามเงื่อนไขจากผลคูณ Cartesian ระหว่าง 2 รีเลชั่น โดยกำหนดเงื่อนไขที่ต้องการ โดยใช้โอเปอร์เรเตอร์ <, , >, , = ,
Equi Join Equi-Join คือ การ Join แบบที่เงื่อนไขเท่ากับ = เท่านั้น และผลลัพธ์ที่ได้คอลัมน์ที่ซ้ำกันจะถูกแสดงเพียงแค่ครั้งเดียว
Natural join Natural-Join คือ Equi-Join ที่ Join ทุกคอลัมน์แต่ขจัดคอลัมน์ที่ซ้ำกันออกไป A B a 1 b 2 B C 1 X Y 3 Z A B C a 1 X Y Natural-Join
Outer Join การ join เป็นตรวจสอบคีย์ที่ตรงกัน แต่บางครั้งเราต้องการทัปเพิลในรีเลชั่นหนึ่งไม่สามารถจับคู่กับอีกรีเลชั่นหนึ่งได้ แต่ต้องการทัปเพิลจากรีเลชั่นหนึ่งเพื่อไปปรากฏในผลลัพธ์ จึงจำเป็นต้องใช้การ join แบบ Outer Join
Semi Join รีเลชั่นที่บรรจุอยู่ในทัปเพิล R ที่มีส่วนร่วมในการ Join ของ R กับ S A B a 1 b 2 B C 1 X Y 3 Z A B a 1 Semi Join
Relational Algebra 4. Divide เป็นการกระทำเพื่อแสดงข้อมูลที่เป็นไปได้ทั้งหมด ซึ่งเกิดจากการนำเอา Relation A ไปเปรียบเทียบค่ากับ Relation B โดยที่ Relation A จะต้องมี Degree ที่สูงกว่า Relation B และทุก Attribute ใน Relation B ต้องปรากฎอยู่ใน Relation A แต่ในการแสดงผลจะแสดงเฉพาะ Attribute ที่ปรากฏใน Relation A แต่ไม่ปรากฎใน Relation B คำสั่งที่ใช้มีรูปแบบคือ A DIVIDEBY B
Relational Algebra Divide R/S R S
Relational Algebra Divide a b c x y z x z a
โอเปอเรชั่นการรวมและการจำแนกกลุ่ม aggregation and Grouping Count Sum Avg Min Max Grouping