บทที่ 3

Download Report

Transcript บทที่ 3

บทที่ 3
แบบจำลองข้ อมูล
Data Models
Calculus
1
Relational Calculus
•แคลคูลสั เชิงสัมพันธ์หรื อ Nonprocedural Query Language
•เป็ นแบบจำลองของคำสัง่ สำหรับเรี ยกใช้ ข้อมูลจำก Relation ซึง่ ให้
ผลลัพธ์เหมือน Relational Algebra แต่จะเป็ นคำสังที่ใช้ กำรกำหนด
ข้ อมูลต่ำงๆ ที่ต้องกำรจำก Relation โดยไม่ต้องสนใจวิธีกำรทีจ่ ะได้ มำ
ซึง่ ผลลัพธ์นนจะต้
ั ้ องใช้ กำรกระทำอะไรบ้ ำง
•มี 2 รูปแบบคือ
1. Tuple-Oriented Relational Calculus
2. Domain-Oriented Relational Calculus
2
Relational Calculus
1. Tuple-Oriented Relational Calculus
มีกำรใช้ ตวั แปรแทน Tuple ใน Relation ซึง่ ตัวแปรนี ้จะ
ถูกเรี ยกว่ำ Tuple Variable หรื อ Range Variable
เมื่อต้ องกำรใช้ คำสัง่ Relational Calculus เพื่ออ้ ำงถึง
Tuple ใน Relation ใด ต้ องกระทำผ่ำน Tuple Variable
ที่ทำหน้ ำที่แทน Tuple ของ Relation นันแทน
้
3
Relational Calculus
กำรกำหนดชื่อตัวแปร
•รูปแบบคำสัง่
RANGE OF ชื่อตัวแปรทัพเพิล IS ชื่อรี เลชัน่
เช่น กำรกำหนดชื่อตัวแปร E เป็ น EMPLOYEE
RANGE OF E IS EMPLOYEE
และหำกต้ องกำรแสดงกลุม่ ทัปเพิล E ทังหมดตำมเงื
้
่อนไขเป็ นจริ ง
ใน P(E) เขียนได้ วำ่ { S | P (E)}
โดย P คือสูตรหรื อเงื่อนไขทำงตรรกะ
4
1. Tuple-Oriented Relational Calculus
ตัวอย่ ำงที่ 3.16
• ต้ องกำรคิวรี่ ข้อมูลทุกแอตตริบิวต์ ของพนักงำนที่มีเงินเดือนมำกกว่ำ 10000
RANG OF E IS EMPLOYEE
{ E | E.Salary > 10000}
ตัวอย่ ำงที่ 3.17
• ต้ องกำรคิวรี ข้อมูลเฉพำะแอตตริบิวต์ empNo,EmpName,Salary ของพนักงำนที่มี
เงินเดือนมำกว่ำ 10000 บำท
RANG OF E IS EMPLOYEE
{ E.empNo,E.EmpName,E.Salary | E.Salary > 10000}
5
1. Tuple-Oriented Relational Calculus
สำมำรถแปลงเป็ นคำสัง่ SQL ดังนี ้
Select E.empNo,E.EmpName,E.Salary
From EMPLOYEE AS E
Where E.Salary > 10000
6
1. Tuple-Oriented Relational Calculus
สัญลักษณ์ Quantifiers มำใช้ งำนเพิ่มเติม
– Existential Quantifiers = there exists
– Universal Quantifiers  = for all
7
1. Tuple-Oriented Relational Calculus
ตัวอย่ ำงที่ 3.18
จงแสดงทัปเพิลของรี เลชัน่ BRANCH ที่มี BranchNo ตรงกับ
BranchNo ในทัปเพิลของรี เลชัน่ EMPLOYEE และสำขำที่อยูใ่ นจังหวัด
ลำปำง
RANG OF E IS EMPLOYEE
RANG OF B IS BRANCH
 B (B.branchNo=E.branchNo  B.City = “ลำปำง”
• โอเปอร์ เรชัน่ ทำงด้ ำนตรรกะ ประกอบด้ วย  (AND) (OR) และ 
(NOT)
8
1. Tuple-Oriented Relational Calculus
ตัวอย่ ำงที่ 3.19
• จงแสดงทุกทัปเพิลในรี เลชัน่ BRANCH เฉพำะสำขำที่ไม่อยูใ่ นจังหวัด
กรุงเทพฯ
RANG OF B IS BRANCH
 B (B.city  = “กรุงเทพฯ”
หรื อเขียนอีกแบบว่ำ
RANG OF B IS BRANCH
 B (B.city  = “กรุงเทพฯ”)
9
1. Tuple-Oriented Relational Calculus
ตัวอย่ ำงที่ 3.20
จงแสดงรำยชื่อของผู้จดั กำรที่เงินเดือนสูงกว่ำ 25000 บำท
RANG OF E IS EMPLOYEE
{E.employee | E.position = “ผู้จดั กำร”  E.salary >
25000}
10
1. Tuple-Oriented Relational Calculus
ตัวอย่ ำงที่ 3.21
จงแสดงข้ อมูลพนักงำนที่ดแู ลบ้ ำนเช่ำในจังหวัดเชียงใหม่
RANG OF E IS EMPLOYEE
RANG OF P IS PROPERTY_FOR_RENT
{E | P (P.empNo= E.empNo  P.City
=“เชียงใหม่”) }
11
1. Tuple-Oriented Relational Calculus
ตัวอย่ ำงที่ 3.22
จงแสดงรำยชื่อพนักงำนปั จจุบนั ที่ไม่ได้ รับมอบหมำยให้ ดแู ลบ้ ำนเช่ำ
RANG OF E IS EMPLOYEE
RANG OF P IS PROPERTY_FOR_RENT
{E.empName | ~(P (E.empNo= P.empNo) )}
หรื อ
{E.empName |  P (~(E.empNo= P.empNo) )}
12
1. Tuple-Oriented Relational Calculus
ตัวอย่ ำงที่ 3.23
จงแสดงรำยชื่อและคำติชมของลูกค้ ำที่เข้ ำมำเยี่ยมชมบ้ ำนเช่ ำใน
กรุ งเทพฯ
RANG OF C IS CLIENT
RANG OF V IS VIEWING
RANG OF P IS PROPERTY_FOR_RENT
{C.clientName, V.comment |   (C.clientNo = V.clientNo) P
(V.propertyNo =P. propertyNo  P.City =“กรุงเทพฯ”) }
13
Relational Calculus
2. Domain-Oriented Relational Calculus
• จะใช้ ตวั แปรแทน Domain ของข้ อมูลแทน Tuple เรี ยกว่ำ “Domain
Variable” หรื อ “Scalar Variable”
• กำรใช้ Domain ของข้ อมูลจะอ้ ำงถึง กำรเป็ นสมำชิกของข้ อมูล
ภำยใต้ เงื่อนไขที่กำหนดในคำสัง่ นันแทน
้
กล่ำวคือจะใช้ กำร
ระบุคำ่ ของ Attribute ต่ำงๆ ของ Relation ที่ต้องกำรให้ แสดง
ข้ อมูลออกมำแทนกำรใช้ เงื่อนไขเพื่อจำกัดเฉพำะจำนวน Tuple
ที่เป็ นไปตำมเงื่อนไขตำมที่กำหนดใน Tuple-Orinted Relational
Calculus
14
Relational Calculus
รูปแบบ
R(pair, pair…)
โดยที่ R คือ ชื่อของ Relation ที่เป็ นเจ้ ำของAttribute
pair คือ ค่ำของ Attribute ที่ต้องกำร โดยจะอยูใ่ นรูปแบบ a:v ที่
ซึง่ a ได้ แก่ ชื่อ Attribute ส่วน v ได้ แก่คำ่ ของ Attribute นัน้
15
2. Domain-Oriented Relational Calculus
ตัวอย่ ำงที่ 3.24
• จงแสดงรำยชื่อพนักงำนที่เป็ นผู้จดั กำรที่เงินเดือนสูงกว่ำ 25000
{empName |  position,  salary
(EMPLOYEE(empName,position,salary)  position
=“Manager”  salary > 25000}
16
2. Domain-Oriented Relational Calculus
ตัวอย่ ำงที่ 3.25
แสดงพนักงำนที่ดแู ลบ้ ำนเช่ำจังหวัดเชียงรำย
{empName,propertyNo |  empNo EMPLOYEE(empNo,empName)
  city (PROPERTY_FOR_RENT(propertyNo,empNo) ^ P.city
=“เชียงรำย” )}
17