:: Database Systems ::
วันพุธที่ 11 พฤษภาคม พ.ศ. 2559
วันอังคารที่ 10 พฤษภาคม พ.ศ. 2559
วันอังคารที่ 3 พฤษภาคม พ.ศ. 2559
วันพฤหัสบดีที่ 24 มีนาคม พ.ศ. 2559
วันจันทร์ที่ 8 กุมภาพันธ์ พ.ศ. 2559
W4 - Relational Algebra
Examples of queries in relational algebra
Select (σ)
Project (∏)
Join (⋈)
Reference
What is an inner join and outer join?
Inner Join จะสนใจข้อมูลใน Attribute ซึ่งทั้ง 2 ฝั่งมีเหมือนกัน จากนั้นจะนำ ข้อมูลใน Attribute (คอลัมป์) อื่นมารวมกันเป็นตารางใหม่
Outer Join จะยึดข้อมูลที่มีใน Attribute ของฝั่งใดฝั่งหนึ่งเป็นหลัก จากนั้นนำข้อมูลใน Attribute อื่นมารวม ซึ่งหาก tuple ใดที่มีข้อมูลอยู่ในตารางที่เป็นฝั่งที่ยึดถือไว้แต่ไม่มีอยู่ในอีกฝั่งจะมีค่าข้อมูลใน Attribute ที่ไม่มีเป็น NULL
Reference
-------------------------------------------------------------------------------------------------------------------------------------------------
What is a Division operation?
เป็น Binary Operation โดย R ÷ S มีผลลัพธ์เป็น restrictions of tuples ก็คือ ได้เฉพาะ tuples ที่มีข้อมูลใน Attribute ที่ทั้ง R และ S มีเหมือนกัน ซึ่งอยู่ใน R มี Attribute ทีมีอยู่เฉพาะใน R ไม่มีใน S
picture from http://www.cs.cornell.edu/projects/btr/bioinformaticsschool/slides/gehrke.pdf
Reference
Why it is not in the complete set of a relational algebra operation?
เนื่องจาก division operation สามารถเขียนได้โดย operation ตัวอื่น
Select (σ)
σGenre = "Sci-Fi"^ReleaseYear = 2015(Movies)SQL query
SELECT * FROM MoviesOutput
WHERE Genre = "Sci-Fi" AND ReleaseYear = 2015;
Relation ที่ประกอบด้วย Tuples ที่มาจาก Movies ซึ่งมี Genre = "Sci-Fi" และ ReleaseYear =2015
Project (∏)
∏Name, Address, Postcode(Customers)SQL query
SELECT DISTINCT Name, Address, PostcodeOutput
FROM Customers
Relation ที่ประกอบด้วยคอลัมป์ Name, Address และPostcode ที่มาจาก CustomersRename (ρ)
ρEmployee(EmData)SQL query
RENAME TABLE EmData to Employee;Output
Relation ที่มีชื่อเปลี่ยนจาก EmData เป็น EmployeeUnion (U)
∏FlightNumber(ArrivalFlight) U ∏FlightNumber(DepartureFlight)SQL query
SELECT FlightNumber FROM ArrivalFlightOutput
UNION
SELECT FlightNumber FROM DepartureFlight
Project ที่ประกอบด้วยคอลัมป์ FlightNumber ที่มาจากMinus (-)
FlightNumber ของ ArrivalFlight รวมกับ FlightNumber ของ DepartureFlight
∏Cost(Account) - ∏Cost(Management)SQL query
OutputSELECT Cost FROM AccountEXCEPT
SELECT Cost FROM Management
Project ที่ประกอบด้วยคอลัมป์ Cost ที่มาจากIntersection (∩) **uncomplete**
Account แต่ไม่มีอยู่ใน Management
∏StudentName(ComputerEngineering) ∩ ∏StudentName(ComputerClub)SQL query
SELECT StudentName FROM ComputerEngineeringOutput
INTERSECT
SELECT StudentName FROM ComputerClub
Project ที่ประกอบด้วยคอลัมป์ StudentName ที่มาจากCartesian Product (×)
ComputerEngineering และ ComputerClub
(a) CUSTOMERS table is as follows:
+----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 1 | Ramesh | 32 | Ahmedabad | 2000.00 | | 2 | Khilan | 25 | Delhi | 1500.00 | | 3 | kaushik | 23 | Kota | 2000.00 | | 4 | Chaitali | 25 | Mumbai | 6500.00 | | 5 | Hardik | 27 | Bhopal | 8500.00 | | 6 | Komal | 22 | MP | 4500.00 | | 7 | Muffy | 24 | Indore | 10000.00 | +----+----------+-----+-----------+----------+
(b) Another table is ORDERS as follows:
+-----+---------------------+-------------+--------+ |OID | DATE | CUSTOMER_ID | AMOUNT | +-----+---------------------+-------------+--------+ | 102 | 2009-10-08 00:00:00 | 3 | 3000 | | 100 | 2009-10-08 00:00:00 | 3 | 1500 | | 101 | 2009-11-20 00:00:00 | 2 | 1560 | | 103 | 2008-05-20 00:00:00 | 4 | 2060 | +-----+---------------------+-------------+--------+
∏ID,NAME,AMOUNT,DATE(CUSTOMERS×ORDERS)SQL query
SELECT ID,NAME,AMOUNT,DATE FROM CUSTOMERS, ORDERS;Output
Relation ที่ประกอบด้วยทุก Tuples ที่เป็นไปได้มาจาก CUSTOMERS และ
ORDERS มาทำการจับคู่ไขว้กันทุกรูปแบบ
+----+----------+--------+---------------------+ | ID | NAME | AMOUNT | DATE | +----+----------+--------+---------------------+ | 1 | Ramesh | 3000 | 2009-10-08 00:00:00 | | 1 | Ramesh | 1500 | 2009-10-08 00:00:00 | | 1 | Ramesh | 1560 | 2009-11-20 00:00:00 | | 1 | Ramesh | 2060 | 2008-05-20 00:00:00 | | 2 | Khilan | 3000 | 2009-10-08 00:00:00 | | 2 | Khilan | 1500 | 2009-10-08 00:00:00 | | 2 | Khilan | 1560 | 2009-11-20 00:00:00 | | 2 | Khilan | 2060 | 2008-05-20 00:00:00 | | 3 | kaushik | 3000 | 2009-10-08 00:00:00 | | 3 | kaushik | 1500 | 2009-10-08 00:00:00 | | 3 | kaushik | 1560 | 2009-11-20 00:00:00 | | 3 | kaushik | 2060 | 2008-05-20 00:00:00 | | 4 | Chaitali | 3000 | 2009-10-08 00:00:00 | | 4 | Chaitali | 1500 | 2009-10-08 00:00:00 | | 4 | Chaitali | 1560 | 2009-11-20 00:00:00 | | 4 | Chaitali | 2060 | 2008-05-20 00:00:00 | | 5 | Hardik | 3000 | 2009-10-08 00:00:00 | | 5 | Hardik | 1500 | 2009-10-08 00:00:00 | | 5 | Hardik | 1560 | 2009-11-20 00:00:00 | | 5 | Hardik | 2060 | 2008-05-20 00:00:00 | | 6 | Komal | 3000 | 2009-10-08 00:00:00 | | 6 | Komal | 1500 | 2009-10-08 00:00:00 | | 6 | Komal | 1560 | 2009-11-20 00:00:00 | | 6 | Komal | 2060 | 2008-05-20 00:00:00 | | 7 | Muffy | 3000 | 2009-10-08 00:00:00 | | 7 | Muffy | 1500 | 2009-10-08 00:00:00 | | 7 | Muffy | 1560 | 2009-11-20 00:00:00 | | 7 | Muffy | 2060 | 2008-05-20 00:00:00 | +----+----------+--------+---------------------+example data from http://www.tutorialspoint.com/sql/sql-cartesian-joins.htm
Join (⋈)
Reference
- http://cs.ulb.ac.be/public/_media/teaching/infoh417/sql2alg_eng.pdf
- http://www.tutorialspoint.com/
- http://www.cs.cornell.edu/projects/btr/bioinformaticsschool/slides/gehrke.pdf
- https://en.wikipedia.org/wiki/Relational_algebra#Natural_join_.28.E2.8B.88.29
- http://www.w3schools.com/sql/
- https://mivuletech.wordpress.com/2011/03/22/an-overview-of-relational-algebra-operators-and-their-sql-translations/
- https://timsinajaya.wordpress.com/2010/09/30/set-difference-in-sql-m-sql-server/
What is an inner join and outer join?
Inner Join จะสนใจข้อมูลใน Attribute ซึ่งทั้ง 2 ฝั่งมีเหมือนกัน จากนั้นจะนำ ข้อมูลใน Attribute (คอลัมป์) อื่นมารวมกันเป็นตารางใหม่
Outer Join จะยึดข้อมูลที่มีใน Attribute ของฝั่งใดฝั่งหนึ่งเป็นหลัก จากนั้นนำข้อมูลใน Attribute อื่นมารวม ซึ่งหาก tuple ใดที่มีข้อมูลอยู่ในตารางที่เป็นฝั่งที่ยึดถือไว้แต่ไม่มีอยู่ในอีกฝั่งจะมีค่าข้อมูลใน Attribute ที่ไม่มีเป็น NULL
Reference
-------------------------------------------------------------------------------------------------------------------------------------------------
What is a Division operation?
เป็น Binary Operation โดย R ÷ S มีผลลัพธ์เป็น restrictions of tuples ก็คือ ได้เฉพาะ tuples ที่มีข้อมูลใน Attribute ที่ทั้ง R และ S มีเหมือนกัน ซึ่งอยู่ใน R มี Attribute ทีมีอยู่เฉพาะใน R ไม่มีใน S
R ÷ S = { t[a1,...,an] : tExampleR
![]()
s
S ( (t[a1,...,an]
s)
R) }
picture from http://www.cs.cornell.edu/projects/btr/bioinformaticsschool/slides/gehrke.pdf
Reference
Why it is not in the complete set of a relational algebra operation?
เนื่องจาก division operation สามารถเขียนได้โดย operation ตัวอื่น
สมัครสมาชิก:
บทความ (Atom)


s