Пожалуйста, очистите эту путаницу относительно реляционной алгебры / кортежа
1: Объяснение, данное для этого запроса, является "набором всех кортежей t таким, что существует кортеж s в заимствовании отношения, для которого значения t и s для атрибута cname равны, а значение s для суммы атрибут больше 1200". Но мы никогда не упоминали, к какому отношению относится t. Какое это отношение и почему?
2: На нижележащем изображении, дает ли "И" эти две проекции (содержащие атрибут "CustomerID" из отношения "customer" и атрибут "orderID" из отношения "order"), дает декартово произведение этих двух отношений в один столбец?
1 ответ
1:
Кортеж t, появляющийся слева, является кортежем ответа. { т |... t...} означает "множество каждого значения, скажем, такого, что... t... истинно". Для каждого значения кортежа мы называем его t, и если оно удовлетворяет условию, оно входит в ответ.
2:
В части 1 "∧" используется для связующего И в логическом выражении предиката в запросе на реляционное исчисление кортежей. Здесь, в 2, вы используете его между двумя выражениями отношений как оператор реляционной алгебры. Обычно "⋈" используется для ЕСТЕСТВЕННОГО СОЕДИНЕНИЯ, а "⨯" используется для КАРТЕСНОГО ПРОДУКТА (он же CROSS JOIN). Иногда есть только оператор NATURAL JOIN, и если он используется без общих атрибутов, то его использование / значение просто называется декартовым произведением.
Это два разных вида выражения. Однако "" "может использоваться в обоих случаях, хотя и для разных вещей. Это не проблема, потому что между двумя логическими выражениями предикатов это, очевидно, AND, а между двумя выражениями реляционной алгебры это, очевидно, оператор реляционной алгебры. Я ожидаю, что это будет ЕСТЕСТВЕННОЕ СОЕДИНЕНИЕ. Я не видел, чтобы он использовался для CARTESIAN PRODUCT, но помните, что ЕСТЕСТВЕННОЕ СОЕДИНЕНИЕ без общих атрибутов является / возвращает "декартово произведение". Итак, ваш пример "дает декартово произведение этих двух".
Некоторые варианты реляционной алгебры имеют кортежи, которые неупорядочены с уникальными именами атрибутов. Тогда обычно CARTESIAN PRODUCT берет два отношения, которые не имеют общих атрибутов, и возвращает их ЕСТЕСТВЕННОЕ СОЕДИНЕНИЕ. Так как имена атрибутов tuple t в вашем примере исчисления не имеют какого-либо порядка, возможно, это такая связь.
Некоторые варианты реляционной алгебры имеют упорядоченные кортежи, в которых имена атрибутов могут появляться несколько раз. Затем обычно CARTESIAN PRODUCT возвращает кортежи с общими именами атрибутов, появляющимися несколько раз. Это похоже на слайды к учебнику Silberschatz, Korth & Sudarshan. (Который использует "∧" только в качестве AND.) Тогда у NATURAL JOIN есть только одна копия общих атрибутов, а у CARTESIAN JOIN есть две, поэтому они могут различаться. Но в вашем примере два результата PROJECTION имеют непересекающиеся наборы атрибутов. Таким образом, ЕСТЕСТВЕННОЕ СОЕДИНЕНИЕ и КАРТЕССКИЙ ПРОДУКТ вернули бы то же самое отношение. (Предполагая, что порядок атрибутов одинаков.)
[Причина, по которой один и тот же символ иногда используется для AND и NATURAL JOIN (и может использоваться для CARTESIAN PRODUCT), заключается в том, что если выражение R для реляционной алгебры содержит кортежи, где r (...), а выражение S для реляционной алгебры содержит кортежи, где s (...) тогда R NATURAL JOIN S содержит кортежи, где r (...) AND s (...). Фактически, каждое выражение реляционной алгебры является значением соответствующего выражения реляционного исчисления, где имена отношений соответствуют заданным предикатам (значениям), а логические операторы соответствуют операторам отношений.]
Используйте отношения, операторы и символы, которые вам сказали использовать ваш инструктор / учебник. Если сомневаетесь, определите свои символы или используйте слова.