Выберите строки по одной в реляционной алгебре

Скажем, у меня есть Personstable с атрибутами {name, pet}. Как выбрать имена людей, у которых есть по одному питомцу каждого вида (dog, cat, bird), но у человека есть только по одному питомцу каждого вида, если он указан в таблице.

Пример: Bob, Dog и Bob, Cat - единственные строки в таблице. Следовательно, у Bob есть по одному питомцу каждого вида. Но в момент добавления Lynda, Bird у Bob больше нет по одному питомцу каждого типа.

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

Я пробовал несколько вещей, например продукты Natural Join и Cross, но пока не добился результата, и у меня закончились идеи.


person Extreme112    schedule 19.10.2016    source источник
comment
Ваше описание непонятно. Может быть, вы имеете в виду, где у них есть по одному питомцу каждого вида, который указан в таблице. Если вы не заставляете себя говорить на естественном языке, как вы ожидаете, что будете ясны в RA? Или чтобы оправдать утверждение, что конкретное выражение RA говорит то, что вы имеете в виду? Какова была точная формулировка задания, которое вам дали? (Обратите внимание, что если бы столбцов было больше, их должен был бы быть ровно один или хотя бы один.)   -  person philipxy    schedule 20.10.2016


Ответы (1)