У меня проблема, когда у меня есть два отношения: один содержит атрибуты song_id, song_name, album_id, а другой - с именами album_id и album_name. Мне нужно найти имена всех альбомов, у которых нет песен в отношении песни. Проблема в том, что я могу использовать только Rename, Projection, Selection, Grouping (с суммой, min, max, count), Cartesian Product и Natural join. Я потратил много времени на это и буду признателен за любую помощь, которая указала бы мне в правильном направлении.Проблемы с нерегулярностью алгебраической алгебры
ответ
Как отметил @ErwinSmout, разница в этом, как правило, является простым способом. Но поскольку вы не можете использовать его, есть сложное обходное решение, использующее подсчеты. Я предполагаю, что каждый album_id
, присутствующий в отношении песен, также присутствует в отношении albums
.
PROJECT
album_id из отношения композиций (обратите внимание, что реляционная алгебра PROJECT
эквивалентна SELECT DISTINCT
SQL). Я назову это отношение song_albums
. Теперь давайте возьмем подсчет отношения albums
, назовите это m и возьмите счет новой таблицы, вызовите это n.
Возьмите декартово произведение отношений с альбомами и отношение song_albums. Это новое отношение имеет m * n строк. Теперь, если вы сделаете подсчет, сгруппированный по album_name
, каждый из m album_name
будет иметь значение n. Не очень полезно.
Но теперь, мы SELECT
из связей строк, где albums.album_id != song_albums.album_id
. Теперь, если вы делаете подсчет, сгруппированный по album_name
, количество для тех альбомов, которые не были в исходном соотношении songs
, будет n, тогда как те, которые изначально были там, будут иметь счет меньше n, поскольку строки были бы удалены на основе о том, сколько песен с этим альбомом находилось в исходном соотношении songs
.
Редактировать: Как оказалось, это не является строго реляционная-алгебра Решение: В SQL, 1 х 1 таблицы, такие, как один, содержащий n
может просто рассматриваться как целое число и используется в сравнении равенства. Однако, согласно Википедии, selection должно провести сравнение двух атрибутов отношения, или атрибута, и константы .
Еще одно препятствие, которое будет решать другой плохо рекомендованный декартово произведение: мы можем взять декартово произведение отношения 1 x 1, содержащее n
с нашим самым последним отношением. Теперь мы можем сделать правильный выбор реляционной алгебры, так как у нас есть атрибут, который всегда равен n
.
Поскольку это получил довольно сложный, здесь реляционная-алгебра выражение захватывая выше английский объяснение:
Обратите внимание, что n - отношение 1 x 1 w с атрибутом с именем «count».
Это невозможно. Проблема включает в себя отрицание и в реляционной алгебре, которая может быть заменена только с использованием реляционной разницы, которую вам, по-видимому, не разрешено использовать.
Мне любопытно посмотреть, что представляет ваш учитель в качестве решения этой проблемы.
Оказалось, что это действительно не "невозможно". См. Решение DPenner. –
- 1. Характеристические функции алгебраической функции
- 2. Функция булевой алгебры
- 3. Фрагменты алгебры Python
- 4. Simlification с использованием булевой алгебры
- 5. K-Map для решения алгебраической редукции
- 6. Haskell сделать запоминание алгебраической рекурсии родового
- 7. Программирование уравнения алгебры
- 8. Сортировка словаря объектов в результате алгебраической операции
- 9. Синтаксис реляционной алгебры
- 10. Операции реляционной алгебры
- 11. Определение алгебры на Proc
- 12. Упрощение булевой алгебры
- 13. Перевод реляционной алгебры деления
- 14. Функция поиска алгебры Python
- 15. Оптимизация реляционной алгебры
- 16. Есть ли способ вставить круг с алгебраической координатой в компоновку?
- 17. Отдел реляционной алгебры sql-эквивалент
- 18. Запрос реляционной алгебры
- 19. Упрощение булевой алгебры
- 20. реляционной алгебры конкретных операции
- 21. Пакет Линейной Алгебры
- 22. Пример алгоритма линейной алгебры
- 23. Упрощение этой булевой алгебры
- 24. Ошибки алгебры Haskell
- 25. Как минимизировать выражение с помощью булевой алгебры?
- 26. Уравнение упрощения с использованием булевой алгебры
- 27. Упрощение логической функции с помощью булевой алгебры
- 28. Дать следующий запрос с использованием реляционной алгебры
- 29. Поиск атрибутов с использованием реляционной алгебры
- 30. Упрощение выражения с помощью булевой алгебры
Ничего себе. Если когда-либо есть конкурс «большинство искаженных SQL-решений», вам обязательно нужно присоединиться. Тем временем я откажусь от своего «невозможного» и утвержу, что учителя, которые учат своих учеников подобным вещам, должны быть подвешены с самого высокого дерева или, по крайней мере, должны быть удержаны от обучения в базе данных на всю оставшуюся жизнь. –
Как я могу заняться последней частью в реляционной алгебре, так как n - произвольное число? –
@CodeEnthusiast С более декартовым продуктом acrobatery! Хорошая уловка, я отредактировал решение для размещения для этого. Надеюсь, это чисто академическое упражнение. – DPenner1