Мне нужно написать выражение реляционной алгебры для запроса, чтобы построить и оптимизировать дерево запросов. Мне трудно понять, как написать выражение для запроса, включающего объединение нескольких отношений.Реляционная алгебра с несколькими объединениями
отношения,
Поставщик (SNUM, имя, адрес, bdate, секс, pnum)
завод (pnum, mgrnum, местоположение)
Пункт (пункт #, местонахождение, pnum)
Продает (snum, item #, qty)
Mgrnum in plant - это сфера менеджера в таблице поставщиков (внешний ключ).
Этот запрос,
для каждого элемента, расположенного в «Денвер», получить номер элемента, контрольный номер завода, а также имя, адрес менеджера завода и дату рождения.
Мне нравится писать это сначала, используя декартово произведение, чем использование объединений, поэтому я могу нарисовать исходное дерево запросов.
Это попытка друг: пункт
ПРОЕКТ #, pnum, mgrnum, адрес bdate ((SELECT местоположения = 'Denver' (завод) х Item) РЕГИСТРИРУЙТЕСЬ mgrnum = SNUM (Поставщик))
Я пытаюсь понять, как прийти к этому ответу. Спасибо.
Пожалуйста, покажите свою попытку ответить на вопрос, даже если это ужасно неправильно. У вас будет больше шансов получить хорошие отзывы. Начните с декартова произведения соответствующих таблиц, затем примените выбор и проецирование. – reaanb
Я отредактировал и включил эту попытку. Спасибо – PeeBee
@PeeBee В попытке вашего друга отсутствует имя менеджера, не выбирает соответствующие записи из Cartesian join of Plant и Item, и использует equijoin с поставщиком, а не с картезианским соединением. – reaanb