2010-12-11 12 views
0

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

私はBatch、Channel、Marketという3つのテーブルを持っています。

バッチはforegein keys(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) 

答えて

3

それはバッチ⋈チャネル⋈市場(自然なjオインは連想して可換である)。

EDIT:属性名は、それぞれに同じであるため(あなたがchannel.channelIDbatch.channelIDを比較している)に参加、あなたはクエリは、自然が参加して書き込むことができるような状況にいる、と書く必要はありません(xxx = yyy)は、自然結合を表すときに⋈演算子の下にあります。

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

+0

こんにちは、私は理解していません。私の更新は、結合フィールドのサブ表記法をどのように書くべきかに関して正しいですか? (私は完全な質問を記述する必要があります)。 – Amirshk

+0

ありがとう、非常に役立つ – Amirshk