The following is about databases: queries on relational algebra
Consider the following schemas for a LinkedIn-like professional network. Note this is a slightly simplified version from your last assignment. Assume that the connections are mutual.
Person (PID, first_name, last_name, age, gender)
School (school_ID, school_name, type, city, state)
Education (PID, school_ID, degree, major, year)
Company (company_ID, company_name, total_asset, headquarter)
Branch (company_ID, branch_num, city, state)
WorksAt (PID, company_ID, branch_num, start, end)
Connection (PID, friend_ID)
For each relation, the attribute(s) of the primary key is(are) underlined. In addition the following foreign key constraints hold:
In Education, PID is a foreign key that references Person(PID), and school_ID is a foreign key that references School(school_ID)
In Branch, company_ID is a foreign key that references Company(company_ID)
In WorksAt, PID is a foreign key that references Person(PID); (company_ID, branch_num) is a foreign key that references Branch(company_ID, branch_num)
In Connection, PID is a foreign key that references Person(PID); friend_ID is a foreign key that references Person(PID)
The Connection relation stores pairs of users who are connected.
Write the following queries in Relational Algebra. Note “dsmith” is a unique PID. Tips: Break a problem into smaller parts and use temporary relations.
Note: We are required to do the first four parts of the question if no particular ones are specified from multiple parts. So I would be doing the same.
Print the names of all alumni of George Mason University (school_ID = ‘GMU’), along with their degrees/majors/years.
Πfirst_name, last_name, degree, major, year (σschool_ID = ‘GMU’(Person ⋈ Education))
Print the names (first name, last name) of all dsmith’s connections.
Πfirst_name, last_name (σConnection.PID = 'dsmith' (Person ⋈Person.PID = Connection.friend_ID Connection))
Print the names of users who have no connection in the network.
Πfirst_name, last_name (Person ▷ Connection)
Print the names of users who studied different subjects for their BS and MS degrees
Πfirst_name, last_name (Person ⋉ (ρe((ρe1 (σdegree = 'MS' (Education))) ⋈e1.PID=e2.PID ^ e1.major <> e2.major (ρe2 (σdegree = 'BS' (Education))))))
Get Answers For Free
Most questions answered within 1 hours.