* 생활코딩 SQL JOIN 강의를 들으며 정리한 내용입니다.
[학습 내용]
관계형 데이터베이스에서 테이블과 테이블의 관계를 이용해서 새로운 테이블을 만들어내는 태크닉인 join 학습
- 테이블을 분리하는 법
- 분리 된 테이블을 합성해서 하나의 테이블로 만드는 법 (join)
- join의 종류와 사용법
- inner join
- left outer join, right outer join
- full outer join
[연습용]
테이블 행 컬럼의 중복이 발생했을 때
갯수가 작을 때는 괜찮겠지만, 중복되는 행의 갯수가 늘어나는 건 좋지 않고 나중에 심각한 문제를 발생시킬 수 있다.
topic | ||||||
tid | title | description | name | city | job_title | job_description |
1 | HTML | HTML is … | egoing | jeju | developer | developer is … |
2 | CSS | CSS is … | leezche | jeju | designer | designer is … |
3 | Database | Database is .. | egoing | jeju | developer | developer is … |
그리고 만약 다른 테이블이 하나 더 존재하게 된다면, 여기에서 또 한번 중복이 발생할 수 있다.
comment | |||||
cid | description | name | city | job_title | job_description |
1 | lorem ... | egoing | jeju | developer | developer is … |
=> 중복을 제거해야 함
1. 저자에 대한 정보를 표로 쪼갠다.
topic | |||
tid | title | description | author_id |
1 | HTML | HTML is … | 1 |
2 | CSS | CSS is … | 2 |
3 | Database | Database is .. | 1 |
topic에는 author의 아이디값(기본키-id, 외래키-author_id)을 부여한다.
author | |||
id | name | city | profile_id |
1 | egoing | seoul | 1 |
2 | leezche | jeju | 2 |
직업이 중복되는 부분도 아래와 같이 분리
profile | ||
id | job_title | job_description |
1 | developer | developer is … |
2 | designer | designer is … |
이와 같이 표를 분산하여 중복을 제거할 수 있다.
그리고 모든 표는 하나의 주제(테마)만 가져야 한다는 조건에도 부합한다.
* 테이블을 합쳤을 때의 장점과 단점
장점) 보기가 편하다. 직관적으로 알 수 있음
단점) 수정하기가 불편하다. 모두 수정해야 하기 때문에
=> 이러한 문제점을 해결하기 위해 RDBMS에서 생겨난 것이 JOIN이다.
'CS > Database' 카테고리의 다른 글
[RDBMS] SQL JOIN(4) - FULL OUTER JOIN, EXCLUSIVE LEFT JOIN (0) | 2019.05.27 |
---|---|
[RDBMS] SQL JOIN(3) - INNER JOIN (0) | 2019.05.27 |
[RDBMS] SQL JOIN(2) - LEFT OUTER JOIN (0) | 2019.05.27 |