Синтаксис реляционной алгебры - PullRequest
0 голосов
/ 11 декабря 2010

Сегодня я впервые сталкиваюсь с вопросом о реляционной алгебре для баз данных, и я не могу найти ответ.

У меня есть 3 таблицы, Batch, Channel и Market.

Пакетный режим подключается к каналу и рынку с помощью клавиш (ID канала, marketID).

Какова правильная запись для запроса такого рода:

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)

1 Ответ

3 голосов
/ 11 декабря 2010

Это будет партия ⋈ канал ⋈ рынок (естественные объединения являются ассоциативными и коммутативными).

РЕДАКТИРОВАТЬ : поскольку имена атрибутов одинаковы для каждого объединения (вы сравниваете batch.channelID с channel.channelID), вы находитесь в ситуации, когда запрос может быть написанс естественными объединениями, и нет необходимости писать (xxx = yyy) под оператором ⋈, когда он представляет естественное соединение.

Вы могли бы записать это как θ-соединения вместо этого, и в этом случае ваш синтаксис был бы почти правильным, но я чувствую, что использование θ-соединений для представления естественных объединений как бы упускает из виду.Нужно сделать следующее изменение: поскольку θ-объединения не являются ассоциативными, необходимо добавить квадратные скобки: (партия ⋈ канал) ⋈ рынок

...