Отдел реляционной алгебры
В настоящее время я занимаюсь вопросом деления реляционной алгебры. У меня есть следующие два отношения:
A | B | C B
--|---|-- ---
1 | 2 | 3 2
Relation R = 1 | 2 | 6 Relation T =
4 | 2 | 2
4 | 5 | 6
Сейчас я делаю следующую операцию: R ÷ T
Когда я вычисляю это, мой результат выглядит следующим образом:
A | C
--|--
1 | 3
R ÷ T = 1 | 6
4 | 2
Для меня это потому, что для разделения я смотрю на эти кортежи в R
которые присутствуют в сочетании со всеми кортежами в T
, Но когда я использую калькулятор реляционной алгебры, такой как RelaX, он возвращает
A | C
--|--
R ÷ T = 4 | 2
Где я ошибся? Заранее благодарю за любую помощь.
Есть кто-нибудь, кто может помочь?
1 ответ
Выполнение деления на эти схемы не очень хорошо, чтобы полностью понять, как работает оператор. Определения этого оператора не очень понятны, и операция обычно заменяется комбинацией других операторов.
Ясный способ увидеть, как это работает в вашем случае, заключается в создании нового экземпляра R с упорядоченными столбцами, правильно определяющими новую схему: (A,C,B). Это означает, что атрибут T появляется как последний атрибут в A. В этом случае, когда вы выполняете действительно простое деление, увидеть результат довольно просто, но представьте, что у вас есть схема R(A,D,B, В) и Т (В, Г). Здесь атрибуты T появляются с другим порядком в R, и, учитывая некоторые экземпляры с небольшим количеством кортежей, это уже затруднит проверку, просто просматривая их.
Это может быть самым сложным оператором, определенным в реляционной алгебре, поскольку запрос обычно включает в себя понятия из выбора, проекции и объединения. Также сложно выразить это только словами. Хороший способ думать об этом операторе - думать о GROUP BY на SQL. В вашем примере это означает использование атрибутов GROUP BY A, C, что создаст группы с каждой комбинацией различных значений для этих атрибутов, которые появляются в экземпляре схемы. Каждая из этих групп будет иметь набор всех значений B, связанных с комбинациями значений A, C. Если вы рассматриваете значения атрибута B в экземпляре T как набор, вы можете быстро проверить: каждая группа, полученная группированием по A, C, если набор значений B в T включен в набор значений B в R, то значения A, C являются кортежем результирующего отношения.
Я знаю, что немного опоздал на этот вопрос, но я видел много людей, смущенных этим. Если это не достаточно ясно, я оставляю ссылку на документ, который я написал, объясняя это намного более подробно и с действительно хорошим примером, ЗДЕСЬ.