2016-03-20 6 views
1

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

СТУДЕНТА (Ssn, имя, майор, Bdate)

КУРС (Course # CNAME, Dept)

ОБУЧЕНИЕ (Ssn, курс #, квартал, Grade)

BOOK_ADOPTION (курс #, квартал, Book_isbn)

TEXT (Book_isbn, BOOK_TITLE, Издательство, Автор)

Вопрос, который я пытаюсь решить это:

Получить имена ведомств, внедряющих учебники, изданные только Addison-Wesley.

Я не могу понять, как я могу отфильтровать результат, чтобы, если у меня есть курс, который перешел на книгу, которая еще не опубликована Аддисоном-Уэсли.

Я очень ценю всю помощь!

+0

Является ли цель выяснить все курсы, которые раньше имели книгу, опубликованную addison-wesley, а теперь нет, или просто найти все, что * current * имеет книгу, опубликованную addison-wesley? – Jhecht

+0

Как я понимаю, проблема заключается в том, чтобы найти имена отделов, которые использовали только издатели этого издательства. Поэтому, если отдел использовал только книги этого издателя. Если отдел переключил книгу на другой издатель, он не должен появляться в конечном результате. Это та часть, которая меня отталкивает, если отдел переключил книгу, которую она все еще появляется в моем результате, потому что раньше они использовали книгу, опубликованную издателем. –

+0

есть ли способ сделать sqlfiddle с некоторыми базовыми данными для меня? Если, конечно, у вас уже есть ответ? – Jhecht

ответ

0

Благодаря помощи Ренцо, я нашел ответ!

  1. Найти все книги не опубликованных «Addison-Wesley»
  2. Присоединяйтесь полученное соотношение в шаге 1, с Book_Adoption и курса, а также проект по кафедре - это даст все отделы, которые использовали книгу, не была опубликована «Addison-Wesley»
  3. Возьмите таблицу курса и проекта на кафедре, чтобы получить все возможные отделы
  4. Вычесть соотношение в шаге 3 - отношение в шаге 2

π курса. Dept (Курс) - (π Курс.Dept (((Text TextPublisher ≠ 'Addison-Wesley' (Текст)) ⨝ Book_Adoption) ⨝ Course))

Я проверил этот ответ с помощью калькулятора реляционной алгебры и дал желаемый результат!

0

Читая запрос, мне не ясно, относится ли оно ко всем книгам, которые когда-либо были приняты, или книге, принятой в текущем квартале.

Учитывая первый possibily, что все книги, когда-либо принятых, вот эскиз возможного решения:

  1. Найти соотношение R (Dept, Book_isbn), который перечисляет для всех отделов книг принятой в любом курсе, в любом квартале.

  2. Найдите отношение S (Book_isbn) всех книг, изданных Аддисоном-Уэсли.

  3. Затем, используя один алгебраический оператор (который?), Вы можете получить результат.

Во втором случае на шаге 1 ограничиваем список всеми книгами, принятыми в течение текущего квартала.

+0

Как я понимаю, выход должен быть отделами, которые использовали только книги, которые были опубликованы Эддисоном-Уэсли. Поэтому, если в какой-то момент отдел использовал книгу, которая не была опубликована Аддисоном-Уэсли, она не должна появляться в выходном соотношении. Вопрос ничего не говорит о квартале, поэтому я не ограничиваю его. –

+0

Спасибо Ренцо, ты заставил меня думать в правильном направлении, я изменил твои шаги, чтобы получить правильный ответ! –

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