考虑到这些2个表:投影2个表中关系代数
镉(cd_id,标题,no_tracks,日期,位置,周)
频带(band_id,band_name)
的任务是:列出关系代数中的所有乐队名称和CD标题。
我是这么写的:Πband_name(Band)ANDΠtitle(Cd),但是我不确定这是否正确。
我也在想联盟,但我不确定。
考虑到这些2个表:投影2个表中关系代数
镉(cd_id,标题,no_tracks,日期,位置,周)
频带(band_id,band_name)
的任务是:列出关系代数中的所有乐队名称和CD标题。
我是这么写的:Πband_name(Band)ANDΠtitle(Cd),但是我不确定这是否正确。
我也在想联盟,但我不确定。
这确实是用一个工会来完成的。
π title(Cd) ∪ π band_name(Band)
是的,联盟是要走的路,但popovits的答案并不完全正确。 在关系代数中,两个操作数必须是'Union Compatible' - 它具有相同名称的属性(以及相同类型的属性) - ref http://en.wikipedia.org/wiki/Relational_algebra,“设置操作符”一节。所以:
1)重命名属性,使它们是相同的名称。
2)您可能需要操纵这些值,以使它们是相同的类型。 (例如:字段标题和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中不允许重复,因为每个关系都必须是一个集合。
你的意思是笛卡尔积? – wvdz
编辑我的问题现在明确表示,对不起。 –