'Relational algebra for one-to-many relations

Suppose I have the following relations:

Academic(academicID (PK), forename, surname, room)
Contact (contactID (PK), forename, surname, phone, academicNO (FK))

I am using Java & I want to understand the use of the notation.

Π( relation, attr1, ... attrn ) means project the n attributes out of the relation.
σ( relation, condition) means select the rows which match the condition.
⊗(relation1,attr1,relation2,attr2) means join the two relations on the named attributes.
relation1 – relation2 is the difference between two relations.
relation1 ÷ relation2 divides one relation by another.

Examples I have seen use three tables. I want to know the logic when only two tables are involved (academic and contact) as opposed to three (academic, contact, owns).

I am using this structure:

LessNumVac = Π( σ( job, vacancies < 2 ), type )
AllTypes = Π( job, type )
AllTypes – LessNumVac

How do I construct the algebra for:

List the names of all contacts owned by academic "John"



Solution 1:[1]

You have to extend your operations set with natural join ?, Left outer join ? and/or Right outer join ? to show joins.

There is a great Wikipedia article about Relational Algebra. You should definitely read that one!

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 MarcinJuraszek