假设我有以下关系:
Academic(academicID(PK), forename, surname, room)
Contact (contactID(PK), forename, surname, phone, academicNO(FK))
这不是作业,我只是想了解符号的使用,如果你可以帮助我以下。
Π( relation, attr1, ... attrn )
表示从关系中投射n个属性。
σ( relation, condition)
表示选择符合条件的行。
⊗(relation1,attr1,relation2,attr2)
表示在命名属性上加入两个关系。
relation1 – relation2
是两种关系之间的区别。
relation1 ÷ relation2
是一种关系与另一种关系的划分。
我见过的例子使用了三个表。我正在使用Java,只想知道只有两个表(学术和联系)而不是三个(学术,联系,拥有)的逻辑。
到目前为止,我正在使用这种结构 “
LessNumVac = Π( σ( job, vacancies < 2 ), type )
AllTypes = Π( job, type )
AllTypes – LessNumVac.
我如何构建代数...
列出学术“John”拥有的所有联系人的姓名。
答案 0 :(得分:0)
您必须使用natural join ⋈
,Left outer join ⟕
和/或Right outer join ⟖
扩展您的操作集以显示联接。
关于Relational Algebra的维基百科文章很棒。你一定要读那个!
答案 1 :(得分:0)
列出学术“John”拥有的所有联系人的姓名。
为此,您将加入Academic
和Conctact
关系,过滤John,并投影名称属性。为了提高效率,请在加入前选择John:
π forename,surename (联系方式⋈ academicNO = academicID (π academicID (σ forename =“John”学术))))