MySQL을 처음 배우면서, 테이블간의 관계를 글로만 써놓고 데이터를 다루려니 머릿속으로 그려가면서 SQL문을 작성해야했기 때문에 시간이 더 오래 걸렸습니다.
테이블간의 관계를 미리 스키마 디자인할 때 전부 명시해놓고, SQL문을 작성한다면 더 생산성있는 작업이 가능하다는 것을 실습을 해가며 느꼈습니다.
dbdiagram.io 에서 테이블간의 관계를 시각화할 수 있고, 이것을 보며 편리하게 SQL문을 작성할 수 있었습니다.
문법이 여러가지 있었지만, 저는 아주 기초적으로 테이블간의 관계만 명시하기 위해 두가지 문법만 사용했습니다.
예를 들어, 테이블의 구성이 고객
, 상품
, 주문
으로 구성된 경우입니다.
여기서 고객
과 주문
은 일대 다(1:N) 관계입니다.
주문
과 상품
은 다대 다(N:M) 관계입니다.
하나의 주문
에 여러 개의 상품
이 담길 수 있고,
하나의 상품
에 여러 개의 주문
이 담길 수 있습니다.
즉, 다대 다 관계를 표현하기 위해, 주문 - 상품
이라는 Join Table
을 생성합니다.
그 테이블엔 주문
의 id
, 상품
의 id
를 참조 키로 하여 담기게 됩니다.
dbdiagram.io으로 위 예시를 작성해보았습니다.
users(고객)
, items(상품)
, orders(주문)
, order-items(주문-상품)
테이블을 생성하고, 필드의 값을 각각 설정합니다.
테이블간 관계를 시각화하기 위해, Ref
를 사용했습니다.
일대 다 관계인 경우, 예를 들어 users
와 orders
의 관계는 users
가 1
, orders
가 다
가 되는 일대 다 관계입니다.
dbdiagram.io에서 일대 다 관계를 표현할 땐, 다
가 되는 테이블이 더 크다 는 부등호 표시(>
)를 하는 것으로 표현할 수 있습니다.
위 예시로 보면, orders
가 다
가 되기 때문에, orders > users
가 된 것을 확인할 수 있습니다.
이렇게 하여 시각화된 테이블간의 관계는 아래와 같습니다.
이렇게 시각화된 테이블간의 관계를 통하여 SQL문 작성의 생산성을 향상할 수 있습니다.