0

今天我第一次遇到数据库问题的关系代数,我似乎找不到答案。

我有 3 个表,批次、渠道和市场。

Batch 通过外键(channelID、marketID)连接到 Channel 和 Market。

此类查询的正确表示法是什么:

select * from batch, channel, market 
where batch.channelID=channel.channelID AND batch.marketID=market.marketID

谢谢


如果我理解正确,我需要写如下:

π...(Batch⋈                                   Channel⋈                                Market
           (batch.channelID=channel.channelID)        (batch.marketID=market.marketID)
4

1 回答 1

3

那将是批处理 ⋈ 渠道 ⋈ 市场(自然连接是关联的和可交换的)。

编辑:由于每个连接的属性名称都相同(您正在与 比较batch.channelIDchannel.channelID,因此您处于可以使用自然连接编写查询的情况,并且不需要在 ⋈表示自然连接时的运算符。

可以把它写成 θ-joins,在这种情况下你的语法几乎是正确的,但我觉得使用 θ-joins 来表示自然连接有点错过了重点。您需要做的更改是,由于 θ-joins 不是关联的,因此您需要添加括号:(batch ⋈ channel) ⋈ market

于 2010-12-11T20:37:35.577 回答