假设我有以下关系:
Academic(academicID (PK), forename, surname, room)
Contact (contactID (PK), forename, surname, phone, academicNO (FK))
我正在使用Java &我想了解符号的用法。
Π( relation, attr1, ... attrn )
表示将n个属性投影出关系。σ( relation, condition)
表示选择符合条件的行。⊗(relation1,attr1,relation2,attr2)
表示在命名属性上连接两个关系。relation1 – relation2
是两个关系的差。relation1 ÷ relation2
将一个关系除以另一个关系
我使用这个结构:
LessNumVac = Π( σ( job, vacancies < 2 ), type )
AllTypes = Π( job, type )
AllTypes – LessNumVac
如何构造代数:
列出学术"John"拥有的所有联系人的姓名
列出学术"John"拥有的所有联系人的姓名。
为此,您将连接Academic
和Conctact
关系,筛选John,并投影name属性。为了提高效率,在加入前选择John:
π name, surename(联系方式
您必须扩展natural join ⋈
, Left outer join ⟕
和/或Right outer join ⟖
的操作集以显示连接。
维基百科上有一篇关于关系代数的好文章。你一定要读这本书!