DB모델링에는 1:N, N:1 , M:N 관계같이 다양한 관계가 있다.(ERD에서는 사실 1:N관계로 이루어져있다.) 그 중에서도 M:N관계가 다른 관계보다 까다롭고 생각해봐야 할 것이있다.
1.개요
DB모델링에는 1:N, N:1 , M:N 관계같이 다양한 관계가 있다.(ERD에서는 사실 1:N관계로 이루어져있다.) 그 중에서도 M:N관계가 다른 관계보다 까다롭고 생각해봐야 할 것이있다.
1.2. M:N 관계
: M:N관계는 서로 관계를 가진 양쪽 엔티티 모두 1:N관계를 가지는 것을 말한다. 예를 들어 제품과 제조업체 엔티티가 있다고 가정해보자. 제품에는 컴퓨터, 냉장고, 세탁기 컬럼이 있고, 제조업체에는 삼성, LG, 애플이 있다. 제품 엔티티에 있는 컴퓨터 컬럼은 제조 업체에 따라 각기 다른 컴퓨터명을 가질 수 있다. 삼성은 갤럭시, LG는 그램, 애플은 맥북. 이처럼 제품 엔티티는 제조업체 엔티티와 1:N관계를 가진다.
제조업체 엔티티 입장에서도 제품 엔티티와 1:N관계를 가진다. 삼성, LG, 애플은 각기 다른 컴퓨터, 냉장고, 세탁기를 가질 수 있어 1:N관계를 형성한다. 하지만 M:N은 완성되지 않은 작업이다. 즉, 엔티티의 관계만을 나타내기 때문에 구체적으로 한 엔티티의 요소가 다른 엔티티의 요소와 관계 되어있는 지 알 수 없다. 아래 표를 예로 들면, 어느 제조업체가 어느 제품을 만드는 지 알지 못한다.(반대도 마찬가지다.) 이 문제를 해결하기위해 추가적인 작업을 해줘야 한다.

1.2. M:N문제를 해결하기 위한 추가적인 작업
: M:N관계는 매핑 테이블(제품_제조업체)을 만들고 1:N 관계를 두 개로 바꾼다. 매핑 테이블의 FK는 각기 다른 엔티티의 PK가 된다.

참조
- Database 08. Cardinality M:N, MySQL Workbench (https://www.youtube.com/watch?v=ejVIvfGSztw&list=PL9hiYwOHVUQcRkS4XRnsrgPIRih9H7L32&index=11&ab_channel=Jacob%27sLecture)
DB모델링에는 1:N, N:1 , M:N 관계같이 다양한 관계가 있다.(ERD에서는 사실 1:N관계로 이루어져있다.) 그 중에서도 M:N관계가 다른 관계보다 까다롭고 생각해봐야 할 것이있다.
1.개요
DB모델링에는 1:N, N:1 , M:N 관계같이 다양한 관계가 있다.(ERD에서는 사실 1:N관계로 이루어져있다.) 그 중에서도 M:N관계가 다른 관계보다 까다롭고 생각해봐야 할 것이있다.
1.2. M:N 관계
: M:N관계는 서로 관계를 가진 양쪽 엔티티 모두 1:N관계를 가지는 것을 말한다. 예를 들어 제품과 제조업체 엔티티가 있다고 가정해보자. 제품에는 컴퓨터, 냉장고, 세탁기 컬럼이 있고, 제조업체에는 삼성, LG, 애플이 있다. 제품 엔티티에 있는 컴퓨터 컬럼은 제조 업체에 따라 각기 다른 컴퓨터명을 가질 수 있다. 삼성은 갤럭시, LG는 그램, 애플은 맥북. 이처럼 제품 엔티티는 제조업체 엔티티와 1:N관계를 가진다.
제조업체 엔티티 입장에서도 제품 엔티티와 1:N관계를 가진다. 삼성, LG, 애플은 각기 다른 컴퓨터, 냉장고, 세탁기를 가질 수 있어 1:N관계를 형성한다. 하지만 M:N은 완성되지 않은 작업이다. 즉, 엔티티의 관계만을 나타내기 때문에 구체적으로 한 엔티티의 요소가 다른 엔티티의 요소와 관계 되어있는 지 알 수 없다. 아래 표를 예로 들면, 어느 제조업체가 어느 제품을 만드는 지 알지 못한다.(반대도 마찬가지다.) 이 문제를 해결하기위해 추가적인 작업을 해줘야 한다.

1.2. M:N문제를 해결하기 위한 추가적인 작업
: M:N관계는 매핑 테이블(제품_제조업체)을 만들고 1:N 관계를 두 개로 바꾼다. 매핑 테이블의 FK는 각기 다른 엔티티의 PK가 된다.

참조
- Database 08. Cardinality M:N, MySQL Workbench (https://www.youtube.com/watch?v=ejVIvfGSztw&list=PL9hiYwOHVUQcRkS4XRnsrgPIRih9H7L32&index=11&ab_channel=Jacob%27sLecture)