Introduction to Relational Algebra
by K. Yue
1. Introduction
2. Basic Operations
Cartesian Product
Example:
R(A,B,C) has three tuples. S(A,D) has four tuples.
The result of R x 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 x 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
In SQL, the select statement is very powerful and can be used to simulate RA operations. For R * S:
SELECT R.*, S.*
FROM R, S; -- note that there is no join condition.
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';
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
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
Difference (Minus)
R - S = {t | t ε R and not (t ε S)}
Example: Information of all students majoring in CSCI but those not 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)
Rename
Example:
rename (FacultyId, department <- FacId, deptCde) (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
3. Common Derived Operations
Theta-join
R1 |x|ΘR2 = σΘ(R1 x R2)
Example: All related information of students with 70 or more credits and a grade A or better in some courses.
Student |x|(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)
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 meaning. Consider
student(stuId, ... advisorFacId, ..., createTime) and
faculty(facId, ..., createTime)
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(RxS)
where A1, A2, ... Al is the list of components in RxS 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) x 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)?
Additional Materials: Other Joins
Additional Materials: Division
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. Epilog
Some shortcomings of Relational Algebra: