Relational Algebra โดยพื้นฐานแล้วมีอยู่ 6 คำสั่งได้แก่
- SELECT
- PROJECT
- UNION
- SET DIFFERENCE
- CARTESIAN PRODUCT
- RENAME
รูปภาพแสดงการสร้างตาราง |
รูปภาพแสดงการใส่ข้อมูลลงไป |
จากนั้นใส่ข้อมูลรายชื่อหนังสือ ผู้แต่ง และราคาลงไป
Select แทนด้วย สัญลักษณ์ σ ใช้สำหรับการเลือกแถว(Tuple)ที่ต้องการ เช่น
σauthor = J.R.R. Tolkien(fantasy_book_store_b)
σauthor = J.R.R. Tolkien(fantasy_book_store_b)
ภาพแสดงผลลัพธ์ที่ได้ |
จากรูปแสดงคำสั่งของ Mysql ที่เทียบเคียงกับ Relational Algebra Operations
Project แทนด้วยสัญลักษณ์ ∏ ใช้สำหรับการเลือก Column ที่เราสนใจ เช่น
∏name,price$(fantasy_book_store_a)
Project แทนด้วยสัญลักษณ์ ∏ ใช้สำหรับการเลือก Column ที่เราสนใจ เช่น
∏name,price$(fantasy_book_store_a)
ภาพแสดงผลลัพธ์ที่ได้ |
จากรูปแสดงคำสั่งของ Mysql ที่เทียบเคียงกับ Relational Algebra Operations
Union แทนด้วยสัญลักษณ์ U ใช้สำหรับการเลือกข้อมูลของทั้ง 2 ตารางทั้งหมดโดยตัวที่มีซ้ำกันนั้นจะแสดงค่าออกมาแค่ครั้งเดียว เช่น
∏name(fantasy_book_store_a) U ∏name(fantasy_book_store_b)
∏name(fantasy_book_store_a) U ∏name(fantasy_book_store_b)
ภาพแสดงผลลัพธ์ที่ได้ |
จากรูปจะเห็นว่า The Hobbit ที่มีอยู่ทั้ง 2 ร้านแต่จะแสดงเพียงแค่ครั้งเดียวเพราะเนื่องจากชื่อซ้ำกัน
Rename แทนด้วยสัญลักษณ์ ρ ใช้สำหรับเปลี่ยนชื่อตาราง หรือ attribute ในตาราง เช่น
ρsa(fantasy_book_store_a) คือเปลี่ยนชื่อตาราง fantasy_book_store_a เป็น sa
ρ(name_a,author,price_a)(fantasy_book_store_a) คือเปลี่ยนชื่อ attribute ในตาราง fantasy_book_store_a
Set Difference แทนด้วยสัญลักษณ์ - ใช้สำหรับแสดงค่าในตารางฝั่งเดียวและไม่เอาข้อมูลที่มีความเกี่ยวข้องกัน เช่น
∏name_a(sa) - ∏name_b(sb)
ρsa(fantasy_book_store_a) คือเปลี่ยนชื่อตาราง fantasy_book_store_a เป็น sa
ρ(name_a,author,price_a)(fantasy_book_store_a) คือเปลี่ยนชื่อ attribute ในตาราง fantasy_book_store_a
Set Difference แทนด้วยสัญลักษณ์ - ใช้สำหรับแสดงค่าในตารางฝั่งเดียวและไม่เอาข้อมูลที่มีความเกี่ยวข้องกัน เช่น
∏name_a(sa) - ∏name_b(sb)
ภาพแสดงการใช้คำสั่ง set difference |
ภาพแสดงผลลัพธ์ที่ได้ |
จากรูปแสดงคำสั่งของ Mysql ที่เทียบเคียงกับ Relational Algebra Operations
Cartesian Product แทนที่ด้วยสัญลักษณ์ x ใช้สำหรับนำข้อมูลทั้ง 2 ตารางมา cross กันซึ่งค่าที่ได้ออกมาจะเป็นการจับคู่กันทั้ง 2 ตารางซึ่งจะไม่มีประโยชน์อะไร เราจึงต้องใช้การ select และ project เข้ามาช่วย เช่น
∏name_a(σname_a=name_b(sa x sb))
Cartesian Product แทนที่ด้วยสัญลักษณ์ x ใช้สำหรับนำข้อมูลทั้ง 2 ตารางมา cross กันซึ่งค่าที่ได้ออกมาจะเป็นการจับคู่กันทั้ง 2 ตารางซึ่งจะไม่มีประโยชน์อะไร เราจึงต้องใช้การ select และ project เข้ามาช่วย เช่น
∏name_a(σname_a=name_b(sa x sb))
ภาพแสดงผลลัพธ์ที่ได้ |
จากรูปแสดงคำสั่งของ Mysql ที่เทียบเคียงกับ Relational Algebra Operations
What is an inner join? outer join?
Ans Inner join นั้นคือการนำค่าระหว่าง set หรือข้อมูลที่มีการซ้อนทับกันหรือเหมือนกัน ส่วน Outer join นั้นคือการเอาค่าทั้งหมดของระหว่าง set นั้นเอง และยังมี join ประเภทอื่นๆอีกมากมาย
What is a division operation?
Ans การทำ division operation คือการนำเอาค่าของ Attribute ตารางที่เป็น Divisor(S) ไปเทียบกับค่า Attributeในตาราง Dividend(R) เมื่อมีค่าที่เหมือนกันเราจะนำเอาค่านั้นออกมาแสดงเป็นผลลัพธ์ดังตัวอย่างที่เขียนในด้านล่างนี้
กำหนดให้ตาราง R คือ
+--------+-------+
| A | B |
+--------+-------+
| a | 1 |
| b | 2 |
| a | 2 |
| p | 3 |
| p | 4 |
+--------+-------+
กำหนดให้ตาราง S คือ
+------+
| B |
+------+
| 2 |
| 3 |
+------+
R/S จะได้ค่า
+------+
| A |
+------+
| b |
| a |
| p |
+------+
จากตัวอย่างที่ได้เห็นไปเราสามารถนำ division operation ไปใช้ต่อยอดในการหาข้อมูลจากฐานข้อมูลที่มีขนาดใหญ่ได้ เช่น เราต้องการอยากรู้ว่า ผู้แต่งหนังสือคนนี้ แต่งหนังสือเรื่องอื่นอะไรบ้าง เราก็นำชื่อของผู้แต่ง (Divisor) ไปหารกับ ฐานข้อมูลที่เราเก็บรายชื่อหนังสือ (Dividend) ก็จะได้ผลลัพธ์รายชื่อหนังสือที่ผู้แต่งคนนี้เคยแต่งไว้ออกมา
อ้างอิง
http://www.srisangworn.go.th/home/databaselearnx/ms2t2-2.htm
http://www.go4expert.com/articles/relational-algebra-operations-sql-t21166/
http://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins
http://www.techonthenet.com/mysql/tables/alter_table.php
Ans Inner join นั้นคือการนำค่าระหว่าง set หรือข้อมูลที่มีการซ้อนทับกันหรือเหมือนกัน ส่วน Outer join นั้นคือการเอาค่าทั้งหมดของระหว่าง set นั้นเอง และยังมี join ประเภทอื่นๆอีกมากมาย
รูปภาพแสดงการ join ต่างๆ |
What is a division operation?
Ans การทำ division operation คือการนำเอาค่าของ Attribute ตารางที่เป็น Divisor(S) ไปเทียบกับค่า Attributeในตาราง Dividend(R) เมื่อมีค่าที่เหมือนกันเราจะนำเอาค่านั้นออกมาแสดงเป็นผลลัพธ์ดังตัวอย่างที่เขียนในด้านล่างนี้
กำหนดให้ตาราง R คือ
+--------+-------+
| A | B |
+--------+-------+
| a | 1 |
| b | 2 |
| a | 2 |
| p | 3 |
| p | 4 |
+--------+-------+
กำหนดให้ตาราง S คือ
+------+
| B |
+------+
| 2 |
| 3 |
+------+
R/S จะได้ค่า
+------+
| A |
+------+
| b |
| a |
| p |
+------+
จากตัวอย่างที่ได้เห็นไปเราสามารถนำ division operation ไปใช้ต่อยอดในการหาข้อมูลจากฐานข้อมูลที่มีขนาดใหญ่ได้ เช่น เราต้องการอยากรู้ว่า ผู้แต่งหนังสือคนนี้ แต่งหนังสือเรื่องอื่นอะไรบ้าง เราก็นำชื่อของผู้แต่ง (Divisor) ไปหารกับ ฐานข้อมูลที่เราเก็บรายชื่อหนังสือ (Dividend) ก็จะได้ผลลัพธ์รายชื่อหนังสือที่ผู้แต่งคนนี้เคยแต่งไว้ออกมา
อ้างอิง
http://www.srisangworn.go.th/home/databaselearnx/ms2t2-2.htm
http://www.go4expert.com/articles/relational-algebra-operations-sql-t21166/
http://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins
http://www.techonthenet.com/mysql/tables/alter_table.php
ไม่มีความคิดเห็น:
แสดงความคิดเห็น