ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
1
Week 3 Online available at http://www.ict.pyo.nu.ac.th/somporns/db
Relational Algebra Week 3 Online available at
2
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
3
ฐานข้อมูลของบริษัทบ้านในฝัน
บริษัทบ้านในฝัน เป็นบริษัทที่บริการบ้านพักอาศัยแก่ผู้ที่ต้องการหาบ้านเช่า และมีสาขากระจายอยู่ทั่วประเทศไทย บริษัทจะเป็นตัวแทนจัดหาบ้านเช่าแก่ผู้ที่ต้องการไม่ว่าจะอยู่ในจังหวัดใดก็ตาม บริษัทมีข้อมูลบ้านเช่าที่เจ้าของบ้านเช่าเข้าร่วมโครงการกับบริษัท ดังนั้นบริษัทจึงสามารถจัดหาบ้านเช่าไม่ว่าจะอยู่ในจังหวัดใดให้กับผู้ที่ต้องการเช่าได้
4
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)
5
Schema ฐานข้อมูล บางส่วนของบริษัทบ้านในฝัน
โดยที่ Branch คือ สาขาที่เปิดให้บริการของบริษัท Staff คือ พนักงานของบริษัทบ้านในฝัน Property_for_rent คือ บ้านที่ให้เช่า Renter คือ ลูกค้าหรือผู้เช่าพักอาศัย Owner คือ เจ้าของบ้านเช่า Viewing คือ รายละเอียดต่างๆ ที่ลูกค้ามาดูบ้านเช่า
6
ตัวอย่างรีเลชันบางส่วนของฐานข้อมูลบริษัทบ้านในฝัน
Branch Bno Street Area City Pcode Tel_No Fax_No B5 21 Huaykaew Rd. Muang Chiangmai 50300 B7 56 Paholyothin Rd. Prompiram Phitsanulok 65150 B3 143 Wipavadee Rd. Laksee Bangkok 10110 B4 22 Sahamitr Rd. Wiangchai Chiangrai 57000 B2 11 Paholyothin Rd.
7
ตัวอย่างรีเลชันบางส่วนของฐานข้อมูลบริษัทบ้านในฝัน
Staff Sno Fname Lname Address Tel_No Position Sex DOB Salary Bno SL21 Chuchai Suksri Chaingmai Manager M 1-Oct-45 30000 B5 SG37 Sirirat Maneejun Bangkok Snr Asst F 10-Nov-60 12000 B3 SG14 Somsak Sae-Tang Deputy 24-Mar-58 18000 SA09 Piyachat Eamsuk Phitsanulok Assistant 19-Feb-70 9000 B7 SG05 Pornrat Thanasilp 3-jun-40 24000 SL41 Ladda Wongdee Tak 13-Jun-65
8
ตัวอย่างรีเลชันบางส่วนของฐานข้อมูลบริษัทบ้านในฝัน
Property_for_rent Pno Street Area City Pcode Type Rooms Rent Ono Sno Bno PA14 19 Paholyothin Rd. Arunyig Phitsanulok 65000 House 6 650 CO46 SA09 B7 PL94 14 Lumhuay Rd. Sritanow Chiangmai 50310 Flat 4 400 Co87 SL41 B5 PG04 6 Wipavadee Rd. Laksee Bangkok 10200 3 350 CO40 SG14 B3 PG36 2 Prachautit Rd. 10160 375 CO93 SG37 PG21 18 Payathai Rd. Payathai 10400 5 600 CO87 PG16 5 Payathai Rd. 450
9
ตัวอย่างรีเลชันบางส่วนของฐานข้อมูลบริษัทบ้านในฝัน
Renter Rno Fname Lname Tel_No Pref_Type Max_Rent Bno CR76 Yongyut Thanalerd Flat 425 B5 CR56 Siranee Promjun 350 B3 CR74 Srisamorn Hirunpong House 750 CR62 Tawan Songsrisuk 600 B7
10
ตัวอย่างรีเลชันบางส่วนของฐานข้อมูลบริษัทบ้านในฝัน
Owner Ono Fname Lname Address Tel_No CO46 Niramol Patana Phitsanulok CO87 Chatchai Chunsri Bangkok CO40 Kanda Sengma CO93 Sukjai Sae-lee
11
ตัวอย่างรีเลชันบางส่วนของฐานข้อมูลบริษัทบ้านในฝัน
Viewing Rno Pno Date Comment CR56 PA14 24-May-2002 too small CR76 PG04 20-Apr-2002 to remote 26-May-2002 CR62 14-May-2002 no dining room PG36 28-Apr-2002
12
Relational Algebra คือ ทฤษฎีทางภาษาสำหรับการปฏิบัติการระหว่างข้อมูลต่างๆ ในรีเลชันหนึ่งหรือหลายๆ รีเลชัน เพื่อให้เกิดรีเลชันใหม่ขึ้นมา โดยจะไม่กระทบกับรีเลชันหลัก โอเปอร์เรชันพื้นฐาน คือ Selection Projection Cartesian Product Union Set difference มีโอเปอเรชันเพิ่มอีก 3 โอเปอเรชัน คือ Join Intersection Division
13
Selection or Restriction ()
เป็นการเลือกแถวจากรีเลชัน 1 รีเลชันหรือมากกว่า โดยผลลัพธ์จะเป็นรีเลชันใหม่โดยมีจำนวนแถวตามเงื่อนไขที่กำหนดขึ้น เช่น 0 แถวขึ้นไป แต่ต้องไม่มากกว่าจำนวนแถวทั้งหมดที่มีในรีเลชันเดิม คือ สัญลักษณ์ของ Selection predicate คือ เงื่อนไขที่กำหนด R คือ ชื่อของความสัมพันธ์หรือรีเลชันที่จะทำการ Selection predicate (R)
14
Selection or Restriction ()
สามารถใช้โอเปอเรชันทางตรรกะประกอบได้ด้วย เช่น (AND) (OR) (NOT)
15
Selection or Restriction ()
ตัวอย่าง แสดงรายการ Staff ทั้งหมดที่มีเงินเดือนมากกว่า บาท ผลลัพธ์จะได้แถวทั้งหมดของ Staff ที่มีเงินเดือนมากกว่า บาท salary>10000 (Staff)
16
Selection or Restriction ()
ตัวอย่าง ผลลัพธ์จะได้แถวทั้งหมดของ Staff ที่มีเงินเดือนมากกว่า บาท Sno Fname Lname Address Tel_No Position Sex DOB Salary Bno SL21 Chuchai Suksri Chaingmai Manager M 1-Oct-45 30000 B5 SG37 Sirirat Maneejun Bangkok Snr Asst F 10-Nov-60 12000 B3 SG14 Somsak Sae-Tang Deputy 24-Mar-58 18000 SG05 Pornrat Thanasilp 3-jun-40 24000
17
Projection (¶) ¶ col1,col2,…,coln (R) ¶ คือ สัญลักษณ์ของ Projection
เป็นการเลือกคอลัมน์จากรีเลชัน 1 รีเลชันหรือมากกว่า โดยผลลัพธ์จะเป็นรีเลชันใหม่โดยมีคอลัมน์ตามเงื่อนไขที่กำหนดขึ้น ¶ คือ สัญลักษณ์ของ Projection col1,col2,…,coln คือ ชื่อคอลัมน์หรือแอทริบิวต์ที่เลือก R คือ ชื่อของความสัมพันธ์หรือรีเลชันที่จะทำการ Projection ¶ col1,col2,…,coln (R)
18
¶sno, fname, lname, salary (Staff)
Projection (¶) ตัวอย่าง แสดงรหัส ชื่อ และเงินเดือนในรีเลชัน Staff ผลลัพธ์จะแสดงข้อมูลทุกแถวในรีเลชันStaff แต่แสดงเฉพาะคอลัมน์หรือแอทริบิวต์ คือ Sno, Fname, Lname และ Salary ¶sno, fname, lname, salary (Staff)
19
Projection (¶) SL21 Chuchai Suksri 30000 SG37 Sirirat Maneejun 12000
ตัวอย่างแสดงรหัส ชื่อ และเงินเดือนในรีเลชัน Staff Sno Fname Lname Salary SL21 Chuchai Suksri 30000 SG37 Sirirat Maneejun 12000 SG14 Somsak Sae-Tang 18000 SA09 Piyachat Eamsuk 9000 SG05 Pornrat Thanasilp 24000 SL41 Ladda Wongdee
20
R×S Cartesian product (×)
เป็นการรวมความสัมพันธ์ ซึ่งจะเป็นผลคูณของรีเลชัน 2 รีเลชัน โดยผลลัพธ์จะเป็นแถวจากรีเลชันหนึ่ง (R) ที่จะ join กับทุกๆ แถวในอีกรีเลชันหนึ่ง (S) R และ S คือรีเลชันที่จะทำการ Cartesian product R×S
21
(¶rno, fname, lname (Renter)) × (¶rno, pno, comment (Viewing))
Cartesian product (×) ตัวอย่าง จงหาผลคูณระหว่าง Renter และ Viewing โดยจะเลือกเฉพาะบางคอลัมน์ของแต่ละรีเลชันเท่านั้น (¶rno, fname, lname (Renter)) × (¶rno, pno, comment (Viewing))
22
(¶rno, fname, lname (Renter)) (¶rno, pno, comment (Viewing))
Cartesian product (×) ตัวอย่าง ผลลัพธ์ของ (¶rno, fname, lname (Renter)) (¶rno, pno, comment (Viewing)) Rno Fname Lname CR76 Yongyut Thanalerd CR56 Siranee Promjun CR74 Srisamorn Hirunpong CR62 Tawan Songsrisuk Rno Pno Comment CR56 PA14 too small CR76 PG04 to remote CR62 no dining room PG36
23
Cartesian product (×) ตัวอย่าง ผลลัพธ์ของ (¶rno, fname, lname (Renter)) × (¶rno, pno, comment (Viewing))
24
Cartesian product (×) ตัวอย่าง ผลลัพธ์ของ renter.rno=viewing.rno(¶rno, fname, lname (Renter)) × (¶rno, pno, comment (Viewing))
25
Union () เป็นการเชื่อมความสัมพันธ์ด้วยการนำรีเลชัน R และ S มาทำการ Union กัน ผลลัพธ์ที่ได้ จะมีจำนวนทูเพิลทั้งหมดจากรีเลชัน R และ S โดยที่ทูเพิลที่ซ้ำกันจะถูกกำจัดไป R และ S คือรีเลชันที่จะทำการ Union R S
26
Union () (¶area (Branch)) (¶area(Property_for_Rent))
ตัวอย่าง ผลลัพธ์ของ (¶area (Branch)) (¶area(Property_for_Rent))
27
Set Difference (-) เป็นการหาความแตกต่างระหว่างสองความสัมพันธ์ โดยการนำรีเลชันทั้งสองมาทำการหาความต่าง หรือ Difference ผลลัพธ์ที่ได้ จะมีเฉพาะทูเพิลที่อยู่ในรีเลชัน R แต่ไม่อยู่ในรีเลชัน S R และ S คือรีเลชันที่จะทำการ Difference R - S
28
Set Difference (-) ¶city (Branch) - ¶city (Property_for_Rent)
ตัวอย่าง ผลลัพธ์ของ ¶city (Branch) - ¶city (Property_for_Rent) City Chiangrai
29
Join operation ใช้สำหรับการดึงข้อมูลจากความสัมพันธ์สองความสัมพันธ์ ที่มีแอทริบิวต์ที่อ้างอิงถึงกัน มีการใช้เครื่องหมาย <, <=, >, >=, =, <> เป็นโอเปอเรชันในการเปรียบเทียบ ประเภทของการ Join Theta-join Equi-join Natural-join Outer join แบ่งเป็น Right Outer Join กับ Left Outer Join Semi-join
30
Join operation Theta-join ผลลัพธ์ที่ได้คล้ายกับ Product R S
31
(¶rno, fname, lname (Renter)) (¶rno, pno, comment (Viewing))
Join operation ตัวอย่าง Theta-join (¶rno, fname, lname (Renter)) (¶rno, pno, comment (Viewing))
32
Join operation Equi-join เป็นส่วนหนึ่งของ Theta-join
33
Join operation ตัวอย่าง Equi-join
34
Join operation Natural-join
คล้ายกับ Equi-join แต่จะตัดแอทริบิวต์ที่ซ้ำกันออกไป
35
Join operation ตัวอย่าง Natural-join
36
Join operation Outer-join การทำ Natural join แต่ถ้าข้อมูลไม่ตรงกันจะไม่ตัดทิ้ง ส่วนค่าข้อมูลในแอทริบิวต์ใดที่ไม่มีค่าก็เว้นว่างไว้ เป็นค่า Null แบ่งเป็น Left outer join ใช้สัญลักษณ์ Right outer join ใช้สัญลักษณ์
37
Join operation sid name age scode 11 dustin 45 S01 22 lubber 55 S02 33
ตัวอย่างรีเลชันสำหรับการทำ Outer Join C L1 sid name age scode 11 dustin 45 S01 22 lubber 55 S02 33 rusty 35 S03 44 Cute 20 S04 scode sname location S01 Laboratory 10 S02 Atm 12 S03 canteen 5 S05 Science 6
38
Join operation ตัวอย่าง Left Outer Join sid name age scode sname
C C1.scode=L1.scode L1 sid name age scode sname location 11 dustin 45 S01 Laboratory 10 22 lubber 55 S02 Atm 12 33 rusty 35 S03 Canteen 5 44 Cute 20 S04 Null
39
Join operation ตัวอย่าง Right Outer Join sid name age scode sname
C C1.scode=L1.scode L1 sid name age scode sname location 11 dustin 45 S01 Laboratory 10 22 lubber 55 S02 Atm 12 33 rusty 35 S03 Canteen 5 Null S05 Science 6
40
Join operation เป็นการ join ระหว่าง 2 รีเลชัน
Semi-join เป็นการ join ระหว่าง 2 รีเลชัน ผลลัพธ์จะแสดงเฉพาะข้อมูลของรีเลชันที่อยู่ทางซ้าย ใช้สัญลักษณ์
41
Staff staff.bno=branch.bno and branch.area = ‘Laksee’ Branch
Join operation ตัวอย่าง Semi-join ให้แสดงรายละเอียดของ Staff ที่ทำงานในสาขาที่ตั้งอยู่ที่หลักสี่ (Laksee) Staff staff.bno=branch.bno and branch.area = ‘Laksee’ Branch
42
Join operation ผลลัพธ์ของตัวอย่าง Semi-join ให้แสดงรายละเอียดของ Staff ที่ทำงานในสาขาที่ตั้งอยู่ที่หลักสี่ (Laksee)
43
Intersection () เป็นการดำเนินการระหว่าง 2 รีเลชัน
44
Intersection () ตัวอย่าง
45
Division () R S เป็นการดำเนินการระหว่าง 2 รีเลชัน
ผลลัพธ์จะได้ทูเพิลที่อยู่ในรีเลชันที่เป็นตัวตั้ง และจะมีเฉพาะแอทริบิวต์ที่ไม่ใช่แอทริบิวต์ที่เป็นตัวหาร รีเลชันที่เป็นตัวหารจะเป็นสับเซตของรีเลชันที่เป็นตัวตั้ง R S
46
Division () ตัวอย่าง
47
Relational Calculus เป็นการปฏิบัติการแบบ nonprocedural หรือ declarative มีบทบาทสำคัญสำหรับการออกแบบภาษา SQL และ QBE ยึดหลัก ดูอะไร (What) มากกว่า ดูอย่างไร (How) ผู้ใช้สามารถกำหนดรูปแบบการค้นหาในลักษณะของนิพจน์หรือสมการทางคณิตศาสตร์ที่มี ตัวแปร ค่าคงที่ ตัวกระทำ และตัวเชื่อม ซึ่งผลลัพธ์จะได้ทูเพิลจากความสัมพันธ์ที่ส่งผลให้สมการทางคณิตศาสตร์เป็นจริง
48
Relational Calculus Tuple-oriented relational calculus
มี 2 รูปแบบ คือ Tuple-oriented relational calculus Domain- oriented relational calculus เนื่องจาก relational calculus เน้นที่ดูอะไร จึงไม่มีกฎเกณฑ์หรือรูปแบบในการเขียนที่ชัดเจน ในครั้งนี้จะขอยึดรูปแบบของ Ullman (1988)
49
Relational Calculus Tuple-oriented relational calculus
สนใจค้นหาทูเพิลจากเงื่อนไขที่กำหนดที่เป็นจริง โดยตั้งอยู่บน tuple variables ที่ทำหน้าที่แทนทูเพิลของรีเลชันนั้นแทน เพื่อใช้อ้างถึงช่วงข้อมูลตามเงื่อนไข
50
Relational Calculus Tuple-oriented relational calculus ตัวอย่าง
กำหนดให้ S คือ รีเลชัน Staff เขียนได้ว่า RANGE OF S IS Staff ในการแสดงคิวรีว่า “ให้ค้นหากลุ่มของทูเพิล S ทั้งหมดตาม P(S) ที่เป็นจริง” เขียนเป็น โดยที่ P คือ สูตรหรือเงื่อนไขทางตรรกะ
51
Relational Calculus Tuple-oriented relational calculus
ตัวอย่าง เมื่อต้องการให้ค้นหา Sno, Fname, Lname, Address, Tel_No, Position, Sex, DOB และBno ของรีเลชัน Staff ที่มีเงินเดือนมากกว่า บาท เขียนเป็น
52
Relational Calculus Tuple-oriented relational calculus
ตัวอย่าง ถ้าต้องการแสดง Sno, Fname, Lname ของรีเลชัน Staff ที่มีเงินเดือนมากกว่า บาท เขียนเป็น
53
Relational Calculus Tuple-oriented relational calculus
เราสามารถนำ quantifiers มาใช้งานในสูตรได้ คือ Existential quantifiers (there exists) Universal quantifiers (for all) ใช้โอเปอเรเตอร์ทางตรรกะ เช่น ~ ร่วมด้วยได้
54
Relational Calculus Tuple-oriented relational calculus ตัวอย่าง แสดงทูเพิลจาก Branch ที่มี Bno เหมือนกับ Bno ในStaff และอยู่ในจังหวัด Phitsanulok
55
Relational Calculus แสดงทูเพิลจาก Branch ไม่อยู่ในจังหวัด Tak
Tuple-oriented relational calculus ตัวอย่าง แสดงทูเพิลจาก Branch ไม่อยู่ในจังหวัด Tak
56
Relational Calculus Tuple-oriented relational calculus
ตัวอย่าง แสดงชื่อ manager ที่มีเงินเดือนสูงกว่า บาท
57
Relational Calculus Tuple-oriented relational calculus
ตัวอย่าง แสดงข้อมูลพนักงานที่ดูแลบ้านเช่าใน Bangkok
58
Relational Calculus Tuple-oriented relational calculus
ตัวอย่าง แสดงชื่อพนักงานที่ ณ ปัจจุบันไม่ได้ดูแลบ้านเช่าใดๆ
59
Relational Calculus Tuple-oriented relational calculus
ตัวอย่าง แสดงชื่อ และหมายเหตุของผู้เช่าที่เข้ามาดูบ้านเช่าใน Bangkok
60
Relational Calculus Domain-oriented relational calculus
ใช้ตัวแปรจากโดเมนของทูเพิลในรีเลชัน โดยพิจารณาจากตัวอย่างต่อไปนี้
61
Relational Calculus Domain-oriented relational calculus
ตัวอย่าง ค้นหาชื่อของ manager ที่มีเงินเดือนสูงกว่า 25000
62
Relational Calculus Domain-oriented relational calculus
ตัวอย่าง แสดงชื่อพนักงานที่ดูแลบ้านเช่าใน Bangkok {fname, lname, pno |sno Staff(sno, fname, lname) city (Property_for_Rent(pno, sno) P.city = “Bangkok”)}
63
แบบฝึกหัด ให้เขียน Relational Algebra และ Relational Calculus โดยใช้รีเลชันด้านล่าง
64
แบบฝึกหัด ให้เขียน Relational Algebra และ Relational Calculus โดยใช้รีเลชันด้านล่าง
65
แบบฝึกหัด แสดงรายละเอียดของวิชาทั้งหมด แสดงรายละเอียดของคณะทั้งหมด
แสดงรหัสสาขาและชื่อสาขาที่สังกัดคณะ “ENG” แสดงรายการนักศึกษาที่มี GPA ต่ำกว่า 2.00 แสดงรายการนักศึกษาที่สังกัดสาขา “IT” หรือ “CS” แสดงเกรดของรายวิชาที่ลงทะเบียนเรียนทั้งหมดของนักศึกษารหัส “ ”
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.