关系代数,我是对的吗?

时间:2014-03-03 02:45:33

标签: database relational-algebra

我做了一些关系代数并且对这个问题有点打击,我做到了,但是我怀疑我做得对。 所以这些是3种关系:

Musicians: ssn, name, annualIncome
Instruments: instrID, iname, key
Plays: ssn, instrID

问题是由音乐家名约翰发现的instrID。

我做的是:

T1 = proj  [condition ssn] ( select [name = John] Musician)
T2 = Plays natural joins Instruments

Result = proj [instruID] (T1 natural joins T2)

似乎我让每个约翰都演奏乐器而不是一个特定的约翰......我如何使用关系代数挑选一个约翰?

1 个答案:

答案 0 :(得分:1)

潜在的假设是只有一位名叫约翰的音乐家:否则这个问题似乎没有意义。

proj[instrID] (proj[ssn]( select[name = John] Musician) naturalJoin Plays)

应该回答这个问题。您不需要表Instruments,因为您可以从instrID获取Plays