카티션 곱
검색 하고자 하는 내용만이 아닌
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 |