프로그래밍 언어/Spring
1대N, N대1, N대M 관계에 대해 알아보자
brianshin96
2023. 11. 20. 21:36
앞서 Entity를 만들고 ERD를 그려보면서 서로 다른 두 데이터의 연관관계에 대해 살펴보았습니다.
이번엔 그 연관관계의 심화과정이라 할 수 있는 1대N, N대1, 그리고 N대M관계에 대해 알아보겠습니다.
1대N 관계
우리가 휴게소에서 음식을 주문한다고 가정해봅시다.
고객이 음식을 주문할 때, 주문 정보는 고객 테이블에 들어가야할까요?
아님 음식 테이블에 들어가야할까요?
일단, 한 명의 고객이 여러 음식을 시킬 수 있으니 고객이 1, 음식을 N으로 하고 1대N 관계가 성립한다고 볼 수 있습니다.
아래 표와 같이 주문이 들어왔다고 생각해봅시다.
주문번호id | 이름 | 음식id |
order0001 | 민수 | food0001 |
order0002 | 영희 | food0001 |
order0003 | 민수 | food0002 |
고객 테이블에 주문번호를 추가시켰더니 민수가 중복되는 결과가 생겼습니다.
N대1 관계
그렇다면 음식이 고객을 여러명 가질 수 있다고 가정합니다.
주문번호id | 음식이름 | 가격 | 고객id |
order0001 | 라면 | 5000 | user0001 |
order0002 | 라면 | 5000 | user0002 |
order0003 | 우동 | 6000 | user0001 |
아까 전과 마찬가지로 음식이 중복되는 결과가 발생했습니다.
N대M 관계
이번엔 새로운 테이블을 추가해보겠습니다.
고객
고객id | 이름 |
user0001 | 민수 |
user0002 | 영희 |
음식
음식id | 음식이름 | 가격 |
food0001 | 라면 | 5000 |
food0002 | 우동 | 6000 |
주문
주문id | 고객id | 음식id |
order0001 | user0001 | food0001 |
order0002 | user0002 | food0001 |
order0003 | user0001 | food0002 |
1:N, N:1관계로는 표현하기 힘들었던 고객과 음식 사이의 N:M 관계를 중간테이블을 하나 둠으로써 해결할 수 있었습니다.