关系代数中两个表的投影



考虑这两个表:

Cd(Cd_id、标题、no_tracks、日期、位置、周)

波段(Band_id,Band_name)

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

我是这样写的:πband_name(band)和πtitle(Cd),但我不确定这是否正确。

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

是的,联合是一条路,但popovits的答案并不完全正确。在关系代数中,两个操作数必须是"联合兼容"的——也就是说,具有相同的命名属性(以及相同类型的属性)——refhttp://en.wikipedia.org/wiki/Relational_algebra,"设置运算符"部分。因此:

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

2) 您可能需要操作这些值,使它们具有相同的类型。(例如:字段title和band_name的长度相同吗?)

需要注意的是,如果你有一个与band_name相同的CD标题,你只会得到一个元组。(这种情况很可能发生在同名专辑中)。

请注意,RA比SQL更严格。因此:

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

2) SQL还采用每个左操作数的类型。

(如果title被声明为短于band_name,则可能会被截断。)

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

这确实是用并集完成的。

π title(Cd) ∪ π band_name(Band)

最新更新