본문 바로가기

프로그래밍&IT/MySQL, Oracle, DB 공통

[Database] 카타시안 곱 (Cartesian Product)

Oracle뿐 아니라 전체적으로 같이 봐야할 항목이지만

일단 IT 하는 사람으로서 어느정도는 알아야 할 것이기에...

 

카타시안 곱 (Cartesian Product) 이란?

두 테이블의 모든 행을 조합하여 새로운 결과 집합을 생성하는 연산입니다. SQL에서는 JOIN 연산 중 하나로, 두 테이블 간에 조인 조건을 사용하지 않았을 때 발생하는 기본적인 조인 결과입니다.

예를 들어, Table_A와 Table_B가 각각 3개의 행을 가지고 있다면, Table_A와 Table_B의 카타시안 곱을 실행할 경우 결과는 3×3=93 \times 3 = 9개의 행이 포함됩니다.

SELECT * FROM Table_A, Table_B;

-- 아니면
SELECT * FROM Table_A
CROSS JOIN Table_B;

 

특정한 분석 목적을 위해 필요할 때는 있는데. 다음과 같은 경우에 카티시안 곱 (Cartesian Product) 을 사용할 수 있다.

1. 모든 조합이 필요한 경우

두 테이블의 모든 가능한 조합을 계산해야 할 때

예를 들어 가능한 모든 조합의 제품과 사용자에 대한 분석을 해야 할 때 유용합니다.

2. 모든 쌍 비교가 필요한 경우

특정 기준에 따라 각 항목을 다른 모든 항목과 비교해야 하는 경우

예를 들어 주식 데이터에서 각 주식의 모든 조합을 비교하여 특정 지표를 구할 때 사용될 수 있습니다.

3. 샘플 데이터를 생성할 때

테스트 데이터베이스를 만들거나 샘플 데이터를 생성해야 할 때, 테이블 간의 모든 조합을 통해 데이터를 늘릴 수 있습니다.

4. 조인 조건 없이 데이터 확인

데이터의 각 행을 확인하거나 조인 조건 없이 일단 모든 데이터 관계를 확인하고 싶을 때 초기 단계에서 사용할 수 있습니다.

5. 데이터 통계

두 데이터셋 간의 모든 가능한 관계를 통계적으로 계산해야 하는 경우 (예: 모든 고객이 모든 상품을 구매했을 때의 총 지출 분석) 카티시안 곱이 활용될 수 있습니다.

 

샘플 데이터를 만들 때 쓰는 걸 본적은 있었다.

여튼 깜빡해서 JOIN 조건을 빼먹으면 (사실 그럴일은 거의 없겠지만...) 데이터베이스에 부하를 줄 수는 있을테니

알아둘 필요는 있을 것이다.