370 likes | 758 Views
บทที่ 5 Relational algebra. เป็น Query language ที่ใช้กับฐานข้อมูลเชิงสัมพันธ์มี 2 รูปแบบ คือ
E N D
บทที่ 5 Relational algebra เป็น Query language ที่ใช้กับฐานข้อมูลเชิงสัมพันธ์มี 2 รูปแบบ คือ 1. Relational Algebraมีคุณสมบัติ procedural คือ มีลำดับ ขั้นตอนในการทำงานเป็นกระบวนการก่อนและหลังตามลำดับ จัดเป็น Procedural DML ซึ่งเป็นการกำหนดการกระทำและเงื่อนไขเพื่อให้ได้ ข้อมูลตามต้องการ 2. Relational Calculusมีคุณสมบัติเป็น nonprocedural DMLคือไม่แสดงลำดับขั้นตอนในการทำงานเป็นกระบวนการ โดยจะกำหนดรูปแบบการค้นหาในลักษณะนิพจน์หรือสมการทางคณิตศาสตร์ที่มีตัวแปร ค่าคงที่ ตัวกระทำ ตัวเชื่อมและอื่นๆ ผลลัพธ์ที่ได้จะเป็นแถวของข้อมูลที่ทำให้สมการเป็นจริง
ประเภทของ Relation algebra operation แบ่งตามประเภทการใช้งานได้ 2 ประเภท คือ 1. Set operation เป็นพื้นฐานทางคณิตศาสตร์ เช่น selection , projection , cross product , set difference , union 2. การดำเนินงานที่ใช้ในการพัฒนา relational databaseเช่น intersection , join , division , renaming
ประเภทของ Relation algebra operation แบ่งตามการกระทำกับความสัมพันธ์ได้ 2 กลุ่ม คือ 1. Unary Operators เป็นตัวกระทำที่ทำงานกับตารางเดียว เช่น selection , projection , renaming 2. Binary Operators เป็นตัวกระทำที่ทำงานกับสองตารางเช่น union, intersection , difference , cartesian product
Selection (or Restriction) • คำสั่ง Selection ใช้ในการเลือก tuples จาก relation R ตามเงื่อนไขที่กำหนด (predicate) • เช่น ต้องการข้อมูลของพนักงานที่มีเงินเดือนมากกว่า 25,000 บาท (R) (พนักงาน) Select * from พนักงาน where เงินเดือน > 25000 พนักงาน
Selection (or Restriction) สัญลักษณ์ (sigma) ใช้แทน Selection operator และ predicateเป็นตัวกำหนดเงื่อนไขในการระบุถึงผลลัพธ์ที่ได้จากการ Selection Predicateใช้ในการกำหนดเงื่อนไข ซึ่งประกอบด้วยกลุ่มของ clauses ที่อยู่ในรูปแบบ<attribute name><comparison op><constant value> เช่น เงินเดือน > 25000 <comparison op>ได้แก่
PROJECT คำสั่ง PROJECT เป็นคำสั่งในการเลือก columns จาก relation รูปแบบของ PROJECT ตัวอย่างPROJECT ต้องการ column ชื่อ,นามสกุล,เงินเดือนของพนักงาน Select ชื่อ,นามสกุล,เงินเดือน from พนักงาน
Union-Operations • Union operation เป็นการรวมข้อมูลทั้งสองตารางเข้าด้วยกันโดยจะกำจัดข้อมูลที่ซ้ำกันทิ้งไป • มีคุณสมบัติ Union compatibleก็ต่อเมื่อ ทั้ง 2 relationsมีจำนวน attributes(degree)เท่ากันและ attributes ของทั้ง 2 relationsมี domain เดียวกัน เช่น อาจารย์ U นักศึกษา นักศึกษา อาจารย์
Set-Operations • Union คือ relation ที่ประกอบด้วย tuples ที่อยู่ใน relation R หรือ relation S หรือ tuple ที่อยู่ทั้งใน relation R และ S และกำจัด tuples ซ้ำกัน โดยแสดงสัญลักษณ์ของการ Union คือ • Intersection เป็น tuples ที่อยู่ใน relation R และ relation S โดยใช้สัญลักษณ์ แทน = R - (R-S) • Set-Difference (-) คือ relation ที่มี tuples ที่อยู่ในเฉพาะ relation R R S R-S = R S R-(R-S) = R S
Union-Operations รหัสคณะ 5 แสดงตารางที่ได้จาก Select * from นักศึกษา where รหัสคณะ = 5 ผลลัพธ์1 แสดงตารางที่ได้จาก ผลลัพธ์1 Select * from นักศึกษา where รหัสอาจารย์ = 351400 แสดงตารางที่ได้จาก Select * from นักศึกษา where รหัสคณะ = 5 or รหัสอาจารย์=351400
ข้อมูลตัวอย่างแสดงการทำงานของ Set-operation ดังนี้ พนักงาน1 พนักงาน2 สังกัด
Set-Operations พนักงาน1Uพนักงาน2 Select * from พนักงาน1 union select * fromพนักงาน2 Select * from พนักงาน1 intersect select * from พนักงาน2
Set-Operations หมายถึงข้อมูลในพนักงาน1 ที่ไม่มีในพนักงาน2 Select * from พนักงาน1 minus select * from พนักงาน2 หมายถึงข้อมูลในพนักงาน2 ที่ไม่มีในพนักงาน1 Select * from พนักงาน2 minus select * from พนักงาน1
Cross-product,Cross join หรือ Cartesian-product • Cross-product,Cross join หรือ Cartesian-productใช้สัญลักษณ์ เมื่อ คือ relation ที่มี attributes ของ R และattributes ของ S โดยเริ่มจับคู่กันตั้งแต่ tuple แรกไปเรื่อยๆ จนครบซึ่งจะได้จำนวนแถวเท่ากับจำนวนแถวของ RxจำนวนแถวของS
Join Operation • เป็นการเชื่อมแถว จาก 2 relations โดยกำหนดเงื่อนไขระหว่างตารางที่จะเชื่อมโยงกัน • ตัวอย่างต้องการชื่อผู้จัดการแต่ละแผนกโดยเชื่อมเฉพาะแถวที่มี รหัสพนักงาน = รหัสผู้จัดการ • ดึงเฉพาะ ชื่อ,นามสกุล,ชื่อแผนก จากผลของการ Join Select ชื่อ,นามสกุล,ชื่อแผนก from แผนก,พนักงาน where รหัสพนักงาน=รหัสผู้จัดการ
พนักงาน แผนก โครงการ
Join Operation Dept_Mgr Result Select ชื่อ,นามสกุล,ชื่อแผนก from แผนก,พนักงาน where รหัสพนักงาน=รหัสผู้จัดการ
Join Operation สามารถอธิบายโดยใช้ Cartesian Product operationดังนี้ การ cross สองตารางแล้ว select เฉพาะเงื่อนไข มีค่าเท่ากับ การ join แบบมีเงื่อนไข
ลักษณะการ Join มีหลายแบบ Theta-Joinคือการ join แล้วแสดงทุกคอลัมน์ที่เงื่อนไขเป็นจริง รวมทั้งคอลัมน์ที่ซ้ำ แต่จะไม่แสดง record ที่เป็นค่าว่าง เช่น การ join ระหว่าง พนักงาน กับ แผนก Equi-Joinคือการ join เฉพาะเงื่อนไขเท่ากับและคอลัมน์ที่ชื่อเดียวกันจะแสดงครั้งเดียว Natural-Joinคือ Equi-Join ที่ join ทุกคอลัมน์ที่ตรงตามเงื่อนไข
DIVISION ใช้ในการค้นหาบางประเภท มีรูปแบบคือ R1/R2 เมื่อ R1 และ R2 เป็นตาราง เช่น ค้นหาพนักงานที่อยู่แผนกคอมพิวเตอร์และเทคโนโลยีสารสนเทศ จะได้ หนุงหนิง นั่นคือผลลัพธ์ของ R1/R2 R1 R2
Rename Renameเป็นเทคนิคในการเปลี่ยนชื่อ relation ที่ได้จาก algebra operation และสามารถใช้ rename attributes ได้ เช่น Temp ( ) (นักศึกษา) รหัสอาจารย์=410002 Temp ) ( (Temp) R(ชื่อนักศึกษา,นามสกุลนักศึกษา,รหัสคณะ) ชื่อ,นามสกุล,รหัสคณะ R จากตารางแสดงการเปลี่ยนชื่อ relation และ attribute ด้วย Rename
Rename Rename operationเมื่อประยุกต์ใช้กับ relation R ที่มี degree n สามารถกำหนดดังนี้ สัญลักษณ์ (rho) ใช้ในการกำหนด Rename operator S เป็นชื่อของ relation ใหม่ (new relation name) B1,B2,…,Bnเป็นชื่อของ attributes ใหม่ (new attributes name)
Natural join แสดงทุก col ที่เป็นจริง Semi join แสดง col ตัวตั้งที่เป็นจริงและไม่ซ้ำ Left outer join แสดงทุก col ของตัวตั้ง y Function of the Relational Algebra operations.
งานบทที่ 5 1. จากตารางพนักงาน1 จงเขียนคำสั่งเลือกเฉพาะเพศหญิงที่มีเงินเดือนมากกว่า 10000 บาท 2. จงเขียนคำสั่งเลือกเฉพาะฟิลด์ ชื่อ นามสกุล เบอร์โทรศัพท์ 3. จงเขียนคำสั่งกำหนดชื่อตารางผลลัพธ์เป็น “Temp” และเปลี่ยนชื่อฟิลด์เป็น ชื่อนักศึกษา นามสกุลนักศึกษา เบอร์ติดต่อ โดยเลือกเฉพาะฟิลด์ ชื่อ นามสกุล เบอร์โทรศัพท์
Relational Calculus • Relational calculus กำหนดรูปแบบการค้นหาในลักษณะนิพจน์หรือสมการทางคณิตศาสตร์ที่มีตัวแปร ค่าคงที่ ตัวกระทำ ตัวเชื่อมและอื่นๆ ผลลัพธ์ที่ได้จะเป็นแถวของข้อมูลที่ทำให้สมการเป็นจริง • เป็นพื้นฐานของ DML ประเภท Nonprocedural โดยอธิบายถึงข้อมูลที่ต้องการโดยไม่ต้องระบุวิธีการหรือขั้นตอนในการดำเนินงาน สามารถแบ่งออกเป็น • 1. Tuple-oriented relational calculus, สร้างขึ้นโดย Codd(1972) • 2. Domain-oriented relational calculus, สร้างขึ้นโดย Lacroix and Pirotte(1977)
Relational Calculus • Tuple-Oriented relational calculus • ในการเขียน expression โดยจะสร้างตัวแปร t แทนตัวแปรแถวเพื่อใช้แทน แถวใดๆ ของตาราง และ P(t) แสดงถึงเงื่อนไขในการหาผลลัพธ์ โดยรูปแบบของ expression คือ • จะได้ว่า ข้อมูลที่เป็นคำตอบของ query คือ ตารางที่ประกอบด้วยแถวของ t ที่เป็นจริงตามเงื่อนไข predicate(t)
Relational Calculus • ตัวแปรแถว คือ ตัวแปร ‘ranges over’ อาจกำหนดเป็นชื่อตาราง นั่นคือ เป็นแถวของตาราง (relation) • ตัวอย่างเช่น กำหนด tuple S เป็นตาราง Staff จะได้ว่า • RANGE OF S IS Staff • การสืบค้น หาทุกแถว S ในกรณีที่ P(S) เป็นจริง เขียนได้ดังนี้ • เรียก P ว่า well-formed formula หรือ wff in mathematical
Relational Calculus • ตัวอย่าง ค้นหาข้อมูลพนักงาน ที่มีเงินเดือนมากกว่า 10,000 บาท ซึ่งสามารถเขียนได้ ดังนี้ RANGE OF S IS Staff • มีการกำหนด Quantifiers 2 แบบ ที่ใช้ในการกำหนดเงื่อนไข • 1. Existential quantifier(there exists) • 2. Universal quantifier (for all)
Quantifiers 2 แบบ • ตัวอย่าง RANGE OF B IS Branch • อธิบายได้ว่า มีบางแถวในตาราง Branch มีรหัสสาขา เท่ากับรหัสสาขาในตาราง Staff และ จังหวัดที่อยู่ในตาราง Branch เท่ากับ ขอนแก่น • อธิบายได้ว่า ทุกๆ แถวในตาราง Branch มีจังหวัดไม่เท่ากับ ขอนแก่น • หรือเขียนในรูป • อธิบายได้ว่า ไม่มีแม้บางแถวในตาราง Branch ที่มีจังหวัด เท่ากับ ขอนแก่น
Staff Branch Property
การเขียน Tuple Relational Calculus Expression 1. Expression มีรูปแบบ 2. Predicate ประกอบด้วย atom ต่างๆ ซึ่งอาจแบ่งเป็น 1. หมายถึง p เป็นตัวแปรแถวแทนแถวใดๆ ในตาราง r 2. p[x] operator q[y]หมายถึง x เป็น attribute ในตัวแปรแถว p และ y เป็น attributeในตัวแปรแถว qนำ 2 ส่วนนี้มาเปรียบเทียบกัน โดยอาจใช้ 3. p[x] operator c หมายถึง x เป็น attribute ในตัวแปรแถว p นำมาเปรียบเทียบกับ c ที่เป็นค่าคงที่
Atom ต่างๆ สามารถนำมาประกอบกันเป็น predicate ได้ดังต่อไปนี้ 1. หนึ่ง Atom ก็เป็น หนึ่ง predicate 2. ถ้า p เป็น predicate ดังนั้น ก็เป็น predicate 3. ถ้า p1 และ p2 เป็น predicate ดังนั้น หรือ หรือ ย่อมเป็น predicate ด้วย 4. ถ้า p1 เป็น predicate ซึ่งมี free tuple variable x แล้ว Free tuple variable หมายถึง tuple variable ซึ่งไม่มี หรือ กำกับ พบว่า t เป็น free tuple variable แต่ q ไม่เป็น free tuple variable
การสร้าง expression ที่เทียบเท่ากัน ประกอบด้วย 3 กฎ การสร้าง expression ที่เทียบเท่ากัน ประกอบด้วย 3 กฎ 1. เทียบเท่ากับ 2. เทียบเท่ากับ 3. เทียบเท่ากับ p1 p2 ∧ ∨ ⇒ 1 1 1 1 1 1 0 0 1 0 0 1 0 1 1 0 0 0 0 1
Example Tuple-Oriented relational calculus (a) แสดงรายชื่อผู้จัดการที่มีเงินเดือนมากกว่า 25,000 บาท RANGE OF S IS Staff (b) แสดงข้อมูลคนที่ทำงานที่จังหวัดเลย RANGE OF S IS Staff RANGE OF P IS Property
Example Tuple-Oriented relational calculus (c) แสดงรายชื่อคนที่ไม่ได้ทำงานตำแหน่งใดๆ RANGE OF S IS Staff RANGE OF P IS Property ใช้กฎการ equivalence สำหรับ operations สามารถเขียนได้ว่า
การเขียน Domain Relational Calculus Expression ใน predicate สามารถเขียนได้ใน 3 รูปแบบ ดังนี้ 1. หมายถึง r เป็นตารางและ x1,x2,…,xn เป็นตัวแปรโดเมนของ attribute 2. x operator y หมายถึง x และ y เป็นตัวแปรโดเมนนำมาเปรียบเทียบกัน โดย x และ y ต้องเป็น domain ที่สามารถเปรียบเทียบกันได้ 3. x operator c หมายถึง นำตัวแปรโดเมนx มาเปรียบเทียบ กับ c และ c คือค่าคงที่ ที่อยู่ใน Domain ของ attribute
Example Domain-Oriented relational Calculus (a) แสดงชื่อผู้จัดการที่มีเงินเดือนมากกว่า 25,000 (b) แสดงชื่อ,ตำแหน่ง พนักงานที่ทำงานในเลย