0

Мне нужно написать выражение реляционной алгебры для запроса, чтобы построить и оптимизировать дерево запросов. Мне трудно понять, как написать выражение для запроса, включающего объединение нескольких отношений.Реляционная алгебра с несколькими объединениями

отношения,

Поставщик (SNUM, имя, адрес, bdate, секс, pnum)

завод (pnum, mgrnum, местоположение)

Пункт (пункт #, местонахождение, pnum)

Продает (snum, item #, qty)

Mgrnum in plant - это сфера менеджера в таблице поставщиков (внешний ключ).

Этот запрос,

для каждого элемента, расположенного в «Денвер», получить номер элемента, контрольный номер завода, а также имя, адрес менеджера завода и дату рождения.

Мне нравится писать это сначала, используя декартово произведение, чем использование объединений, поэтому я могу нарисовать исходное дерево запросов.

Это попытка друг: пункт

ПРОЕКТ #, pnum, mgrnum, адрес bdate ((SELECT местоположения = 'Denver' (завод) х Item) РЕГИСТРИРУЙТЕСЬ mgrnum = SNUM (Поставщик))

Я пытаюсь понять, как прийти к этому ответу. Спасибо.

+1

Пожалуйста, покажите свою попытку ответить на вопрос, даже если это ужасно неправильно. У вас будет больше шансов получить хорошие отзывы. Начните с декартова произведения соответствующих таблиц, затем примените выбор и проецирование. – reaanb

+0

Я отредактировал и включил эту попытку. Спасибо – PeeBee

+0

@PeeBee В попытке вашего друга отсутствует имя менеджера, не выбирает соответствующие записи из Cartesian join of Plant и Item, и использует equijoin с поставщиком, а не с картезианским соединением. – reaanb

ответ

0

для каждого предмета, находящегося в «Денвере», получить номер позиции, номер контрольного завода и имя, адрес и дату рождения руководителя завода.

Поскольку это домашнее задание, вот подсказка. Вы, видимо, хотите item#, pnum, name, bdate строки, где:

(for some sex, mgrnum, location, snum, 
     snum called name occupying address born bdate is sex and manages pnum 
    and item# in location is controlled by pnum 
    and location = 'Denver') 

(Гадать на то, что означает, что ваши таблицы и какие бизнес-правила, потому что вы не четко объяснить.)

Давайте использовать очевидную сокращенную:

(for some sex, mgrnum, location, snum, 
     Supplier(snum, name, address, bdate, sex, pnum) 
    and Item(item#, location, pnum) 
    and location = 'Denver') 

Напомним, что держит PROJECT/капли атрибуты, RESTRICT/SELECT держит/капли кортежи, и если отношения R & S держать кортежи, которые делают истинное утверждение от их предикаты R (...) & S (...) (соответственно), тогда R NATURAL JOIN S возвращает кортежи, где R (...) AND S (...). (См. this answer. Также мой ответ Relational Algebra Cross Product and Natural Join.)

Смежные вопросы