SQL 관계도 Many to Many(다대다 관계)

안녕하세요. 알렉스입니다. 이번에는 DB의 관계도중 하나인 다대다(Many to Many)에 대해서 알아보도록 하겠습니다. 


 다대다 관계는 테이블에서 유저와 댓글과의 관계라고 생각할수 있습니다. 


사진1) 다대다 관계


다대다 관계에서 중요한 것은 중간에 Join Table이 있다는 것입니다. 2개의 테이블이 다대다 관계를 가질때 연결지점인 JoinTable이 존재해서 users와 JoinTable, comment와 JoinTable간 일대다 관계를 만들어 줍니다. 


이러는 이유는 Table간의 중복성을 제거하기 위해서 입니다.

 

id

full_name

created_at

comment

1

alex

2021.12.15

Hi

2

alex

X

How

3

jhon

2021.12.16

You

4

alex

X

Me

5

jhon

X

End


위의 표를 보면 유저와 그 유저가 작성한 코멘트를 한번에 보여주는 테이블 입니다. 일단 중복이 된것도 문제 이지만 'created_at'은 유저 생성 날짜인데 여러번 반복됨을 알수 있습니다.


이렇게 되면 해당 데이터를 저장하기 위해서 저장 용량이 늘어나기도 하지만 필요한 데이터를 조회하기가 상당이 어렵습니다.


사진2) 분리된 테이블

사진 2처럼 테이블을 분리하면 중복을 제거할수 있을 분더러 위의 표보다 보기가 수월합니다. 예로 들어 1번 유저가 얼마나 코멘트를 작성했는지 알아볼려면 JoinTable의 userId칼럼에서 1만 찾고 그에 대응하는 commentId로 comment 테이블에서 찾으면 됩니다.




댓글

이 블로그의 인기 게시물

Lesson 12_1 프로퍼티 노드(Property Node)

DAQ로 전압 측정하기-2

Lesson 12_2 참조를 이용한 프로퍼티노드(Property Node)