Introduction to Relational Algebra and Relational Calculus
by K. Yue
1. Introduction
2. Introduction to Relational algebra
Example:
See toyu_Ex.pdf and toyu_RA_sol_even.pdf
3. Introduction to Relational Calculus
Example:
See toyu_Ex.pdf and toyu_RC_sol_odd.pdf
4. Relational Algebra
4.1 Basic Operations
4.1.1 Select
σcond(R) = {t | t ∈ R and cond}, or simply
σcond(R) = {t | t ∈ R, cond}
Example: All information of students majoring in CSCI.
σmajor='CSCI'(Student)
+--------+-------+-------+-------+-------+---------+---------+
| stuId | fname | lname | major | minor | credits | advisor |
+--------+-------+-------+-------+-------+---------+---------+
| 100000 | Tony | Hawk | CSCI | CINF | 40 | 1011 |
| 100001 | Mary | Hawk | CSCI | CINF | 35 | 1011 |
| 100002 | David | Hawk | CSCI | ITEC | 66 | 1011 |
+--------+-------+-------+-------+-------+---------+---------+
3 rows
In SQL, this is just:
SELECT *
FROM Student
WHERE major = 'CSCI';
4.1.2 Project
πc1, .., cm(R) = {s | ∃t ∈ R (t(ci) = s(ci), for 1 <= i <= m)},
or simply
πc1, .., cm(R) = {s | t ∈ R (t(ci) = s(ci), for 1 <= i <= m)}
Example: Names and majors of students
πLName, FName, Major(Student):
+-----------+---------+-------+
| FName | LName | Major |
+-----------+---------+-------+
| Tony | Hawk | CSCI |
| Mary | Hawk | CSCI |
| David | Hawk | CSCI |
| Catherine | Lim | ITEC |
| Larry | Johnson | ITEC |
| Linda | Johnson | CINF |
| Lillian | Johnson | CINF |
| Ben | Zico | NULL |
| Bill | Ching | ARTS |
| Linda | King | ARTS |
+-----------+---------+-------+
10 rows
4.1.3.Cartesian Product
Example:
R(A,B,C) has three tuples. S(A,D) has four tuples.
The result of R * S always has 12 tuples with the schema (R.A, B, C, S.A, D).
Example: in toyu
student:
+--------+-----------+---------+-------+-------+---------+---------+
| stuId | fname | lname | major | minor | credits | advisor |
+--------+-----------+---------+-------+-------+---------+---------+
| 100000 | Tony | Hawk | CSCI | CINF | 40 | 1011 |
| 100001 | Mary | Hawk | CSCI | CINF | 35 | 1011 |
| 100002 | David | Hawk | CSCI | ITEC | 66 | 1011 |
| 100003 | Catherine | Lim | ITEC | CINF | 20 | 1017 |
| 100004 | Larry | Johnson | ITEC | NULL | 66 | 1017 |
| 100005 | Linda | Johnson | CINF | ENGL | 13 | 1015 |
| 100006 | Lillian | Johnson | CINF | ITEC | 18 | 1015 |
| 100007 | Ben | Zico | NULL | NULL | 16 | NULL |
| 100008 | Bill | Ching | ARTS | ENGL | 90 | 1018 |
| 100009 | Linda | King | ARTS | CSCI | 125 | 1018 |
+--------+-----------+---------+-------+-------+---------+---------+
10 rows in set
enroll:
+--------+---------+-------+----------+
| stuId | classId | grade | n_alerts |
+--------+---------+-------+----------+
| 100000 | 10000 | A | 0 |
| 100001 | 10000 | NULL | NULL |
| 100002 | 10000 | B- | 3 |
| 100000 | 10001 | A | 2 |
| 100001 | 10001 | A- | 0 |
| 100000 | 10002 | B+ | 1 |
| 100002 | 10002 | B+ | 2 |
| 100000 | 10003 | C | 0 |
| 100002 | 10003 | D | 4 |
| 100004 | 10003 | A | 0 |
| 100005 | 10003 | NULL | NULL |
| 100000 | 10004 | A- | 1 |
| 100004 | 10004 | B+ | NULL |
| 100005 | 10004 | A- | 0 |
| 100006 | 10004 | C+ | NULL |
| 100005 | 10005 | A- | 0 |
| 100006 | 10005 | A | NULL |
| 100005 | 10006 | B+ | NULL |
| 100007 | 10007 | F | 4 |
| 100008 | 10007 | C- | 0 |
| 100007 | 10008 | A- | 0 |
| 100000 | 11001 | D | 4 |
+--------+---------+-------+----------+
22 rows
student * enroll:
+--------+-----------+---------+-------+-------+---------+---------+--------+---------+-------+----------+
| stuId | fname | lname | major | minor | credits | advisor | stuId | classId | grade | n_alerts |
+--------+-----------+---------+-------+-------+---------+---------+--------+---------+-------+----------+
| 100000 | Tony | Hawk | CSCI | CINF | 40 | 1011 | 100000 | 10000 | A | 0 |
| 100001 | Mary | Hawk | CSCI | CINF | 35 | 1011 | 100000 | 10000 | A | 0 |
| 100002 | David | Hawk | CSCI | ITEC | 66 | 1011 | 100000 | 10000 | A | 0 |
| 100003 | Catherine | Lim | ITEC | CINF | 20 | 1017 | 100000 | 10000 | A | 0 |
| 100004 | Larry | Johnson | ITEC | NULL | 66 | 1017 | 100000 | 10000 | A | 0 |
| 100005 | Linda | Johnson | CINF | ENGL | 13 | 1015 | 100000 | 10000 | A | 0 |
| 100006 | Lillian | Johnson | CINF | ITEC | 18 | 1015 | 100000 | 10000 | A | 0 |
| 100007 | Ben | Zico | NULL | NULL | 16 | NULL | 100000 | 10000 | A | 0 |
| 100008 | Bill | Ching | ARTS | ENGL | 90 | 1018 | 100000 | 10000 | A | 0 |
| 100009 | Linda | King | ARTS | CSCI | 125 | 1018 | 100000 | 10000 | A | 0 |
| 100000 | Tony | Hawk | CSCI | CINF | 40 | 1011 | 100001 | 10000 | NULL | NULL |
| 100001 | Mary | Hawk | CSCI | CINF | 35 | 1011 | 100001 | 10000 | NULL | NULL |
| 100002 | David | Hawk | CSCI | ITEC | 66 | 1011 | 100001 | 10000 | NULL | NULL |
| 100003 | Catherine | Lim | ITEC | CINF | 20 | 1017 | 100001 | 10000 | NULL | NULL |
| 100004 | Larry | Johnson | ITEC | NULL | 66 | 1017 | 100001 | 10000 | NULL | NULL |
| 100005 | Linda | Johnson | CINF | ENGL | 13 | 1015 | 100001 | 10000 | NULL | NULL |
| 100006 | Lillian | Johnson | CINF | ITEC | 18 | 1015 | 100001 | 10000 | NULL | NULL |
| 100007 | Ben | Zico | NULL | NULL | 16 | NULL | 100001 | 10000 | NULL | NULL |
| 100008 | Bill | Ching | ARTS | ENGL | 90 | 1018 | 100001 | 10000 | NULL | NULL |
| 100009 | Linda | King | ARTS | CSCI | 125 | 1018 | 100001 | 10000 | NULL | NULL |
| 100000 | Tony | Hawk | CSCI | CINF | 40 | 1011 | 100002 | 10000 | B- | 3 |
| 100001 | Mary | Hawk | CSCI | CINF | 35 | 1011 | 100002 | 10000 | B- | 3 |
| 100002 | David | Hawk | CSCI | ITEC | 66 | 1011 | 100002 | 10000 | B- | 3 |
| 100003 | Catherine | Lim | ITEC | CINF | 20 | 1017 | 100002 | 10000 | B- | 3 |
| 100004 | Larry | Johnson | ITEC | NULL | 66 | 1017 | 100002 | 10000 | B- | 3 |
| 100005 | Linda | Johnson | CINF | ENGL | 13 | 1015 | 100002 | 10000 | B- | 3 |
| 100006 | Lillian | Johnson | CINF | ITEC | 18 | 1015 | 100002 | 10000 | B- | 3 |
| 100007 | Ben | Zico | NULL | NULL | 16 | NULL | 100002 | 10000 | B- | 3 |
| 100008 | Bill | Ching | ARTS | ENGL | 90 | 1018 | 100002 | 10000 | B- | 3 |
| 100009 | Linda | King | ARTS | CSCI | 125 | 1018 | 100002 | 10000 | B- | 3 |
| 100000 | Tony | Hawk | CSCI | CINF | 40 | 1011 | 100000 | 10001 | A | 2 |
| 100001 | Mary | Hawk | CSCI | CINF | 35 | 1011 | 100000 | 10001 | A | 2 |
| 100002 | David | Hawk | CSCI | ITEC | 66 | 1011 | 100000 | 10001 | A | 2 |
| 100003 | Catherine | Lim | ITEC | CINF | 20 | 1017 | 100000 | 10001 | A | 2 |
| 100004 | Larry | Johnson | ITEC | NULL | 66 | 1017 | 100000 | 10001 | A | 2 |
| 100005 | Linda | Johnson | CINF | ENGL | 13 | 1015 | 100000 | 10001 | A | 2 |
| 100006 | Lillian | Johnson | CINF | ITEC | 18 | 1015 | 100000 | 10001 | A | 2 |
| 100007 | Ben | Zico | NULL | NULL | 16 | NULL | 100000 | 10001 | A | 2 |
| 100008 | Bill | Ching | ARTS | ENGL | 90 | 1018 | 100000 | 10001 | A | 2 |
| 100009 | Linda | King | ARTS | CSCI | 125 | 1018 | 100000 | 10001 | A | 2 |
| 100000 | Tony | Hawk | CSCI | CINF | 40 | 1011 | 100001 | 10001 | A- | 0 |
| 100001 | Mary | Hawk | CSCI | CINF | 35 | 1011 | 100001 | 10001 | A- | 0 |
| 100002 | David | Hawk | CSCI | ITEC | 66 | 1011 | 100001 | 10001 | A- | 0 |
| 100003 | Catherine | Lim | ITEC | CINF | 20 | 1017 | 100001 | 10001 | A- | 0 |
| 100004 | Larry | Johnson | ITEC | NULL | 66 | 1017 | 100001 | 10001 | A- | 0 |
| 100005 | Linda | Johnson | CINF | ENGL | 13 | 1015 | 100001 | 10001 | A- | 0 |
| 100006 | Lillian | Johnson | CINF | ITEC | 18 | 1015 | 100001 | 10001 | A- | 0 |
| 100007 | Ben | Zico | NULL | NULL | 16 | NULL | 100001 | 10001 | A- | 0 |
| 100008 | Bill | Ching | ARTS | ENGL | 90 | 1018 | 100001 | 10001 | A- | 0 |
| 100009 | Linda | King | ARTS | CSCI | 125 | 1018 | 100001 | 10001 | A- | 0 |
| 100000 | Tony | Hawk | CSCI | CINF | 40 | 1011 | 100000 | 10002 | B+ | 1 |
| 100001 | Mary | Hawk | CSCI | CINF | 35 | 1011 | 100000 | 10002 | B+ | 1 |
| 100002 | David | Hawk | CSCI | ITEC | 66 | 1011 | 100000 | 10002 | B+ | 1 |
| 100003 | Catherine | Lim | ITEC | CINF | 20 | 1017 | 100000 | 10002 | B+ | 1 |
| 100004 | Larry | Johnson | ITEC | NULL | 66 | 1017 | 100000 | 10002 | B+ | 1 |
| 100005 | Linda | Johnson | CINF | ENGL | 13 | 1015 | 100000 | 10002 | B+ | 1 |
| 100006 | Lillian | Johnson | CINF | ITEC | 18 | 1015 | 100000 | 10002 | B+ | 1 |
| 100007 | Ben | Zico | NULL | NULL | 16 | NULL | 100000 | 10002 | B+ | 1 |
| 100008 | Bill | Ching | ARTS | ENGL | 90 | 1018 | 100000 | 10002 | B+ | 1 |
| 100009 | Linda | King | ARTS | CSCI | 125 | 1018 | 100000 | 10002 | B+ | 1 |
| 100000 | Tony | Hawk | CSCI | CINF | 40 | 1011 | 100002 | 10002 | B+ | 2 |
| 100001 | Mary | Hawk | CSCI | CINF | 35 | 1011 | 100002 | 10002 | B+ | 2 |
| 100002 | David | Hawk | CSCI | ITEC | 66 | 1011 | 100002 | 10002 | B+ | 2 |
| 100003 | Catherine | Lim | ITEC | CINF | 20 | 1017 | 100002 | 10002 | B+ | 2 |
| 100004 | Larry | Johnson | ITEC | NULL | 66 | 1017 | 100002 | 10002 | B+ | 2 |
| 100005 | Linda | Johnson | CINF | ENGL | 13 | 1015 | 100002 | 10002 | B+ | 2 |
| 100006 | Lillian | Johnson | CINF | ITEC | 18 | 1015 | 100002 | 10002 | B+ | 2 |
| 100007 | Ben | Zico | NULL | NULL | 16 | NULL | 100002 | 10002 | B+ | 2 |
| 100008 | Bill | Ching | ARTS | ENGL | 90 | 1018 | 100002 | 10002 | B+ | 2 |
| 100009 | Linda | King | ARTS | CSCI | 125 | 1018 | 100002 | 10002 | B+ | 2 |
| 100000 | Tony | Hawk | CSCI | CINF | 40 | 1011 | 100000 | 10003 | C | 0 |
| 100001 | Mary | Hawk | CSCI | CINF | 35 | 1011 | 100000 | 10003 | C | 0 |
| 100002 | David | Hawk | CSCI | ITEC | 66 | 1011 | 100000 | 10003 | C | 0 |
| 100003 | Catherine | Lim | ITEC | CINF | 20 | 1017 | 100000 | 10003 | C | 0 |
| 100004 | Larry | Johnson | ITEC | NULL | 66 | 1017 | 100000 | 10003 | C | 0 |
| 100005 | Linda | Johnson | CINF | ENGL | 13 | 1015 | 100000 | 10003 | C | 0 |
| 100006 | Lillian | Johnson | CINF | ITEC | 18 | 1015 | 100000 | 10003 | C | 0 |
| 100007 | Ben | Zico | NULL | NULL | 16 | NULL | 100000 | 10003 | C | 0 |
| 100008 | Bill | Ching | ARTS | ENGL | 90 | 1018 | 100000 | 10003 | C | 0 |
| 100009 | Linda | King | ARTS | CSCI | 125 | 1018 | 100000 | 10003 | C | 0 |
| 100000 | Tony | Hawk | CSCI | CINF | 40 | 1011 | 100002 | 10003 | D | 4 |
| 100001 | Mary | Hawk | CSCI | CINF | 35 | 1011 | 100002 | 10003 | D | 4 |
| 100002 | David | Hawk | CSCI | ITEC | 66 | 1011 | 100002 | 10003 | D | 4 |
| 100003 | Catherine | Lim | ITEC | CINF | 20 | 1017 | 100002 | 10003 | D | 4 |
| 100004 | Larry | Johnson | ITEC | NULL | 66 | 1017 | 100002 | 10003 | D | 4 |
| 100005 | Linda | Johnson | CINF | ENGL | 13 | 1015 | 100002 | 10003 | D | 4 |
| 100006 | Lillian | Johnson | CINF | ITEC | 18 | 1015 | 100002 | 10003 | D | 4 |
| 100007 | Ben | Zico | NULL | NULL | 16 | NULL | 100002 | 10003 | D | 4 |
| 100008 | Bill | Ching | ARTS | ENGL | 90 | 1018 | 100002 | 10003 | D | 4 |
| 100009 | Linda | King | ARTS | CSCI | 125 | 1018 | 100002 | 10003 | D | 4 |
| 100000 | Tony | Hawk | CSCI | CINF | 40 | 1011 | 100004 | 10003 | A | 0 |
| 100001 | Mary | Hawk | CSCI | CINF | 35 | 1011 | 100004 | 10003 | A | 0 |
| 100002 | David | Hawk | CSCI | ITEC | 66 | 1011 | 100004 | 10003 | A | 0 |
| 100003 | Catherine | Lim | ITEC | CINF | 20 | 1017 | 100004 | 10003 | A | 0 |
| 100004 | Larry | Johnson | ITEC | NULL | 66 | 1017 | 100004 | 10003 | A | 0 |
| 100005 | Linda | Johnson | CINF | ENGL | 13 | 1015 | 100004 | 10003 | A | 0 |
| 100006 | Lillian | Johnson | CINF | ITEC | 18 | 1015 | 100004 | 10003 | A | 0 |
| 100007 | Ben | Zico | NULL | NULL | 16 | NULL | 100004 | 10003 | A | 0 |
| 100008 | Bill | Ching | ARTS | ENGL | 90 | 1018 | 100004 | 10003 | A | 0 |
| 100009 | Linda | King | ARTS | CSCI | 125 | 1018 | 100004 | 10003 | A | 0 |
| 100000 | Tony | Hawk | CSCI | CINF | 40 | 1011 | 100005 | 10003 | NULL | NULL |
| 100001 | Mary | Hawk | CSCI | CINF | 35 | 1011 | 100005 | 10003 | NULL | NULL |
| 100002 | David | Hawk | CSCI | ITEC | 66 | 1011 | 100005 | 10003 | NULL | NULL |
| 100003 | Catherine | Lim | ITEC | CINF | 20 | 1017 | 100005 | 10003 | NULL | NULL |
| 100004 | Larry | Johnson | ITEC | NULL | 66 | 1017 | 100005 | 10003 | NULL | NULL |
| 100005 | Linda | Johnson | CINF | ENGL | 13 | 1015 | 100005 | 10003 | NULL | NULL |
| 100006 | Lillian | Johnson | CINF | ITEC | 18 | 1015 | 100005 | 10003 | NULL | NULL |
| 100007 | Ben | Zico | NULL | NULL | 16 | NULL | 100005 | 10003 | NULL | NULL |
| 100008 | Bill | Ching | ARTS | ENGL | 90 | 1018 | 100005 | 10003 | NULL | NULL |
| 100009 | Linda | King | ARTS | CSCI | 125 | 1018 | 100005 | 10003 | NULL | NULL |
| 100000 | Tony | Hawk | CSCI | CINF | 40 | 1011 | 100000 | 10004 | A- | 1 |
| 100001 | Mary | Hawk | CSCI | CINF | 35 | 1011 | 100000 | 10004 | A- | 1 |
| 100002 | David | Hawk | CSCI | ITEC | 66 | 1011 | 100000 | 10004 | A- | 1 |
| 100003 | Catherine | Lim | ITEC | CINF | 20 | 1017 | 100000 | 10004 | A- | 1 |
| 100004 | Larry | Johnson | ITEC | NULL | 66 | 1017 | 100000 | 10004 | A- | 1 |
| 100005 | Linda | Johnson | CINF | ENGL | 13 | 1015 | 100000 | 10004 | A- | 1 |
| 100006 | Lillian | Johnson | CINF | ITEC | 18 | 1015 | 100000 | 10004 | A- | 1 |
| 100007 | Ben | Zico | NULL | NULL | 16 | NULL | 100000 | 10004 | A- | 1 |
| 100008 | Bill | Ching | ARTS | ENGL | 90 | 1018 | 100000 | 10004 | A- | 1 |
| 100009 | Linda | King | ARTS | CSCI | 125 | 1018 | 100000 | 10004 | A- | 1 |
| 100000 | Tony | Hawk | CSCI | CINF | 40 | 1011 | 100004 | 10004 | B+ | NULL |
| 100001 | Mary | Hawk | CSCI | CINF | 35 | 1011 | 100004 | 10004 | B+ | NULL |
| 100002 | David | Hawk | CSCI | ITEC | 66 | 1011 | 100004 | 10004 | B+ | NULL |
| 100003 | Catherine | Lim | ITEC | CINF | 20 | 1017 | 100004 | 10004 | B+ | NULL |
| 100004 | Larry | Johnson | ITEC | NULL | 66 | 1017 | 100004 | 10004 | B+ | NULL |
| 100005 | Linda | Johnson | CINF | ENGL | 13 | 1015 | 100004 | 10004 | B+ | NULL |
| 100006 | Lillian | Johnson | CINF | ITEC | 18 | 1015 | 100004 | 10004 | B+ | NULL |
| 100007 | Ben | Zico | NULL | NULL | 16 | NULL | 100004 | 10004 | B+ | NULL |
| 100008 | Bill | Ching | ARTS | ENGL | 90 | 1018 | 100004 | 10004 | B+ | NULL |
| 100009 | Linda | King | ARTS | CSCI | 125 | 1018 | 100004 | 10004 | B+ | NULL |
| 100000 | Tony | Hawk | CSCI | CINF | 40 | 1011 | 100005 | 10004 | A- | 0 |
| 100001 | Mary | Hawk | CSCI | CINF | 35 | 1011 | 100005 | 10004 | A- | 0 |
| 100002 | David | Hawk | CSCI | ITEC | 66 | 1011 | 100005 | 10004 | A- | 0 |
| 100003 | Catherine | Lim | ITEC | CINF | 20 | 1017 | 100005 | 10004 | A- | 0 |
| 100004 | Larry | Johnson | ITEC | NULL | 66 | 1017 | 100005 | 10004 | A- | 0 |
| 100005 | Linda | Johnson | CINF | ENGL | 13 | 1015 | 100005 | 10004 | A- | 0 |
| 100006 | Lillian | Johnson | CINF | ITEC | 18 | 1015 | 100005 | 10004 | A- | 0 |
| 100007 | Ben | Zico | NULL | NULL | 16 | NULL | 100005 | 10004 | A- | 0 |
| 100008 | Bill | Ching | ARTS | ENGL | 90 | 1018 | 100005 | 10004 | A- | 0 |
| 100009 | Linda | King | ARTS | CSCI | 125 | 1018 | 100005 | 10004 | A- | 0 |
| 100000 | Tony | Hawk | CSCI | CINF | 40 | 1011 | 100006 | 10004 | C+ | NULL |
| 100001 | Mary | Hawk | CSCI | CINF | 35 | 1011 | 100006 | 10004 | C+ | NULL |
| 100002 | David | Hawk | CSCI | ITEC | 66 | 1011 | 100006 | 10004 | C+ | NULL |
| 100003 | Catherine | Lim | ITEC | CINF | 20 | 1017 | 100006 | 10004 | C+ | NULL |
| 100004 | Larry | Johnson | ITEC | NULL | 66 | 1017 | 100006 | 10004 | C+ | NULL |
| 100005 | Linda | Johnson | CINF | ENGL | 13 | 1015 | 100006 | 10004 | C+ | NULL |
| 100006 | Lillian | Johnson | CINF | ITEC | 18 | 1015 | 100006 | 10004 | C+ | NULL |
| 100007 | Ben | Zico | NULL | NULL | 16 | NULL | 100006 | 10004 | C+ | NULL |
| 100008 | Bill | Ching | ARTS | ENGL | 90 | 1018 | 100006 | 10004 | C+ | NULL |
| 100009 | Linda | King | ARTS | CSCI | 125 | 1018 | 100006 | 10004 | C+ | NULL |
| 100000 | Tony | Hawk | CSCI | CINF | 40 | 1011 | 100005 | 10005 | A- | 0 |
| 100001 | Mary | Hawk | CSCI | CINF | 35 | 1011 | 100005 | 10005 | A- | 0 |
| 100002 | David | Hawk | CSCI | ITEC | 66 | 1011 | 100005 | 10005 | A- | 0 |
| 100003 | Catherine | Lim | ITEC | CINF | 20 | 1017 | 100005 | 10005 | A- | 0 |
| 100004 | Larry | Johnson | ITEC | NULL | 66 | 1017 | 100005 | 10005 | A- | 0 |
| 100005 | Linda | Johnson | CINF | ENGL | 13 | 1015 | 100005 | 10005 | A- | 0 |
| 100006 | Lillian | Johnson | CINF | ITEC | 18 | 1015 | 100005 | 10005 | A- | 0 |
| 100007 | Ben | Zico | NULL | NULL | 16 | NULL | 100005 | 10005 | A- | 0 |
| 100008 | Bill | Ching | ARTS | ENGL | 90 | 1018 | 100005 | 10005 | A- | 0 |
| 100009 | Linda | King | ARTS | CSCI | 125 | 1018 | 100005 | 10005 | A- | 0 |
| 100000 | Tony | Hawk | CSCI | CINF | 40 | 1011 | 100006 | 10005 | A | NULL |
| 100001 | Mary | Hawk | CSCI | CINF | 35 | 1011 | 100006 | 10005 | A | NULL |
| 100002 | David | Hawk | CSCI | ITEC | 66 | 1011 | 100006 | 10005 | A | NULL |
| 100003 | Catherine | Lim | ITEC | CINF | 20 | 1017 | 100006 | 10005 | A | NULL |
| 100004 | Larry | Johnson | ITEC | NULL | 66 | 1017 | 100006 | 10005 | A | NULL |
| 100005 | Linda | Johnson | CINF | ENGL | 13 | 1015 | 100006 | 10005 | A | NULL |
| 100006 | Lillian | Johnson | CINF | ITEC | 18 | 1015 | 100006 | 10005 | A | NULL |
| 100007 | Ben | Zico | NULL | NULL | 16 | NULL | 100006 | 10005 | A | NULL |
| 100008 | Bill | Ching | ARTS | ENGL | 90 | 1018 | 100006 | 10005 | A | NULL |
| 100009 | Linda | King | ARTS | CSCI | 125 | 1018 | 100006 | 10005 | A | NULL |
| 100000 | Tony | Hawk | CSCI | CINF | 40 | 1011 | 100005 | 10006 | B+ | NULL |
| 100001 | Mary | Hawk | CSCI | CINF | 35 | 1011 | 100005 | 10006 | B+ | NULL |
| 100002 | David | Hawk | CSCI | ITEC | 66 | 1011 | 100005 | 10006 | B+ | NULL |
| 100003 | Catherine | Lim | ITEC | CINF | 20 | 1017 | 100005 | 10006 | B+ | NULL |
| 100004 | Larry | Johnson | ITEC | NULL | 66 | 1017 | 100005 | 10006 | B+ | NULL |
| 100005 | Linda | Johnson | CINF | ENGL | 13 | 1015 | 100005 | 10006 | B+ | NULL |
| 100006 | Lillian | Johnson | CINF | ITEC | 18 | 1015 | 100005 | 10006 | B+ | NULL |
| 100007 | Ben | Zico | NULL | NULL | 16 | NULL | 100005 | 10006 | B+ | NULL |
| 100008 | Bill | Ching | ARTS | ENGL | 90 | 1018 | 100005 | 10006 | B+ | NULL |
| 100009 | Linda | King | ARTS | CSCI | 125 | 1018 | 100005 | 10006 | B+ | NULL |
| 100000 | Tony | Hawk | CSCI | CINF | 40 | 1011 | 100007 | 10007 | F | 4 |
| 100001 | Mary | Hawk | CSCI | CINF | 35 | 1011 | 100007 | 10007 | F | 4 |
| 100002 | David | Hawk | CSCI | ITEC | 66 | 1011 | 100007 | 10007 | F | 4 |
| 100003 | Catherine | Lim | ITEC | CINF | 20 | 1017 | 100007 | 10007 | F | 4 |
| 100004 | Larry | Johnson | ITEC | NULL | 66 | 1017 | 100007 | 10007 | F | 4 |
| 100005 | Linda | Johnson | CINF | ENGL | 13 | 1015 | 100007 | 10007 | F | 4 |
| 100006 | Lillian | Johnson | CINF | ITEC | 18 | 1015 | 100007 | 10007 | F | 4 |
| 100007 | Ben | Zico | NULL | NULL | 16 | NULL | 100007 | 10007 | F | 4 |
| 100008 | Bill | Ching | ARTS | ENGL | 90 | 1018 | 100007 | 10007 | F | 4 |
| 100009 | Linda | King | ARTS | CSCI | 125 | 1018 | 100007 | 10007 | F | 4 |
| 100000 | Tony | Hawk | CSCI | CINF | 40 | 1011 | 100008 | 10007 | C- | 0 |
| 100001 | Mary | Hawk | CSCI | CINF | 35 | 1011 | 100008 | 10007 | C- | 0 |
| 100002 | David | Hawk | CSCI | ITEC | 66 | 1011 | 100008 | 10007 | C- | 0 |
| 100003 | Catherine | Lim | ITEC | CINF | 20 | 1017 | 100008 | 10007 | C- | 0 |
| 100004 | Larry | Johnson | ITEC | NULL | 66 | 1017 | 100008 | 10007 | C- | 0 |
| 100005 | Linda | Johnson | CINF | ENGL | 13 | 1015 | 100008 | 10007 | C- | 0 |
| 100006 | Lillian | Johnson | CINF | ITEC | 18 | 1015 | 100008 | 10007 | C- | 0 |
| 100007 | Ben | Zico | NULL | NULL | 16 | NULL | 100008 | 10007 | C- | 0 |
| 100008 | Bill | Ching | ARTS | ENGL | 90 | 1018 | 100008 | 10007 | C- | 0 |
| 100009 | Linda | King | ARTS | CSCI | 125 | 1018 | 100008 | 10007 | C- | 0 |
| 100000 | Tony | Hawk | CSCI | CINF | 40 | 1011 | 100007 | 10008 | A- | 0 |
| 100001 | Mary | Hawk | CSCI | CINF | 35 | 1011 | 100007 | 10008 | A- | 0 |
| 100002 | David | Hawk | CSCI | ITEC | 66 | 1011 | 100007 | 10008 | A- | 0 |
| 100003 | Catherine | Lim | ITEC | CINF | 20 | 1017 | 100007 | 10008 | A- | 0 |
| 100004 | Larry | Johnson | ITEC | NULL | 66 | 1017 | 100007 | 10008 | A- | 0 |
| 100005 | Linda | Johnson | CINF | ENGL | 13 | 1015 | 100007 | 10008 | A- | 0 |
| 100006 | Lillian | Johnson | CINF | ITEC | 18 | 1015 | 100007 | 10008 | A- | 0 |
| 100007 | Ben | Zico | NULL | NULL | 16 | NULL | 100007 | 10008 | A- | 0 |
| 100008 | Bill | Ching | ARTS | ENGL | 90 | 1018 | 100007 | 10008 | A- | 0 |
| 100009 | Linda | King | ARTS | CSCI | 125 | 1018 | 100007 | 10008 | A- | 0 |
| 100000 | Tony | Hawk | CSCI | CINF | 40 | 1011 | 100000 | 11001 | D | 4 |
| 100001 | Mary | Hawk | CSCI | CINF | 35 | 1011 | 100000 | 11001 | D | 4 |
| 100002 | David | Hawk | CSCI | ITEC | 66 | 1011 | 100000 | 11001 | D | 4 |
| 100003 | Catherine | Lim | ITEC | CINF | 20 | 1017 | 100000 | 11001 | D | 4 |
| 100004 | Larry | Johnson | ITEC | NULL | 66 | 1017 | 100000 | 11001 | D | 4 |
| 100005 | Linda | Johnson | CINF | ENGL | 13 | 1015 | 100000 | 11001 | D | 4 |
| 100006 | Lillian | Johnson | CINF | ITEC | 18 | 1015 | 100000 | 11001 | D | 4 |
| 100007 | Ben | Zico | NULL | NULL | 16 | NULL | 100000 | 11001 | D | 4 |
| 100008 | Bill | Ching | ARTS | ENGL | 90 | 1018 | 100000 | 11001 | D | 4 |
| 100009 | Linda | King | ARTS | CSCI | 125 | 1018 | 100000 | 11001 | D | 4 |
+--------+-----------+---------+-------+-------+---------+---------+--------+---------+-------+----------+
220 row
R * S in SQL:
SELECT R.*, S.*
FROM R, S; -- note that there is no join condition.
4.1.4 Union
R U S = {t | t ∈ R V t ∈ S}
Example:
Suppose StaffID and FacultyID are union compatible.
πStaffID(Staff) U πFacultyID(Faculty)
Example: All information of students majoring in CSCI or ARTS.
σ(major='CSCI') (Student) U σ(major='ARTS') (Student)
or
σ(major='CSCI') V (major='ARTS') (Student)
+--------+-------+-------+-------+-------+---------+---------+
| stuId | fname | lname | major | minor | credits | advisor |
+--------+-------+-------+-------+-------+---------+---------+
| 100008 | Bill | Ching | ARTS | ENGL | 90 | 1018 |
| 100009 | Linda | King | ARTS | CSCI | 125 | 1018 |
| 100000 | Tony | Hawk | CSCI | CINF | 40 | 1011 |
| 100001 | Mary | Hawk | CSCI | CINF | 35 | 1011 |
| 100002 | David | Hawk | CSCI | ITEC | 66 | 1011 |
+--------+-------+-------+-------+-------+---------+---------+
5 rows
4.1.4 Difference (Minus)
R - S = {t | t ∈ R and not (t ∈ S)}
or
R - S = {t | t ∈ R, t ∉ S}
Example: Information of all students majoring in CSCI but not those taken credits less than 40.
σmajor='CSCI'(Student) - σcredit <40 (Student)
+--------+-------+-------+-------+-------+---------+---------+
| stuId | fname | lname | major | minor | credits | advisor |
+--------+-------+-------+-------+-------+---------+---------+
| 100000 | Tony | Hawk | CSCI | CINF | 40 | 1011 |
| 100002 | David | Hawk | CSCI | ITEC | 66 | 1011 |
+--------+-------+-------+-------+-------+---------+---------+
2 rows
Note that this is the same as:
σmajor='CSCI' and credit >=40(Student)
4.1.6 Rename
Example:
ρ(FacultyId, department <- FacId, deptCode) (Faculty)
+-----------+----------+----------+------------+---------------------+
| facultyId | fname | lname | department | rank |
+-----------+----------+----------+------------+---------------------+
| 1011 | Paul | Smith | CSCI | Professor |
| 1012 | Mary | Tran | CSCI | Associate Professor |
| 1013 | David | Love | CSCI | NULL |
| 1014 | Sharon | Mannes | CSCI | Assistant Professor |
| 1015 | Daniel | Kim | CINF | Professor |
| 1016 | Andrew | Byre | CINF | Associate Professor |
| 1017 | Deborah | Gump | ITEC | Professor |
| 1018 | Art | Allister | ARTS | Assistant Professor |
| 1019 | Benjamin | Yu | ITEC | Lecturer |
| 1020 | Katrina | Bajaj | ENGL | Lecturer |
| 1021 | Jorginlo | Neymar | ACCT | Assistant Professor |
+-----------+----------+----------+------------+---------------------+
11 rows
4.2. Derived Operations
4.2.1 Theta-join
R1 ⋈ΘR2 = σΘ(R1 * R2)
Example: All related information of students with 70 or more credits and a grade A or better in some courses.
Student ⋈(credits >= 70 and grade = 'A') Enroll
+--------+-------+-------+-------+-------+---------+---------+--------+---------+-------+----------+
| stuId | fname | lname | major | minor | credits | advisor | stuId | classId | grade | n_alerts |
+--------+-------+-------+-------+-------+---------+---------+--------+---------+-------+----------+
| 100008 | Bill | Ching | ARTS | ENGL | 90 | 1018 | 100000 | 10000 | A | 0 |
| 100008 | Bill | Ching | ARTS | ENGL | 90 | 1018 | 100000 | 10001 | A | 2 |
| 100008 | Bill | Ching | ARTS | ENGL | 90 | 1018 | 100004 | 10003 | A | 0 |
| 100008 | Bill | Ching | ARTS | ENGL | 90 | 1018 | 100006 | 10005 | A | NULL |
| 100009 | Linda | King | ARTS | CSCI | 125 | 1018 | 100000 | 10000 | A | 0 |
| 100009 | Linda | King | ARTS | CSCI | 125 | 1018 | 100000 | 10001 | A | 2 |
| 100009 | Linda | King | ARTS | CSCI | 125 | 1018 | 100004 | 10003 | A | 0 |
| 100009 | Linda | King | ARTS | CSCI | 125 | 1018 | 100006 | 10005 | A | NULL |
+--------+-------+-------+-------+-------+---------+---------+--------+---------+-------+----------+
8 rows in set (0.01 sec)
4.2.2 Equi-join
Example:
Student |x| (Student.StuId = Enrol.StuId) Enroll
+--------+---------+---------+-------+-------+---------+---------+--------+---------+-------+----------+
| stuId | fname | lname | major | minor | credits | advisor | stuId | classId | grade | n_alerts |
+--------+---------+---------+-------+-------+---------+---------+--------+---------+-------+----------+
| 100000 | Tony | Hawk | CSCI | CINF | 40 | 1011 | 100000 | 10000 | A | 0 |
| 100000 | Tony | Hawk | CSCI | CINF | 40 | 1011 | 100000 | 10001 | A | 2 |
| 100000 | Tony | Hawk | CSCI | CINF | 40 | 1011 | 100000 | 10002 | B+ | 1 |
| 100000 | Tony | Hawk | CSCI | CINF | 40 | 1011 | 100000 | 10003 | C | 0 |
| 100000 | Tony | Hawk | CSCI | CINF | 40 | 1011 | 100000 | 10004 | A- | 1 |
| 100000 | Tony | Hawk | CSCI | CINF | 40 | 1011 | 100000 | 11001 | D | 4 |
| 100001 | Mary | Hawk | CSCI | CINF | 35 | 1011 | 100001 | 10000 | NULL | NULL |
| 100001 | Mary | Hawk | CSCI | CINF | 35 | 1011 | 100001 | 10001 | A- | 0 |
| 100002 | David | Hawk | CSCI | ITEC | 66 | 1011 | 100002 | 10000 | B- | 3 |
| 100002 | David | Hawk | CSCI | ITEC | 66 | 1011 | 100002 | 10002 | B+ | 2 |
| 100002 | David | Hawk | CSCI | ITEC | 66 | 1011 | 100002 | 10003 | D | 4 |
| 100004 | Larry | Johnson | ITEC | NULL | 66 | 1017 | 100004 | 10003 | A | 0 |
| 100004 | Larry | Johnson | ITEC | NULL | 66 | 1017 | 100004 | 10004 | B+ | NULL |
| 100005 | Linda | Johnson | CINF | ENGL | 13 | 1015 | 100005 | 10003 | NULL | NULL |
| 100005 | Linda | Johnson | CINF | ENGL | 13 | 1015 | 100005 | 10004 | A- | 0 |
| 100005 | Linda | Johnson | CINF | ENGL | 13 | 1015 | 100005 | 10005 | A- | 0 |
| 100005 | Linda | Johnson | CINF | ENGL | 13 | 1015 | 100005 | 10006 | B+ | NULL |
| 100006 | Lillian | Johnson | CINF | ITEC | 18 | 1015 | 100006 | 10004 | C+ | NULL |
| 100006 | Lillian | Johnson | CINF | ITEC | 18 | 1015 | 100006 | 10005 | A | NULL |
| 100007 | Ben | Zico | NULL | NULL | 16 | NULL | 100007 | 10007 | F | 4 |
| 100007 | Ben | Zico | NULL | NULL | 16 | NULL | 100007 | 10008 | A- | 0 |
| 100008 | Bill | Ching | ARTS | ENGL | 90 | 1018 | 100008 | 10007 | C- | 0 |
+--------+---------+---------+-------+-------+---------+---------+--------+---------+-------+----------+
22 rows
It is important to note the difference between names and meanings. Consider
student(stuId, ... advisorFacId, ..., createTime) and
faculty(facId, ..., createTime)
4.2.3 Natural Join
Let C1, C2, ... Cm be the common attributes of R and S.
R |x| S = πA1, A2, .. Al(σR.C1=S.C1,.., R.Cm=S.Cm(R*S))
where A1, A2, ... Al is the list of attributes in R*S except S.C1, S.C2,.. S.Cm.
Example:
The schema of R(A,B) |x| S(A,C) is ABC. The schema of R(A,B) * S(A,C) is {R.A, B, S.A, C}.
Example:
Student |x| Enroll:
+--------+---------+---------+-------+-------+---------+---------+---------+-------+----------+
| stuId | fname | lname | major | minor | credits | advisor | classId | grade | n_alerts |
+--------+---------+---------+-------+-------+---------+---------+---------+-------+----------+
| 100000 | Tony | Hawk | CSCI | CINF | 40 | 1011 | 10000 | A | 0 |
| 100000 | Tony | Hawk | CSCI | CINF | 40 | 1011 | 10001 | A | 2 |
| 100000 | Tony | Hawk | CSCI | CINF | 40 | 1011 | 10002 | B+ | 1 |
| 100000 | Tony | Hawk | CSCI | CINF | 40 | 1011 | 10003 | C | 0 |
| 100000 | Tony | Hawk | CSCI | CINF | 40 | 1011 | 10004 | A- | 1 |
| 100000 | Tony | Hawk | CSCI | CINF | 40 | 1011 | 11001 | D | 4 |
| 100001 | Mary | Hawk | CSCI | CINF | 35 | 1011 | 10000 | NULL | NULL |
| 100001 | Mary | Hawk | CSCI | CINF | 35 | 1011 | 10001 | A- | 0 |
| 100002 | David | Hawk | CSCI | ITEC | 66 | 1011 | 10000 | B- | 3 |
| 100002 | David | Hawk | CSCI | ITEC | 66 | 1011 | 10002 | B+ | 2 |
| 100002 | David | Hawk | CSCI | ITEC | 66 | 1011 | 10003 | D | 4 |
| 100004 | Larry | Johnson | ITEC | NULL | 66 | 1017 | 10003 | A | 0 |
| 100004 | Larry | Johnson | ITEC | NULL | 66 | 1017 | 10004 | B+ | NULL |
| 100005 | Linda | Johnson | CINF | ENGL | 13 | 1015 | 10003 | NULL | NULL |
| 100005 | Linda | Johnson | CINF | ENGL | 13 | 1015 | 10004 | A- | 0 |
| 100005 | Linda | Johnson | CINF | ENGL | 13 | 1015 | 10005 | A- | 0 |
| 100005 | Linda | Johnson | CINF | ENGL | 13 | 1015 | 10006 | B+ | NULL |
| 100006 | Lillian | Johnson | CINF | ITEC | 18 | 1015 | 10004 | C+ | NULL |
| 100006 | Lillian | Johnson | CINF | ITEC | 18 | 1015 | 10005 | A | NULL |
| 100007 | Ben | Zico | NULL | NULL | 16 | NULL | 10007 | F | 4 |
| 100007 | Ben | Zico | NULL | NULL | 16 | NULL | 10008 | A- | 0 |
| 100008 | Bill | Ching | ARTS | ENGL | 90 | 1018 | 10007 | C- | 0 |
+--------+---------+---------+-------+-------+---------+---------+---------+-------+----------+
22 rows
Exercise:
Let the cardinality of R(A,B) be 5 and the cardinality of S(A,C) be 6. What is the range of the cardinality of R(A,B) |x| S(A,C)?
4.2.4 Other Joins (Additional Materials)
4.2.5 Division (Additional Materials)
Example:
Find the student id of all students who enrolled in all courses offered by the faculty '1014':
Stuid and classNumber information (who is enrolled in which class):
π(stuId, classId) (Enroll): rows added to Class.
+--------+---------+
| stuId | classId |
+--------+---------+
| 100000 | 10000 |
| 100000 | 10001 |
| 100000 | 10002 |
| 100000 | 10003 |
| 100000 | 10004 |
| 100000 | 11001 |
| 100001 | 10000 |
| 100001 | 10001 |
| 100002 | 10000 |
| 100002 | 10002 |
| 100002 | 10003 |
| 100004 | 10003 |
| 100004 | 10004 |
| 100005 | 10003 |
| 100005 | 10004 |
| 100005 | 10005 |
| 100005 | 10006 |
| 100006 | 10004 |
| 100006 | 10005 |
| 100007 | 10007 |
| 100007 | 10008 |
| 100008 | 10007 |
+--------+---------+
22 rows
Classes offered by faculty '1014':
π(classId) (σ(facId='1014) (Class)):
+---------+
| classId |
+---------+
| 10003 |
| 10004 |
+---------+
2 rows
Solution:
π(stuId, classId) (Enroll) / π(stuId, classId) (Enroll):
+--------+
| stuId |
+--------+
| 100000 |
| 100004 |
| 100005 |
+--------+
3 rows
4.3 Query Optimization
4.4 Epilog
Some shortcomings of Relational Algebra:
5. Relational Calculus
5.1 Review
5.2 More RC
Example:
{i | i ∈ I ∧ i % 2 =0}
{i | i ∈ I, i % 2 =0} -- set builder form.
{t | ∃r ∈R, r.firstname = t.firstname, r.lastname = t.lastname}
Alternatively, we can use the set builder form in the LHS before |:
{(r.firstname, r.lastname) | r ∈ R}
R(A,B,C,D) / S(C,D)
{(a,b) | (∀(c,d) ∈ S) (a,b,c,d) ∈ R)}
Exercises:
How do you use RC to implement RA operations?
5.3 TRC
5.4. DRC
Exercise:
Work on some of the query questions listed in the toyu Query Exercise in DRC and TRC.