关系代数中2个表的投影

时间:2013-11-22 19:54:27

标签: algebra relational relational-algebra

考虑这两个表:

Cd(cd_id,title,no_tracks,date,position,weeks)

Band(band_id,band_name)

任务是:列出关系代数中的所有乐队名称和CD标题。

我用这种方式写道:Πband_name(Band)ANDΠtitle(Cd),但我不确定这是否正确。

我也在考虑联盟,但我不确定。

2 个答案:

答案 0 :(得分:1)

是的,联盟是要走的路,但popovits的回答并不完全正确。 在关系代数中,两个操作数必须是'Union Compatible' - 具有相同名称的属性(以及相同类型的那些属性) - ref http://en.wikipedia.org/wiki/Relational_algebra,section'Set operators'。所以:

1)重命名属性,使它们名称相同。

2)您可能必须操纵值以使它们是相同的类型。    (例如:字段title和band_name的长度是否相同?)

需要注意的是,如果你的CD标题与band_name相同,那么你只能获得一个元组。 (这种情况很可能与自己的专辑相关)。

请注意,RA比SQL更有纪律。所以:

1)如果SQL UNION的列名不同,则SQL从左操作数中获取名称。

2)SQL也采用左操作数的类型。

(如果声明标题短于band_name,则可能会截断。)

在SQL中,您可以使用UNION ALL http://en.wikipedia.org/wiki/Set_operations_(SQL)在自我标题相册的结果中获得重复。 RA中不允许重复,因为每个关系必须是一个集合。

答案 1 :(得分:0)

这确实是通过工会完成的。

π title(Cd) ∪ π band_name(Band)
相关问题