Вопрос

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"

Это было полезно?

Решение

List the names of all contacts who is owned by academic "John".

For that, you would join the Academic and Conctact relations, filter for John, and project the name attributes. For efficiency, select John before joining:

πforename, surename (Contact ⋈academicNO = academicIDacademicIDforename = "John" Academic))))

Другие советы

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!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top