670 likes | 828 Views
Relational Algebra. Week 3 Online available at http://www.ict.pyo.nu.ac.th/somporns/db. Contents. Relation Algebra โอเปอเรชันของ Relation Algebra (Selection, Projection, Cartesian product, Union, Set difference, Join, Intersection, Division) Relation Calculus
E N D
Relational Algebra Week 3 Online available at http://www.ict.pyo.nu.ac.th/somporns/db
Contents • Relation Algebra • โอเปอเรชันของ Relation Algebra (Selection, Projection, Cartesian product, Union, Set difference, Join, Intersection, Division) • Relation Calculus • Tuple-oriented relation calculus • Domain-oriented relation calculus
ฐานข้อมูลของบริษัทบ้านในฝันฐานข้อมูลของบริษัทบ้านในฝัน • บริษัทบ้านในฝัน เป็นบริษัทที่บริการบ้านพักอาศัยแก่ผู้ที่ต้องการหาบ้านเช่า และมีสาขากระจายอยู่ทั่วประเทศไทย • บริษัทจะเป็นตัวแทนจัดหาบ้านเช่าแก่ผู้ที่ต้องการไม่ว่าจะอยู่ในจังหวัดใดก็ตาม • บริษัทมีข้อมูลบ้านเช่าที่เจ้าของบ้านเช่าเข้าร่วมโครงการกับบริษัท • ดังนั้นบริษัทจึงสามารถจัดหาบ้านเช่าไม่ว่าจะอยู่ในจังหวัดใดให้กับผู้ที่ต้องการเช่าได้
Schema ฐานข้อมูล บางส่วนของบริษัทบ้านในฝัน • Branch (Bno, Street, Area, City, Pcode, Tel_No, Fax_No) • Staff (Sno, Fname, Lname, Address, Tel_No, Position, Sex, DOB, Salary, Bno) • Property_for_rent (Pno, Street, Area, City, Pcode, Rooms, Rent, Ono, Sno, Bno) • Renter (Rno, Fname, Lname, Tel_No, Pref_Type, Max_Rent, Bno) • Owner (Ono, Fname, Lname, Address, Tel_No) • Viewing (Rno, Pno, Date, Comment)
Schema ฐานข้อมูล บางส่วนของบริษัทบ้านในฝัน โดยที่ • Branch คือ สาขาที่เปิดให้บริการของบริษัท • Staff คือ พนักงานของบริษัทบ้านในฝัน • Property_for_rent คือ บ้านที่ให้เช่า • Renter คือ ลูกค้าหรือผู้เช่าพักอาศัย • Owner คือ เจ้าของบ้านเช่า • Viewing คือ รายละเอียดต่างๆ ที่ลูกค้ามาดูบ้านเช่า
ตัวอย่างรีเลชันบางส่วนของฐานข้อมูลบริษัทบ้านในฝันตัวอย่างรีเลชันบางส่วนของฐานข้อมูลบริษัทบ้านในฝัน • Branch
ตัวอย่างรีเลชันบางส่วนของฐานข้อมูลบริษัทบ้านในฝันตัวอย่างรีเลชันบางส่วนของฐานข้อมูลบริษัทบ้านในฝัน • Staff
ตัวอย่างรีเลชันบางส่วนของฐานข้อมูลบริษัทบ้านในฝันตัวอย่างรีเลชันบางส่วนของฐานข้อมูลบริษัทบ้านในฝัน • Property_for_rent
ตัวอย่างรีเลชันบางส่วนของฐานข้อมูลบริษัทบ้านในฝันตัวอย่างรีเลชันบางส่วนของฐานข้อมูลบริษัทบ้านในฝัน • Renter
ตัวอย่างรีเลชันบางส่วนของฐานข้อมูลบริษัทบ้านในฝันตัวอย่างรีเลชันบางส่วนของฐานข้อมูลบริษัทบ้านในฝัน • Owner
ตัวอย่างรีเลชันบางส่วนของฐานข้อมูลบริษัทบ้านในฝันตัวอย่างรีเลชันบางส่วนของฐานข้อมูลบริษัทบ้านในฝัน • Viewing
Relational Algebra คือ ทฤษฎีทางภาษาสำหรับการปฏิบัติการระหว่างข้อมูลต่างๆ ในรีเลชันหนึ่งหรือหลายๆ รีเลชัน เพื่อให้เกิดรีเลชันใหม่ขึ้นมา โดยจะไม่กระทบกับรีเลชันหลัก โอเปอร์เรชันพื้นฐาน คือ • Selection • Projection • Cartesian Product • Union • Set difference • มีโอเปอเรชันเพิ่มอีก 3 โอเปอเรชัน คือ • Join • Intersection • Division
Selection or Restriction () เป็นการเลือกแถวจากรีเลชัน 1 รีเลชันหรือมากกว่า โดยผลลัพธ์จะเป็นรีเลชันใหม่โดยมีจำนวนแถวตามเงื่อนไขที่กำหนดขึ้น เช่น 0 แถวขึ้นไป แต่ต้องไม่มากกว่าจำนวนแถวทั้งหมดที่มีในรีเลชันเดิม คือ สัญลักษณ์ของ Selection predicate คือ เงื่อนไขที่กำหนด R คือ ชื่อของความสัมพันธ์หรือรีเลชันที่จะทำการ Selection predicate (R)
Selection or Restriction () สามารถใช้โอเปอเรชันทางตรรกะประกอบได้ด้วย เช่น • (AND) • (OR) • (NOT)
Selection or Restriction () ตัวอย่าง แสดงรายการ Staff ทั้งหมดที่มีเงินเดือนมากกว่า 10000 บาท ผลลัพธ์จะได้แถวทั้งหมดของ Staff ที่มีเงินเดือนมากกว่า 10000 บาท salary>10000 (Staff)
Selection or Restriction () ตัวอย่าง ผลลัพธ์จะได้แถวทั้งหมดของ Staff ที่มีเงินเดือนมากกว่า 10000 บาท
Projection (¶) เป็นการเลือกคอลัมน์จากรีเลชัน 1 รีเลชันหรือมากกว่า โดยผลลัพธ์จะเป็นรีเลชันใหม่โดยมีคอลัมน์ตามเงื่อนไขที่กำหนดขึ้น ¶คือ สัญลักษณ์ของ Projection col1,col2,…,colnคือ ชื่อคอลัมน์หรือแอทริบิวต์ที่เลือก R คือ ชื่อของความสัมพันธ์หรือรีเลชันที่จะทำการ Projection ¶col1,col2,…,coln (R)
Projection (¶) ตัวอย่าง แสดงรหัส ชื่อ และเงินเดือนในรีเลชัน Staff ผลลัพธ์จะแสดงข้อมูลทุกแถวในรีเลชันStaff แต่แสดงเฉพาะคอลัมน์หรือแอทริบิวต์ คือ Sno, Fname, Lname และ Salary ¶sno, fname, lname, salary (Staff)
Projection (¶) ตัวอย่างแสดงรหัส ชื่อ และเงินเดือนในรีเลชัน Staff
Cartesian product (×) เป็นการรวมความสัมพันธ์ ซึ่งจะเป็นผลคูณของรีเลชัน 2 รีเลชัน โดยผลลัพธ์จะเป็นแถวจากรีเลชันหนึ่ง (R) ที่จะ join กับทุกๆ แถวในอีกรีเลชันหนึ่ง (S) R และ S คือรีเลชันที่จะทำการ Cartesian product R×S
Cartesian product (×) ตัวอย่าง จงหาผลคูณระหว่าง Renter และ Viewing โดยจะเลือกเฉพาะบางคอลัมน์ของแต่ละรีเลชันเท่านั้น (¶rno, fname, lname (Renter)) × (¶rno, pno, comment (Viewing))
Cartesian product (×) ตัวอย่าง ผลลัพธ์ของ (¶rno, fname, lname (Renter)) (¶rno, pno, comment (Viewing))
Cartesian product (×) (¶rno, fname, lname (Renter)) × (¶rno, pno, comment (Viewing)) ตัวอย่าง ผลลัพธ์ของ
Cartesian product (×) renter.rno=viewing.rno(¶rno, fname, lname (Renter)) × (¶rno, pno, comment (Viewing)) ตัวอย่าง ผลลัพธ์ของ
Union () • เป็นการเชื่อมความสัมพันธ์ด้วยการนำรีเลชัน R และ S มาทำการ Union กัน • ผลลัพธ์ที่ได้ จะมีจำนวนทูเพิลทั้งหมดจากรีเลชัน R และ S โดยที่ทูเพิลที่ซ้ำกันจะถูกกำจัดไป R และ S คือรีเลชันที่จะทำการ Union R S
Union () (¶area (Branch)) (¶area(Property_for_Rent)) ตัวอย่าง ผลลัพธ์ของ
Set Difference (-) • เป็นการหาความแตกต่างระหว่างสองความสัมพันธ์ โดยการนำรีเลชันทั้งสองมาทำการหาความต่าง หรือ Difference • ผลลัพธ์ที่ได้ จะมีเฉพาะทูเพิลที่อยู่ในรีเลชัน R แต่ไม่อยู่ในรีเลชัน S R และ S คือรีเลชันที่จะทำการ Difference R -S
Set Difference (-) ตัวอย่าง ผลลัพธ์ของ ¶city (Branch) - ¶city (Property_for_Rent)
Join operation • ใช้สำหรับการดึงข้อมูลจากความสัมพันธ์สองความสัมพันธ์ที่มีแอทริบิวต์ที่อ้างอิงถึงกัน • มีการใช้เครื่องหมาย <, <=, >, >=, =, <> เป็นโอเปอเรชันในการเปรียบเทียบ • ประเภทของการ Join • Theta-join • Equi-join • Natural-join • Outer join แบ่งเป็น Right Outer Join กับ Left Outer Join • Semi-join
Join operation • Theta-join ผลลัพธ์ที่ได้คล้ายกับ Product R S
(¶rno, fname, lname (Renter)) (¶rno, pno, comment (Viewing)) Join operation • ตัวอย่าง Theta-join
Join operation • Equi-join • เป็นส่วนหนึ่งของ Theta-join • เป็นการ join บนแอทริบิวต์ที่ตรงกันของ 2 รีเลชัน
Join operation • ตัวอย่าง Equi-join
Join operation • Natural-join • คล้ายกับ Equi-join แต่จะตัดแอทริบิวต์ที่ซ้ำกันออกไป
Join operation • ตัวอย่าง Natural-join
Join operation • Outer-join • การทำ Natural join แต่ถ้าข้อมูลไม่ตรงกันจะไม่ตัดทิ้ง ส่วนค่าข้อมูลในแอทริบิวต์ใดที่ไม่มีค่าก็เว้นว่างไว้ เป็นค่า Null แบ่งเป็น • Left outer joinใช้สัญลักษณ์ • Right outer join ใช้สัญลักษณ์
Join operation ตัวอย่างรีเลชันสำหรับการทำ Outer Join C1 L1
Join operation ตัวอย่าง Left Outer Join C1 C1.scode=L1.scode L1
C1 C1.scode=L1.scode L1 Join operation ตัวอย่าง Right Outer Join
Join operation • Semi-join • เป็นการ join ระหว่าง 2 รีเลชัน • ผลลัพธ์จะแสดงเฉพาะข้อมูลของรีเลชันที่อยู่ทางซ้าย • ใช้สัญลักษณ์
Join operation ตัวอย่าง Semi-join • ให้แสดงรายละเอียดของ Staff ที่ทำงานในสาขาที่ตั้งอยู่ที่หลักสี่ (Laksee) Staff staff.bno=branch.bno and branch.area = ‘Laksee’ Branch
Join operation ผลลัพธ์ของตัวอย่าง Semi-join • ให้แสดงรายละเอียดของ Staff ที่ทำงานในสาขาที่ตั้งอยู่ที่หลักสี่ (Laksee)
Intersection () • เป็นการดำเนินการระหว่าง 2 รีเลชัน • ผลลัพธ์จะได้ทูเพิลที่อยู่ในรีเลชัน R และ S R S
Intersection () • ตัวอย่าง
Division () • เป็นการดำเนินการระหว่าง 2 รีเลชัน • ผลลัพธ์จะได้ทูเพิลที่อยู่ในรีเลชันที่เป็นตัวตั้ง และจะมีเฉพาะแอทริบิวต์ที่ไม่ใช่แอทริบิวต์ที่เป็นตัวหาร • รีเลชันที่เป็นตัวหารจะเป็นสับเซตของรีเลชันที่เป็นตัวตั้ง R S
Division () • ตัวอย่าง
Relational Calculus • เป็นการปฏิบัติการแบบ nonprocedural หรือ declarative • มีบทบาทสำคัญสำหรับการออกแบบภาษา SQL และ QBE • ยึดหลัก ดูอะไร (What) มากกว่า ดูอย่างไร (How) • ผู้ใช้สามารถกำหนดรูปแบบการค้นหาในลักษณะของนิพจน์หรือสมการทางคณิตศาสตร์ที่มี ตัวแปร ค่าคงที่ ตัวกระทำ และตัวเชื่อม ซึ่งผลลัพธ์จะได้ทูเพิลจากความสัมพันธ์ที่ส่งผลให้สมการทางคณิตศาสตร์เป็นจริง
Relational Calculus • มี 2 รูปแบบ คือ • Tuple-oriented relational calculus • Domain- oriented relational calculus เนื่องจาก relational calculus เน้นที่ดูอะไร จึงไม่มีกฎเกณฑ์หรือรูปแบบในการเขียนที่ชัดเจน ในครั้งนี้จะขอยึดรูปแบบของ Ullman (1988)
Relational Calculus • Tuple-oriented relational calculus สนใจค้นหาทูเพิลจากเงื่อนไขที่กำหนดที่เป็นจริง โดยตั้งอยู่บน tuple variables ที่ทำหน้าที่แทนทูเพิลของรีเลชันนั้นแทน เพื่อใช้อ้างถึงช่วงข้อมูลตามเงื่อนไข
Relational Calculus • Tuple-oriented relational calculus ตัวอย่าง กำหนดให้ S คือ รีเลชัน Staff เขียนได้ว่า RANGE OF S IS Staff ในการแสดงคิวรีว่า “ให้ค้นหากลุ่มของทูเพิล S ทั้งหมดตาม P(S) ที่เป็นจริง” เขียนเป็น โดยที่ P คือ สูตรหรือเงื่อนไขทางตรรกะ