PowerPoint Template
Download
Report
Transcript PowerPoint Template
LOGO
Chapter 5 : พีชคณิตเชิงสั มพันธ์
(Relational algebra)
4121203A ระบบฐานข้ อมูล
Outline
Relational Database
วิธีจดั การข้อมูลใน Relational Database
ฐานข้ อมูลเชิงสั มพันธ์
ฐานข้อมูลเชิงสัมพันธ์เป็ นที่รู้จกั และใช้งานกันอย่างแพร่ หลาย
ในโปรแกรมระบบงานทัว่ ไป
ฐานข้อมูลเชิงสัมพันธ์เป็ นการนาแนวคิดแบบจาลองเชิงสัมพันธ์
มาประยุกต์ใช้กบั ฐานข้อมูล
แบบจาลองเชิงสัมพันธ์เป็ นผลงานวิจยั ของ Dr. E.F. Codd ซึ่ งมี
การเผยแพร่ ในปี ค.ศ. 1970
ฐานข้ อมูลเชิงสั มพันธ์
ทาให้ผใู้ ช้เห็นภาพของข้อมูลได้ง่าย
ผูใ้ ช้ไม่ตอ้ งรู้ ว่าข้อมูลถูกจัดเก็บจริ งอย่างไรและวิธีการเรี ยกใช้
ข้อมูล
ภาษาที่ใช้ในการเรี ยกดูขอ้ มูล คล้ายภาษาอังกฤษ
การเรี ย กใช้ข ้อ มู ล ท าได้ง่ า ย
โดยใช้โ อเปอเรเตอร์ ท าง
คณิ ตศาสตร์ เช่น Join, intersect , Union
โครงสร้ างการจัดเก็บข้ อมูลของฐานข้ อมูลเชิงสั มพันธ์
(Structure of Relational Databases)
มีโครงสร้างข้อมูลเป็ นตาราง(Relation) 2 มิติ ประกอบด้วย
Row และ Column
ไฟล์
ไฟล์
ระเบียน
ฟิ ลด์
RDBS
รี เลชัน่ (Relation)
ทูเปิ ล(Tuple)
แอตทริ บิว(Attribute)
การใช้ งานด้ วย
RDBMS
เทเบิล(Table)
แถว(Row)
คอลัมน์(Column)
Relation
Employee
E-ID NAME ADDRESS
PHONE
001 Somchai Bangkok
02-2322212
002 Somsak
Chonburi
053-34251
003 Somsri
Ranong
041-45632
004 Somjai
Nonthaburi
02-2322212
Primary Key
โครงสร้ างฐานข้ อมูลเชิงสั มพันธ์
Cardinality
Attribute
Degree
Foreign Key
Payroll
TAX-ID
0012345
1234566
Salary
10,000
8,900
E-ID
004
002
Tax - Type
1
2
คุณสมบัตขิ องรีเลชั่น (Properties of Relations)
รี เลชัน่ จะต้องมีชื่อกากับ โดยแต่ละรี ชนั่ จะมีชื่อที่แตกต่างกัน ซ้ ากันไม่ได้
ข้อมูลในแต่ละคอลัมน์เก็บได้เพียงค่าเดียวเท่านั้น (Atomic)
แต่ละแอตทริ บิวต์ในรี เลชัน่ ต้องมีชื่อแตกต่างกัน
ข้อมูลที่บรรจุลงในแต่ละแอตทริ บิวต์ เป็ นไปตามข้อกาหนดของโดเมน
ข้อมูลในแต่ละแถวภายในรี เลชัน่ เดียวกันต้องไม่ซ้ ากัน
คอลัมน์จะเรี ยงลาดับอย่างไรก็ได้
แต่ละแถวจะเรี ยงลาดับอย่างไรก็ได้
วิธีจัดการข้ อมูลใน Relational Database
Relational Database มีภาษาที่ใช้สาหรับจัดการกับข้อมูล
2 ภาษาคือ
Relational Algebra
• ภาษาที่ DBMS ใช้อยูภ่ ายในระบบฐานข้อมูล
Relational Calculus
• ภาษาที่ใช้กาหนดว่าต้องการอะไร
• ถูกพัฒนาจนเป็ นภาษา SQL ในปัจจุบนั
ภาษาทีใ่ ช้ สาหรับจัดการข้ อมูล
User Program
DBMS
Relational Calculus
Relational Algebra
Database
Relational Algebra
พีชคณิ ตเชิงสัมพันธ์ (Relational Algebra) เป็ นภาษาในรู ปแบบ
ของ Procedural Query
Relational Algebra เรี ยกอีกอย่างว่า Relational query language
เป็ นการพิจารณาว่าจะทาอย่างไร เพื่อให้ได้มาซึ่ งผลลัพธ์ตามที่
ต้องการ
ใช้ในการจัดการข้อมูล โดยการระบุตวั กระทา กับความสัมพันธ์
ที่ตอ้ งการจัดการ ผลลัพธ์ที่ได้คือ ความสัมพันธ์ใหม่
มีคาสัง่ พื้นฐาน 8 ตัว
คาสั่ งพืน้ ฐาน 8 ตัว
โอเปอเรชั่นแบบยูนารี (Unary Operations)
Select() หรื อ Restrict เลือกแถวจากความสัมพันธ์
Project() เลือกเฉพาะคอลัมน์ที่ตอ้ งการจากความสัมพันธ์
โอเปอเรชั่นแบบเซต (Set Operations)
Union () เชื่อม 2 ความสัมพันธ์เข้าด้วยกัน
Product() สามารถรวมความสัมพันธ์ได้
Difference(-) หาความแตกต่างระหว่าง 2 ความสัมพันธ์
Intersection ()
โอเปอเรชั่นการ Join (Join Operations)
Join (⋈)
โอเปอเรชั่นการหาร (Division Operations)
Division ()
โอเปอเรชั่นแบบยูนารี (Unary Operations)
Select() หรื อ Restrict
Project()
Select or Restrict
โอเปอร์ชนั่ Select ใช้สาหรับแสดงข้อมูลของแถวในรี เลชัน่
โดยผลลัพธ์ของข้อมูลที่แสดงจะเป็ นไปตามเงื่อนไขที่ระบุ
ผลลัพธ์อาจมีจานวนแถวตั้งแต่ศูนย์แถวขึ้นไป แต่จะไม่มาก
เกินกว่าจานวนแถวทั้งหมดที่มีอยูใ่ นความสัมพันธ์
สรุ ป Select คือ การดึงข้อมูลจากรี เลชัน่ เฉพาะแถวที่ตอ้ งการ
ตัวอย่าง ต้องการสิ นค้าที่ราคาต่ากว่า 1000 บาท
ตัวอย่ างคาสั่ ง Select
รหัสสิ นค้า ชื่อสิ นค้า
ราคา
22222
คอมพิวเตอร์ 30000
11111
สมุด
120
33333
ปากกา
500
รหัสสิ นค้า
11111
33333
ตัวอย่าง ต้องการสิ นค้าที่
ราคาต่ากว่า 1000 บาท
ชื่อสิ นค้า
สมุด
ปากกา
ราคา
120
500
Selection (Restrict)
Selection (Restrict)
รู ปแบบ
ชื่อรี เลชัน่ WHERE <CONDITION>
predicate(R)
predicate
R
ซิ กม่า (sigma) คือ สัญลักษณ์ของการ Selection
คือประโยคที่ใช้เป็ นเงื่อนไข
คือชื่อของรี เลชัน่
เงื่อนไข(ชื่อตาราง)
Selection (Restrict)
ตัวอย่าง
ตองการข
อมู
่ ยูจั
้
้ ลของนักศึ กษาทีอ
่ งหวัด
นครราชสี มา นักศึกษา
รหัส
B001
B002
B003
B004
ชื่อ
แดง
ดา
เขียว
ขาว
จังหวัด
นครราชสี มา
กรุ งเทพฯ
สระบุรี
นครราชสี มา
จังหวัด=‘นครราชสีมา’(นักศึกษา)
Selection (Restrict)
ตัวอย่าง
ตองการข
อมู
่ ยูจั
้
้ ลของนักศึ กษาทีอ
่ งหวัด
นครราชสี มา นักศึกษา
รหัส
B001
B002
B003
B004
ชื่อ
แดง
ดา
เขียว
ขาว
จังหวัด
นครราชสี มา
กรุ งเทพฯ
สระบุรี
นครราชสี มา
จังหวัด=‘นครราชสีมา’(นักศึกษา)
Selection (Restrict)
ตัวอย่าง
ตองการข
อมู
่ ยูจั
้
้ ลของนักศึ กษาทีอ
่ งหวัด
นครราชสี มา นักศึกษา
รหัส ชื่อ
จังหวัด
B001 แดง นครราชสี มา
B004 ขาว นครราชสี มา
จังหวัด=‘นครราชสีมา’(นักศึกษา)
Selection (Restrict)
ในการกาหนดเงือ่ นไข
นอกจากจะใช้เปรี ยบเทียบด้วยเครื่ องหมาย = (เท่ากับ)
สามารถใช้ตวั ดาเนินการอื่น ๆ มาเปรี ยบเทียบได้ เช่น
< , > ,<= , >=, < >
สามารถใช้ตวั ดาเนินการทางตรรกะ คือ
AND, OR เพื่อเชื่อมเงื่อนไข
Selection (Restrict)
ตัวอย่าง ต้องการข้อมูลนักศึกษาที่มีชื่อแดง
นักศึกษา
รหัส
B001
B002
B003
B004
ชื่อ
แดง
ดา
เขียว
ขาว
จังหวัด
นครราชสี มา
กรุ งเทพฯ
สระบุรี
นครราชสี มา
ชื่อ=‘แดง’(นักศึกษา)
Selection (Restrict)
ตัวอย่าง ต้องการข้อมูลนักศึกษาที่มีชื่อแดง
นักศึกษา
รหัส
B001
B002
B003
B004
ชื่อ
แดง
ดา
เขียว
ขาว
จังหวัด
นครราชสี มา
กรุ งเทพฯ
สระบุรี
นครราชสี มา
ชื่อ=‘แดง’(นักศึกษา)
Selection (Restrict)
ตัวอย่าง ต้องการข้อมูลนักศึกษาที่มีชื่อแดง
นักศึกษา
รหัส ชื่อ
B001 แดง
จังหวัด
นครราชสี มา
ชื่อ=‘แดง’(นักศึกษา)
Selection (Restrict)
ตัวอย่าง ต้องการข้อมูลนักศึกษาที่มีรหัส B001
นักศึกษา
รหัส ชื่อ
B001 แดง
B002 ดา
B003 เขียว
B004 ขาว
จังหวัด
นครราชสี มา
กรุ งเทพฯ
สระบุรี
นครราชสี มา
รหัส=‘B001’(นักศึกษา)
Selection (Restrict)
ตัวอย่าง
ตองการแสดงข
อมู
่ ยูจั
้
้ ลนักศึ กษาทีอ
่ งหวัด
นครราชสี มาและอยู
นักส่ศึาขาวิ
กษาชาโยธา
รหัส ชื่อ
จังหวัด
สาขาวิชา
B001 แดง นครราชสี มา โยธา
B002 ดา
กรุ งเทพฯ
โทรคมนาคม
B003 เขียว สระบุรี
โยธา
B004 ขาว นครราชสี มา คอมพิวเตอร์
จังหวัด=‘นครราชสีมา’ AND สาขาวิชา=‘โยธา’(นักศึกษา)
Selection (Restrict)
ตัวอย่าง
ตองการแสดงข
อมู
่ ยูจั
้
้ ลนักศึ กษาทีอ
่ งหวัด
นครราชสี มาและอยู
นักส่ศึาขาวิ
กษาชาโยธา
รหัส ชื่อ
จังหวัด
สาขาวิชา
B001 แดง นครราชสี มา โยธา
B002 ดา
กรุ งเทพฯ
โทรคมนาคม
B003 เขียว สระบุรี
โยธา
B004 ขาว นครราชสี มา คอมพิวเตอร์
จังหวัด=‘นครราชสีมา’ AND สาขาวิชา=‘โยธา’(นักศึกษา)
Selection (Restrict)
ตัวอย่าง
ตองการแสดงข
อมู
่ ยูจั
้
้ ลนักศึ กษาทีอ
่ งหวัด
นครราชสี มาและอยูส่ าขาวิชาโยธา
นักศึกษา
รหัส ชื่อ
B001 แดง
จังหวัด
นครราชสี มา
สาขาวิชา
โยธา
จังหวัด=‘นครราชสีมา’ AND สาขาวิชา=‘โยธา’(นักศึกษา)
Selection (Restrict)
ตัวอย่าง
ตองการแสดงข
อมู
่ ยูจั
้
้ ลนักศึ กษาทีอ
่ งหวัด
นครราชสี มาหรื ออยูส่ าขาวิชาโยธา
นักศึกษา
รหัส
B001
B002
B003
B004
ชื่อ
แดง
ดา
เขียว
ขาว
จังหวัด
นครราชสี มา
กรุ งเทพฯ
สระบุรี
นครราชสี มา
สาขาวิชา
โยธา
โทรคมนาคม
โยธา
คอมพิวเตอร์
จังหวัด=‘นครราชสีมา’ OR สาขาวิชา=‘โยธา’(นักศึกษา)
Selection (Restrict)
ตัวอย่าง
ตองการแสดงข
อมู
่ ยูจั
้
้ ลนักศึ กษาทีอ
่ งหวัด
นครราชสี มาหรื ออยูส่ าขาวิชาโยธา
นักศึกษา
รหัส
B001
B002
B003
B004
ชื่อ
แดง
ดา
เขียว
ขาว
จังหวัด
นครราชสี มา
กรุ งเทพฯ
สระบุรี
นครราชสี มา
สาขาวิชา
โยธา
โทรคมนาคม
โยธา
คอมพิวเตอร์
จังหวัด=‘นครราชสีมา’ OR สาขาวิชา=‘โยธา’(นักศึกษา)
Selection (Restrict)
ตัวอย่าง
ตองการแสดงข
อมู
่ ยูจั
้
้ ลนักศึ กษาทีอ
่ งหวัด
นครราชสี มาหรื ออยูส่ าขาวิชาโยธา
นักศึกษา
รหัส
B001
B002
B003
B004
ชื่อ
แดง
ดา
เขียว
ขาว
จังหวัด
นครราชสี มา
กรุ งเทพฯ
สระบุรี
นครราชสี มา
สาขาวิชา
โยธา
โทรคมนาคม
โยธา
คอมพิวเตอร์
จังหวัด=‘นครราชสีมา’ OR สาขาวิชา=‘โยธา’(นักศึกษา)
Selection (Restrict)
ตัวอย่าง
ตองการแสดงข
อมู
่ ยูจั
้
้ ลนักศึ กษาทีอ
่ งหวัด
นครราชสี มาหรื ออยูส่ าขาวิชาโยธา
นักศึกษา
รหัส
B001
B002
B003
B004
ชื่อ
แดง
ดา
เขียว
ขาว
จังหวัด
นครราชสี มา
กรุ งเทพฯ
สระบุรี
นครราชสี มา
สาขาวิชา
โยธา
โทรคมนาคม
โยธา
คอมพิวเตอร์
จังหวัด=‘นครราชสีมา’ OR สาขาวิชา=‘โยธา’(นักศึกษา)
Selection (Restrict)
ตัวอย่าง
ตองการแสดงข
อมู
่ ยูจั
้
้ ลนักศึ กษาทีอ
่ งหวัด
นครราชสี มาหรื ออยูส่ าขาวิชาโยธา
นักศึกษา
รหัส
B001
B003
B004
ชื่อ
แดง
เขียว
ขาว
จังหวัด
นครราชสี มา
สระบุรี
นครราชสี มา
สาขาวิชา
โยธา
โยธา
คอมพิวเตอร์
จังหวัด=‘นครราชสีมา’ OR สาขาวิชา=‘โยธา’(นักศึกษา)
Project
โอเปอเรชัน่ Projection เป็ นการเลือกเฉพาะคอลัมน์ที่ตอ้ งการ
สรุ ป Project คือ การเลือกเฉพาะบางคอลัมน์ ของความสัมพันธ์
ขึ้นมาแสดง
ตัวอย่างเลือกเฉพาะชื่อสิ นค้าและราคา
ชื่อสิ นค้า
คอมพิวเตอร์
สมุด
ปากกา
ราคา
30000
120
500
Project
Project
รู ปแบบ
ชื่อรี เลชัน่ [ชื่อแอททริ บิวต์ 1, ชื่อแอททริ บิวต์ 2, …]
col1, col2,…,coln(R)
ไพ (pi)
col1,col2,…,coln
R
คือ สัญลักษณ์ของการ Projection
คือคอลัมน์หรื อแอตทริ บิวต์ที่ตอ้ งการแสดง
คือชื่อของรี เลชัน่
ชื่อแอตทริ บิวต์ 1, ชื่อแอตทริ บิวต์ 2, …,ชื่อแอตทริ บิวต์ n(ชื่อตาราง)
Project
ตัวอย่าง แสดงข้อมูลจังหวัดที่นกั ศึกษาอาศัยอยู่
นักศึกษา
รหัส
B001
B002
B003
B004
ชื่อ
แดง
ดา
เขียว
ขาว
จังหวัด
นครราชสี มา
กรุ งเทพฯ
สระบุรี
นครราชสี มา
สาขาวิชา
โยธา
โทรคมนาคม
โยธา
คอมพิวเตอร์
จังหวัด(นักศึกษา)
Project
ตัวอย่าง แสดงข้อมูลจังหวัดที่นกั ศึกษาอาศัยอยู่
นักศึกษา
รหัส
B001
B002
B003
B004
ชื่อ
แดง
ดา
เขียว
ขาว
จังหวัด
นครราชสี มา
กรุ งเทพฯ
สระบุรี
นครราชสี มา
สาขาวิชา
โยธา
โทรคมนาคม
โยธา
คอมพิวเตอร์
จังหวัด(นักศึกษา)
Project
ตัวอย่าง แสดงข้อมูลจังหวัดที่นกั ศึกษาอาศัยอยู่
นักศึกษา
จังหวัด
นครราชสี มา
กรุ งเทพฯ
สระบุรี
นครราชสี มา
จังหวัด(นักศึกษา)
Project
ตัวอย่าง แสดงข้อมูลชื่อ จังหวัด สาขาวิชาของนักศึกษาแต่ละคน
นักศึกษา รหัส ชื่อ
B001
B002
B003
B004
จังหวัด
แดง นครราชสี มา
ดา
กรุ งเทพฯ
เขียว สระบุรี
ขาว นครราชสี มา
สาขาวิชา
โยธา
โทรคมนาคม
โยธา
คอมพิวเตอร์
ชื่อ, จังหวัด, สาขาวิชา(นักศึกษา)
Project
ตัวอย่าง แสดงข้อมูลชื่อ จังหวัด สาขาวิชาของนักศึกษาแต่ละคน
นักศึกษา ชื่อ
จังหวัด
แดง นครราชสี มา
ดา
กรุ งเทพฯ
เขียว สระบุรี
ขาว นครราชสี มา
สาขาวิชา
โยธา
โทรคมนาคม
โยธา
คอมพิวเตอร์
ชื่อ, จังหวัด, สาขาวิชา(นักศึกษา)
Project
ตัวอย่าง แสดงข้อมูลชื่อ จังหวัด สาขาวิชาของนักศึกษาแต่ละคน
นักศึกษา จังหวัด
นครราชสี มา
กรุ งเทพฯ
สระบุรี
นครราชสี มา
ชื่อ
แดง
ดา
เขียว
ขาว
สาขาวิชา
โยธา
โทรคมนาคม
โยธา
คอมพิวเตอร์
จังหวัด, ชื่อ, สาขาวิชา(นักศึกษา)
Project & Select
สามารถนาโอเปอร์ชนั่ และ มาใช้งานร่ วมกันได้
รู ปแบบ
ชื่อรี เลชัน่ WHERE <CONDITION> [ชื่อแอททริ บิวต์ 1, …]
condition(ชื่อแอททริ บิวต์ 1, …(Relation))
Project & Select
ตัวอย่าง แสดงข้อมูลรหัส ชื่อ สาขาวิชาเฉพาะนักศึกษาที่มีชื่อแดง
นักศึกษา
รหัส
B001
B002
B003
B004
ชื่อ
แดง
ดา
เขียว
ขาว
จังหวัด
นครราชสี มา
กรุ งเทพฯ
สระบุรี
นครราชสี มา
สาขาวิชา
โยธา
โทรคมนาคม
โยธา
คอมพิวเตอร์
ชื่อ=‘แดง’( รหัส,ชื่อ,สาขาวิชา(นักศึกษา))
Project & Select
ตัวอย่าง แสดงข้อมูลรหัส ชื่อ สาขาวิชาเฉพาะนักศึกษาที่มีชื่อแดง
นักศึกษา
รหัส
B001
B002
B003
B004
ชื่อ
แดง
ดา
เขียว
ขาว
จังหวัด
นครราชสี มา
กรุ งเทพฯ
สระบุรี
นครราชสี มา
สาขาวิชา
โยธา
โทรคมนาคม
โยธา
คอมพิวเตอร์
ชื่อ=‘แดง’( รหัส,ชื่อ,สาขาวิชา(นักศึกษา))
Project & Select
ตัวอย่าง แสดงข้อมูลรหัส ชื่อ สาขาวิชาเฉพาะนักศึกษาที่มีชื่อแดง
นักศึกษา
รหัส
B001
B002
B003
B004
ชื่อ
แดง
ดา
เขียว
ขาว
สาขาวิชา
โยธา
โทรคมนาคม
โยธา
คอมพิวเตอร์
ชื่อ=‘แดง’( รหัส,ชื่อ,สาขาวิชา(นักศึกษา))
Project & Select
ตัวอย่าง แสดงข้อมูลรหัส ชื่อ สาขาวิชาเฉพาะนักศึกษาที่มีชื่อแดง
นักศึกษา
รหัส
B001
B002
B003
B004
ชื่อ
แดง
ดา
เขียว
ขาว
สาขาวิชา
โยธา
โทรคมนาคม
โยธา
คอมพิวเตอร์
ชื่อ=‘แดง’( รหัส,ชื่อ,สาขาวิชา(นักศึกษา))
Project & Select
ตัวอย่าง แสดงข้อมูลรหัส ชื่อ สาขาวิชาเฉพาะนักศึกษาที่มีชื่อแดง
นักศึกษา
รหัส ชื่อ สาขาวิชา
B001 แดง โยธา
ชื่อ=‘แดง’( รหัส,ชื่อ,สาขาวิชา(นักศึกษา))
โอเปอเรชั่นแบบเซต (Set Operations)
Product()
Union ()
Intersection ()
Difference(-)
Product
โอเปอร์ชนั่ product หรื อ Cartesian Product เป็ นการแสดง
ความสัมพันธ์ดว้ ยการคูณ Cartesian ระหว่าง 2 รี เลชัน่
เช่น ต้องการนารี เลชัน่ R และ S มาคูณกันแบบ Cartesian
ผลลัพธ์ที่ได้ในรี เลชัน่ ใหม่จะประกอบด้วยจานวนแถวของ
R S ในรู ปแบบของผลคูณ Cartesian
อ่านว่าไทมส์ (times)
R S
Product
เป็ นการจับคู่ขอ้ มูลระหว่างรี เลชัน่ ตั้งแต่ 2 รี เลชัน่ ขึ้นไป โดย
หลักการดังนี้
จานวนแถวข้อมูลในผลลัพธ์จะเท่ากับจานวนแถวข้อมูลจาก
รี เลชัน่ แรกคูณกับจานวนแถวข้อมูลของรี เลชัน่ ที่สอง
วิธีการจับคู่ จะทาโดยนาแถวข้อมูลจากรี เลชัน่ แรกไปจับคู่
กับข้อมูลทุกแถวในอีกรี เลชัน่ หนึ่ง ผลลัพธ์จะแสดงทุก
แอตทริ บิวต์
ตัวอย่ างคาสั่ ง Product
คารางลูกค้า
คารางสิ นค้า
รหัสลูกค้า ชื่อลูกค้า
C001
สมาน
C002
แองจี้
รหัสสิ นค้า ชื่อสิ นค้า
22222
คอมพิวเตอร์
11111
สมุด
33333
ปากกา
ผลลัพธ์
รหัสลูกค้า
ชื่อลูกค้า
รหัสสิ นค้า ชื่อสิ นค้า
ราคา
C001
สมาน
22222
คอมพิวเตอร์
30000
C001
สมาน
11111
สมุด
120
C001
สมาน
33333
ปากกา
500
C002
แองจี้
22222
คอมพิวเตอร์
30000
C002
แองจี้
11111
สมุด
120
C002
แองจี้
33333
ปากกา
500
ราคา
30000
120
500
Product
R
a
b
S
1
2
3
R S
a
a
a
b
b
b
S R
1
2
3
1
2
3
1
1
2
2
3
3
a
a
b
b
c
c
Product
R
a
b
S
1
2
3
RS
a
a
a
1
2
3
Product
R
S
RS
a
1
a
1
b
2
a
2
3
a
3
b
1
b
2
b
3
Product
R
S
a
1
1
a
b
2
1
b
3
S R
Product
R
a
b
S
1
2
3
S R
1
1
2
2
a
b
a
b
Product
R
S
S R
a
1
1
a
b
2
1
b
3
2
a
2
b
3
a
3
b
Product
รู ปแบบ
ชื่อรี เลชัน่ แรก ชื่อรี เลชัน่ สอง
Relation Relation
Product
ตัวอย่าง
นักศึกษา
รหัสนักศึกษา
B001
B002
วิชา
รหัสวิชา
C001
C002
C003
นักศึกษา วิชา
Product
นักศึกษา
รหัสนักศึกษา
B001
B002
วิชา
รหัสวิชา
C001
C002
C003
นักศึกษา วิชา
รหัสนักศึกษา
รหัสวิชา
B001
C001
B001
C002
B001
C003
Product
นักศึกษา
รหัสนักศึกษา
B001
B002
วิชา
รหัสนักศึกษา
รหัสวิชา
รหัสวิชา
B001
C001
C001
B001
C002
C002
B001
C003
C003
B002
C001
B002
C002
B002
C003
นักศึกษา วิชา
Union
นาข้อมูลจาก 2 รี เลชัน่ มารวมกัน โดยถ้ารายการซ้ าจะแสดงเพียง
แถวเดียว
การ Union มีขอ้ กาหนดว่า แอตทริ บิวต์ในลาดับที่ตรงกันจาก 2
รี เลชัน่ ต้องมีชนิดของข้อมูลตรงกัน มิฉะนั้นจะ Union ไม่ได้
ตัวอย่ าง Union
ชื่อลูกค้า
สมาน
แองจี้
สจ็อต
ชื่อลูกค้า
Union สมาน
แองจี้
วิษกร
ชื่อลูกค้า
สมาน
แองจี้
สจ็อต
วิษกร
Union
รู ปแบบ
ชื่อรี เลชัน่ แรก UNION ชื่อรี เลชัน่ สอง
RS
คือสัญลักษณ์การยูเนียน
R และ S คือชื่อรี เลชัน่ ที่ตอ้ งการนามายูเนียนกัน
Relation Relation
Union
A
ตัวอย่าง A B
รหัส
ชื่อ
จังหวัด
B001
แดง
นครราชสี มา
B002
ดา
กรุ งเทพฯ
B003
เขียว
สระบุรี
B004
ขาว
นครราชสี มา
รหัส
ชื่อ
จังหวัด
B001
แดง
นครราชสี มา
B002
ฝน
กรุ งเทพฯ
B
Union
A
ตัวอย่าง A B
รหัส
ชื่อ
จังหวัด
B001
แดง
นครราชสี มา
B002
ดา
กรุ งเทพฯ
B003
เขียว
สระบุรี
B004
ขาว
นครราชสี มา
B001
แดง
นครราชสี มา
B002
ฝน
กรุ งเทพฯ
B
Union
ตัวอย่าง A B
A
B
รหัส
ชื่อ
จังหวัด
B001
แดง
นครราชสี มา
B002
ดา
กรุ งเทพฯ
B003
เขียว
สระบุรี
B004
ขาว
นครราชสี มา
B001
แดง
นครราชสี มา
B002
ฝน
กรุ งเทพฯ
Union
ตัวอย่าง A B
A
B
รหัส
ชื่อ
จังหวัด
B001
แดง
นครราชสี มา
B002
ดา
กรุ งเทพฯ
B003
เขียว
สระบุรี
B004
ขาว
นครราชสี มา
B001
แดง
นครราชสี มา
B005
ฝน
กรุ งเทพฯ
Union
ตัวอย่าง
รหัส
ชื่อ
จังหวัด
B001
แดง
นครราชสี มา
B002
ดา
กรุ งเทพฯ
B003
เขียว
สระบุรี
B004
ขาว
นครราชสี มา
B005
ฝน
กรุ งเทพฯ
AUB
Intersect
คล้าย Union ต่างกันเฉพาะผลลัพธ์จะเลือก
เฉพาะรายการที่เหมือนกันจาก 2 รีเลชั่น
ตัวอย่ าง Intersect
ชื่อลูกค้า
สมาน
แองจี้
สจ็อต
ชื่อลูกค้า
Intersect สมาน
แองจี้
วิษกร
ชื่อลูกค้า
สมาน
แองจี้
Intersection
รู ปแบบ
ชื่อรี เลชัน่ แรก INTERSECT ชื่อรี เลชัน่ สอง
RS
คือสัญลักษณ์ Intersection
R และ S คือชื่อรี เลชัน่ ที่ตอ้ งการนามา Intersect กัน
Relation Relation
Intersection
ตัวอย่าง
A
รหัส
ชื่อ
จังหวัด
B001
แดง
นครราชสี มา
B002
ดา
กรุ งเทพฯ
B003
เขียว
สระบุรี
B004
ขาว
นครราชสี มา
รหัส
ชื่อ
จังหวัด
B001
แดง
นครราชสี มา
B002
ฝน
กรุ งเทพฯ
B
Intersection
ตัวอย่าง
A
B
รหัส
ชื่อ
จังหวัด
B001
แดง
นครราชสี มา
B002
ดา
กรุ งเทพฯ
B003
เขียว
สระบุรี
B004
ขาว
นครราชสี มา
B001
แดง
นครราชสี มา
B002
ฝน
กรุ งเทพฯ
Intersection
ตัวอย่าง
A
B
รหัส
ชื่อ
จังหวัด
B001
แดง
นครราชสี มา
B002
ดา
กรุ งเทพฯ
B003
เขียว
สระบุรี
B004
ขาว
นครราชสี มา
B001
แดง
นครราชสี มา
B002
ฝน
กรุ งเทพฯ
Intersection
ตัวอย่าง
A
B
รหัส
ชื่อ
จังหวัด
B001
แดง
นครราชสี มา
B002
ดา
กรุ งเทพฯ
B003
เขียว
สระบุรี
B004
ขาว
นครราชสี มา
B001
แดง
นครราชสี มา
B005
ฝน
กรุ งเทพฯ
Intersection
ตัวอย่าง
A
รหัส
ชื่อ
จังหวัด
B001
แดง
นครราชสี มา
B001
แดง
นครราชสี มา
B
AB
Difference
เป็ นการแสดงข้อมูลเฉพาะแถวของรีเลชั่นแรกทีต่ ่ างจาก
แถวข้ อมูลในรีเลชั่นทีส่ อง
ตัวอย่ าง Difference
ชื่อลูกค้า
สมาน
แองจี้
สจ็อต
ชื่อลูกค้า
Difference สมาน
แองจี้
วิษกร
ชื่อลูกค้า
สจ็อต
Difference
รู ปแบบ
ชื่อรี เลชัน่ แรก MINUS ชื่อรี เลชัน่ สอง
R-S
- คือสัญลักษณ์ Difference
R และ S คือชื่อรี เลชัน่ ที่ตอ้ งการนามา Difference กัน
Relation - Relation
Difference
ตัวอย่าง
A
รหัส
ชื่อ
จังหวัด
B001
แดง
นครราชสี มา
B002
ดา
กรุ งเทพฯ
B003
เขียว
สระบุรี
B004
ขาว
นครราชสี มา
รหัส
ชื่อ
จังหวัด
B001
แดง
นครราชสี มา
B002
ฝน
กรุ งเทพฯ
B
Difference
A
ตัวอย่าง
รหัส
ชื่อ
จังหวัด
B001
แดง
นครราชสี มา
B002
ดา
กรุ งเทพฯ
B003
เขียว
สระบุรี
B004
ขาว
นครราชสี มา
รหัส
ชื่อ
จังหวัด
B001
แดง
นครราชสี มา
B002
ฝน
กรุ งเทพฯ
B
Difference
ตัวอย่าง
รหัส
ชื่อ
จังหวัด
B002
ดา
กรุ งเทพฯ
B003
เขียว
สระบุรี
B004
ขาว
นครราชสี มา
A-B
โอเปอเรชั่นการหาร (Division Operations)
Division ()
Division
เป็ นการหาผลลัพธ์จาก 2 รี เลชัน่ โดยที่รีเลชัน่ ตัวตั้งจะมี
แอตทริ บิวต์มากกว่าอีกรี เลชัน่ ที่เป็ นตัวหาร โดยที่รีเลชัน่
ทั้งสองมีแอททริ บิวต์อย่างน้อยหนึ่ง
แอททริ บิวต์ที่เหมือนกัน
ผลลัพธ์ที่ได้ จะเป็ นค่าของแอททริ บิวต์จากรี เลชัน่ ที่มี
จานวนแอททริ บิวต์มากกว่า
ตัวอย่ าง Division
ตัวตั้ง
ตัวหาร
รหัสสิ นค้า
111110
111110
222220
รหัสผูข้ าย
00001
00002
00002
333330
333330
00001
00002
รหัสผูข้ าย
00002
รหัสสิ นค้า
111110
222220
333330
ตัวอย่ าง2 Division
ตัวตั้ง
ตัวหาร
รหัสสิ นค้า
111110
111110
222220
รหัสผูข้ าย
00001
00002
00002
333330
333330
00001
00002
รหัสผูข้ าย
00001
00002
รหัสสิ นค้า
111110
333330
Division
R
Remainder
S
RS
V
W
A
B
B
a
a
b
b
c
1
2
1
2
1
1
2
VW
A
a
b
Division
รู ปแบบ
ชื่อรี เลชัน่ DIVIDEBY ชื่อรี เลชัน่
RS
คือสัญลักษณ์ Division
R และ S คือชื่อรี เลชัน่ ที่ตอ้ งการนามา Division กัน
Relation Relation
Division
ตัวอย่าง
OP
O
d
P
SNO
PNO
PNO
S1
P1
P2
S1
P2
S1
P3
S1
P6
S2
P3
S2
P4
S3
P3
S4
P2
S4
P4
S4
P5
Division
ตัวอย่าง
OP
SNO
S1
S4
O
d
P
SNO
PNO
PNO
S1
P1
P2
S1
P2
S1
P3
S1
P6
S2
P3
S2
P4
S3
P3
S4
P2
S4
P4
S4
P5
Division
ตัวอย่าง
O
d
P
OP
SNO
PNO
PNO
S1
P1
P2
S1
P2
P4
S1
P3
S1
P6
S2
P3
S2
P4
S3
P3
S4
P2
S4
P4
S4
P5
Division
ตัวอย่าง
OP
SNO
S4
O
d
P
SNO
PNO
PNO
S1
P1
P2
S1
P2
P4
S1
P3
S1
P6
S2
P3
S2
P4
S3
P3
S4
P2
S4
P4
S4
P5
Division
ตัวอย่าง
O
d
P
OP
SNO
PNO
PNO
S1
P1
P1
S1
P2
P2
S1
P3
P3
S1
P6
P6
S2
P3
S2
P4
S3
P3
S4
P2
S4
P4
S4
P5
Division
ตัวอย่าง
OP
SNO
S1
O
d
P
SNO
PNO
PNO
S1
P1
P1
S1
P2
P2
S1
P3
P3
S1
P6
P6
S2
P3
S2
P4
S3
P3
S4
P2
S4
P4
S4
P5
โอเปอเรชั่นการ Join (Join Operations)
Join (⋈)
Join
เป็ นการจับคู่ขอ้ มูลระหว่างรี เลชัน่ ตั้งแต่ 2 รี เลชัน่ ขึ้นไป
คล้าย product ต่างกันที่การ join จะแสดงผลลัพธ์เฉพาะแถว
ที่ตรงกับเงื่อนไขที่กาหนดไว้
การ Join มีหลายแบบดังนี้
Theta join
Equijoin
Natural join
Outer join
Semijoin
Theta Join
Theta-Join (-Join) อ่านว่าทีตา้
Theta-Join เป็ นโอเปอเรชัน่ ที่นิยามถึงรี เลชัน่ ที่บรรจุไปด้วยทัปเพิลที่ตอ้ งการตาม
เงื่อนไขจากผลคูณ Cartesian ระหว่าง 2 รี เลชัน่ โดยกาหนดเงื่อนไขที่ตอ้ งการ
โดยใช้โอเปอร์เรเตอร์ <, , >, , = ,
รู ปแบบ
R FS
F คือ เงื่อนไขที่กาหนดอยูใ่ นรู ป R.ai S.bi
เมื่อ คือ โอเปอเรชันการเปรี ยบเทียบ (<, , >, , =, )
R
FS
= F (R x S)
98
Equi Join
Equi Join เป็ นส่ วนหนึ่งในชนิดของ Theta Join
Equi Join คือ การ Join แบบที่เงื่อนไขเท่ากับ = เท่านั้น
และผลลัพธ์ที่ได้คอลัมน์ที่ซ้ ากันจะถูกแสดงทั้งหมด
99
Natural Join
จับคู่ระหว่าง 2 รี เลชัน่
ผลลัพธ์ของ Natural Join จะได้แถวข้อมูลที่แอตทริ บิวต์
ที่ใช้จบั คู่มีค่าเท่ากัน และตัดแอตทริ บิวต์ที่ซ้ ากันออกไป 1
ตัว
ตัวอย่ าง Natural Join
รี เลชัน่ สิ นค้า
รหัสสิ นค้า ชื่อสิ นค้า
222220 คอมพิวเตอร์
111110 สมุด
333330 ปากกา
ราคา
30000
120
500
รี เลชัน่ การสัง่ ซื้ อ
เลขใบสั่ง รหัสลูกค้า รหัสสิ นค้า
1
C001
111110
2
C002
222220
ตัวอย่ าง Natural Join(ต่ อ)
ขั้น 1 ทางานเหมือนการทา product
เลขใบสัง่
1
1
1
2
2
2
รหัสลูกค้า
C001
C001
C001
C002
C002
C002
รหัสสิ นค้า
111110
111110
111110
222220
222220
222220
รหัสสิ นค้า
222220
111110
333330
222220
111110
333330
ชื่อสิ นค้า
คอมพิวเตอร์
สมุด
ปากกา
คอมพิวเตอร์
สมุด
ปากกา
ราคา
30000
120
500
30000
120
500
ตัวอย่ าง Natural Join(ต่ อ)
ขั้น 2 เลือกแถวที่มีค่ารหัสสิ นค้าเท่ากัน
เลขใบสัง่
1
1
1
2
2
2
รหัสลูกค้า
C001
C001
C001
C002
C002
C002
รหัสสิ นค้า
111110
111110
111110
222220
222220
222220
รหัสสิ นค้า
222220
111110
333330
222220
111110
333330
ชื่อสิ นค้า
คอมพิวเตอร์
สมุด
ปากกา
คอมพิวเตอร์
สมุด
ปากกา
ราคา
30000
120
500
30000
120
500
ตัวอย่ าง Natural Join(ต่ อ)
ขั้น 2 เลือกแถวที่มีค่ารหัสสิ นค้าเท่ากัน
เลขใบสัง่ รหัสลูกค้า รหัสสิ นค้า รหัสสิ นค้า ชื่อสิ นค้า
1
C001
111110 111110 สมุด
2
C002
222220 222220 คอมพิวเตอร์
ราคา
120
30000
ตัวอย่ าง Natural Join(ต่ อ)
ขั้น 3 ตัดแอตทริ บิวต์ที่ซ้ ากันออกไป
เลขใบสัง่ รหัสลูกค้า รหัสสิ นค้า ชื่อสิ นค้า
1
C001
111110 สมุด
2
C002
222220 คอมพิวเตอร์
ราคา
120
30000
Outer Join
เป็ นการ join ที่นอกจากจะให้ผลลัพธ์ของแถวข้อมูลที่มีเงื่อนไข
ตรงกันแล้ว ยังให้ผลลัพธ์ของแถวที่ขอ้ มูลไม่สามารถจับคู่กนั ได้
ออกมาด้วย
โดยค่าของแอตทริ บิวต์ทางฝั่งรี เลชัน่ ที่มีค่าไม่ตรงกันนั้นจะ
แสดงเป็ นค่า Null
ชนิดของ Outer Join
Left Outer Join เป็ นการ join ข้อมูล โดยยึด ตารางซ้ายมือเป็ นหลัก
Right Outer Join เป็ นการ join ข้อมูล โดยยึด ตารางขวามือเป็ นหลัก
Full Outer Join เป็ นการ join ข้อมูล โดยยึด ตารางทั้งขวามือและซ้ายมือ
ตัวอย่ าง Outer Join
รี เลชัน่ สิ นค้า
รหัสสิ นค้า ชื่อสิ นค้า
222220 คอมพิวเตอร์
111110 สมุด
333330 ปากกา
ราคา
30000
120
500
รี เลชัน่ การสัง่ ซื้ อ
เลขใบสั่ง รหัสลูกค้า รหัสสิ นค้า
1
C001
111110
2
C002
222220
ตัวอย่ าง Outer Join(ต่ อ)
เลขใบสั่ง รหัสลูกค้า รหัสสิ นค้า ชื่อสิ นค้า
1
C001
111110 สมุด
2
C002
222220 คอมพิวเตอร์
333330 ปากกา
ราคา
120
30000
500
Semi Join
R
F
S
เป็ นโอเปอเรชันที่จดั การรี เลชันจาก tuple ของ R ที่จะเป็ นบางส่ วนใน
การ join ของรี เลชัน R กับ S
สามารถเขียน Semi Join โดยการใช้การ Projection และ Join แทนได้
R F S = A (R
F S)
Semi Join
รี เลชัน่ ที่บรรจุอยูใ่ นทัปเพิล R ที่มีส่วนร่ วมในการ Join ของ R
กับ S
A
a
b
B
1
2
B
C
A
B
1
1
3
X
Y
Z
a
1
Semi Join
110
Join
T
A
a
b
U
B
1
2
B
1
1
3
C
x
y
z
T⋈U
A B C
a 1 X
a 1 y
Join
T
A
a
b
U
B
1
2
B
1
1
3
C
x
y
z
T⋈U
A B C
Join
T
A
a
b
U
B
1
2
B
1
1
3
C
x
y
z
T⋈U
A B C
a 1 x
Join
T
A
a
b
U
B
1
2
B
1
1
3
C
x
y
z
T⊳⊲U
A B C
a 1 x
Join
T
A
a
b
U
B
1
2
B
1
1
3
C
x
y
z
T⋈U
A B C
a 1 x
a 1 y
Join
T
A
a
b
U
B
1
2
B
1
1
3
C
x
y
z
T⋈U
A B C
a 1 x
a 1 y
Join
T
A
a
b
U
B
1
2
B
1
1
3
C
x
y
z
T⋈U
A B C
a 1 x
a 1 y
Join
รู ปแบบ
ชื่อรี เลชัน่ JOIN ชื่อรี เลชัน่
Relation ⋈ Relation
Join
Y
X
S#
SName
SCity
B001
Jack
Korat
B002
Tom
Bangkok
TName
Subject
PCity
Jim
Math
Korat
Noi
English
Bangkok
Lin
Physic
Korat
Join
Y
X
S#
S#
SName
SCity
B001
Jack
Korat
B002
Tom
Bangkok
SName
SCity
TName
TName
Subject
PCity
Jim
Math
Korat
Noi
English
Bangkok
Lin
Physic
Korat
Subject
PCity
Join
Y
X
S#
SName
SCity
B001
Jack
Korat
B002
Tom
Bangkok
TName
Subject
PCity
Jim
Math
Korat
Noi
English
Bangkok
Lin
Physic
Korat
S#
S#
B001
SName
SName
Jack
SCity
SCity
Korat
TName
TName
Jim
Subject
Subject
Math
PCity
PCity
Korat
B001
Jack
Korat
Lin
Physic
Korat
Join
Y
X
X⋈ Y
S#
SName
SCity
B001
Jack
Korat
B002
Tom
Bangkok
TName
Subject
PCity
Jim
Math
Korat
Noi
English
Bangkok
Lin
Physic
Korat
S#
SName
SCity
TName
Subject
PCity
B001
Jack
Korat
Jim
Math
Korat
B001
Jack
Korat
Lin
Physic
Korat
B002
Tom
Bangkok
Noi
English
Bangkok
Relational Algebra Operations
123
© Pearson Education Limited 1995, 2005
Relational Algebra Operations
124
© Pearson Education Limited 1995, 2005
แบบฝึ กหัด
Player (Name, position, age, height, weight)
จากตาราง จงเขียนความสัมพันธ์ในรู ปแบบของ Relational Algebra และหาผลลัพธ์ดงั ต่อไปนี้
1.
เมื่อต้องการแสดงข้อมูลผูเ้ ล่นที่มีอายุมากกว่า 23 ปี
2.
เมื่อต้องการแสดงข้อมูลผูเ้ ล่นที่มีความสู งตั้งแต่ 180 ขึ้นไป หรื อ มีน้ าหนักน้อยว่า 80
3.
เมื่อต้องการแสดงชื่อผูเ้ ล่นที่เป็ นกองหน้า และมีอายุนอ้ ยกว่า 25 ปี