Скажем, у меня есть таблица Persons
с атрибутами {name, pet}
. Как выбрать имена людей, у которых есть один из каждого вида домашних животных (dog, cat, bird)
, но у человека есть только один из каждого вида домашнего животного, если они являются домашним животным в таблице.Выберите строки с «одним из каждого» в реляционной алгебре
Пример: Bob, Dog
и Bob, Cat
- единственные строки в таблице. Поэтому Bob
имеет один из каждого вида домашнего животного. Но момент Lynda, Bird
добавлен, Bob
больше не имеет ни одного из видов домашнего животного.
Я думаю, что первым шагом к этому является π(pet)
. Вы получаете список всех видов домашних животных, поскольку реляционная алгебра удаляет дубликаты. Не уверен, что делать после этого, но я думаю, мне нужно присоединиться к π(pet)
и Persons
.
Я пробовал несколько вещей, таких как Natural Join and Cross, но я еще не достиг результата, и у меня нет идей.
Ваше описание нечеткое. Может быть, вы имеете в виду «где у них есть один из каждого вида любимца, который появляется в таблице». Если вы не заставляете себя быть ясными на естественном языке, как вы ожидаете, что будете ясны в РА? Или оправдывать утверждение, что конкретное выражение РА говорит, что вы имеете в виду? Какова была точная формулировка задания, которую вы дали? (Обратите внимание, что если бы было больше столбцов, «один» должен был быть «точно одним» или «по крайней мере одним».) – philipxy