Проверяет понимание операции декартова произведения в SQL и реляционной алгебре, которая соединяет каждую строку одной таблицы с каждой строкой другой.
Декартово произведение (или CROSS JOIN) — это фундаментальная операция реляционной алгебры, которая соединяет каждую строку одной таблицы с каждой строкой другой таблицы. Если первая таблица содержит N строк, а вторая — M строк, то результатом будет таблица с N * M строками. Эта операция редко используется сама по себе, так как часто приводит к огромному объему данных, но является основой для более сложных соединений, таких как INNER JOIN, где декартово произведение фильтруется условием.
Рассмотрим две простые таблицы: employees и departments.
-- Таблица employees
id | name
1 | Alice
2 | Bob
-- Таблица departments
id | dept_name
1 | Sales
2 | IT
-- Декартово произведение (CROSS JOIN)
SELECT * FROM employees CROSS JOIN departments;
-- Результат:
id | name | id | dept_name
1 | Alice | 1 | Sales
1 | Alice | 2 | IT
2 | Bob | 1 | Sales
2 | Bob | 2 | ITКак видно, каждый сотрудник соединен с каждым отделом. Если бы мы добавили условие WHERE employees.id = departments.id, то получили бы только строки, где id совпадают — это эквивалент INNER JOIN.
Декартово произведение полезно в следующих случаях:
Декартово произведение — это базовая операция, которую нужно понимать для работы с SQL, но на практике её следует использовать осторожно из-за экспоненциального роста данных. Оно чаще применяется в учебных целях или для генерации комбинаций, а не в production-запросах.