진짜 개발자
본문 바로가기

Database

카티션 곱

728x90

카티션 곱

검색 하고자 하는 내용만이 아닌 

Join에 사용된 테이블의 모든 데이터가 Return 되는 현상을 말한다.


*발생원인

1. Join 조건을 정의하지 않은 경우

2. Join 조건이 잘못된 경우

3. 첫번째 테이블의 모든 행들이 두번째 테이블의 모든 행과 조인이 되는 경우




실습


시나리오

1. User Table Department Table 두테이블이 존재한다.

2. User Table에서 외래키로 Department Table의 기본키를 가지고 있다.

3. 이때 'com'부서에 속한 학생의 이름과, 속한 부서의 이름을 출력한다.



테이블 값


1. User Table

*did는 department의 primary key를 가리키는 foriegn key이다.


2. Department Table



문제발생 예제



1. SQL 문



2. 출력 결과


=> User Table과 Department Table을 조인하고 조건으로 user의 did가 1인 조건을 주었다

 결과로 원치않는 broad Department의 정보까지 얻어왔다.

 *user테이블의 외래키인 did는 1로 조건이 주어졌지만

  조인 할때 사용된 department테이블의 조건이 주어지지 않아서 생기는 오류이다.


 문제해결 예제


1. SQL 문



2. 출력 결과



 문제분석


1. 카티션곱


        

=> 아무조건을 주지 않고 카티션 곱을하면 이러한 결과가 나온다


2. User.did = 1 조건 추가

    

=> user.did = 1 조건을 추가하면 

    외래키인 did 값이 1이 아닌 kdh에 대한 튜플들이 제거 된다


3. department.did = 1 조건 추가


    


=> 이어서 department.did = 1 의 조건을 추가하게 되면 

department table에서 did 가 1이아닌 튜플이 제거되게되어 우리가 원하는 값이 출력된다.










'Database' 카테고리의 다른 글

Database - 샤딩과 파티셔닝  (2) 2021.03.13
Database - 설계 및 구축 프로젝트  (19) 2019.01.23