0

今日初めてデータベースの関係代数の質問に遭遇しましたが、答えが見つからないようです。

バッチ、チャネル、マーケットの 3 つのテーブルがあります。

Batch は、Foregein キー (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

これは、バッチ ⋈ チャネル ⋈ マーケットになります(自然な結合は結合的で可換的です)。

EDIT : 結合ごとに属性名が同じであるため ( と比較batch.channelIDしてchannel.channelIDいます)、自然な結合でクエリを記述できる状況にあり、⋈ の下に (xxx = yyy) を記述する必要はありません。自然結合を表す場合の演算子。

代わりに θ-joins と書くこともできます。その場合、構文はほぼ正しいでしょうが、θ-joins を使用して自然な結合を表現することは、ポイントを逃しているように感じます。変更する必要があるのは、θ 結合は結合的ではないため、括弧を追加する必要があることです: (バッチ ⋈ チャネル) ⋈ 市場

于 2010-12-11T20:37:35.577 に答える