Синтаксис реляционного алгебра
-
08-10-2019 - |
Вопрос
Впервые я столкнулся с реляционной алгеброй для вопроса баз данных сегодня, и я не могу найти ответ.
У меня есть 3 столы, пакет, канал и рынок.
Партия соединена с каналом и рынком на главных клавишах (ChanialID, 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)
Решение
Это было бы партия ⋈ канал ⋈ рынок (Природные присоединения являются ассоциативными и коммутативными).
РЕДАКТИРОВАТЬ: Поскольку имена атрибутов одинаковы для каждого соединения (вы сравниваете batch.channelID
с участием channel.channelID
), вы в ситуации, когда запрос можно написать с натуральными присоединениями, и нет необходимости писать (xxx = yyy) под ⋈ оператор, когда он представляет естественное соединение.
Ты мог Напишите его как θ-соединения вместо этого, в этом случае ваш синтаксис будет практически правильным, но я чувствую, что используя θ-присоединения для представления естественных присоединений в мировой пропуске. Изменение, которое необходимо сделать, так это то, что θ-Joins не ассоциативно, вам нужно добавить кронштейны: (Пакетный канал) ⋈ Рынок