Theta加入关系代数正确性

时间:2013-11-22 21:04:34

标签: algebra relational relational-algebra

考虑这两个表:

乐队(band_id,band_name)

Band_Member (band_id,member_name,dob,country,sex)

任务:使用theta Join列出乐队成员的姓名和他们所在乐队的名称。

嗯,我的疑问是在连接后只显示band_name和member_name的步骤。

这就是我完成theta-join的方式:σBand_Member.band_id= Band.band_id(Band_member x Band)

这就是我认为仅显示band_name和member_name:

的方式

Πband_name,member_name(σBand_Member.band_id= Band.band_id(Band_member x Band))

修改 我也想知道以这些方式编写相同任务的笛卡尔积是否正确:

Πband_name,member_name(Band_Member x Band)

Πmember_name(Band_Member)xΠband_name(Band_Member)

1 个答案:

答案 0 :(得分:1)

Π band_name, member_name (σ Band_Member.band_id = Band.band_id (Band_member × Band))

显示每个乐队的所有乐队成员。

Π band_name, member_name (Band_Member x Band)

这列出了每个乐队的任何乐队的每个成员,无论他们是否是该乐队的成员。这与你之前的表达方式不同。

Π member_name (Band_Member) x Π band_name (Band_Member)

这是一个关系,包含每个拥有成员的乐队的任何乐队的每个成员(这是所有乐队的子集)。这与你之前的任何一个表达都不一样。

执行第一个表达式的惯用方法是自然连接:

Π band_name, member_name (Band_Member ⋈ Band)

与你的第一个表达式相同。