CS/Database

[RDBMS] SQL JOIN(1) - JOIN

칸타탓 2019. 5. 27. 01:40

* 생활코딩 SQL JOIN 강의를 들으며 정리한 내용입니다.

 

[학습 내용]

관계형 데이터베이스에서 테이블과 테이블의 관계를 이용해서 새로운 테이블을 만들어내는 태크닉인 join 학습

  • 테이블을 분리하는 법
  • 분리 된 테이블을 합성해서 하나의 테이블로 만드는 법 (join)
  • join의 종류와 사용법
    • inner join
    • left outer join, right outer join
    • full outer join

 

[연습용]

https://docs.google.com/spreadsheets/d/1OUHAnTPdx0ga8P1_HBm6WUuWs02tvV-31mgi__XmRbc/edit#gid=349905192

 


 

테이블 행 컬럼의 중복이 발생했을 때

 

갯수가 작을 때는 괜찮겠지만, 중복되는 행의 갯수가 늘어나는 건 좋지 않고 나중에 심각한 문제를 발생시킬 수 있다.

 

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이다.