2026/06/26 4

Ch06. 논리적 모델링(3) - 다대다 관계 개념적, 논리적 모델링

속성이 없는 다대다(M:N) 관계 예시속성이 없는 다대다 관계는 두 엔티티를 연결하는 행위 자체에 추가적인 정보가 필요 없는 경우이다. 시나리오: 학생은 여러 과목을 수강할 수 있고, 과목은 여러 학생이 수강할 수 있다. 개념적 모델링개념적으로 학생과 과목은 직접 다대다(M:N) 관계로 연결된다. 학생이 어떤 과목을 듣는다는 사실 외에는 별도의 데이터가 없다. 이런 경우 연관 엔티티로 표현하지 않는다."학생 (M) >---엔티티: 학생(Student), 과목(Course)관계: 학생은 과목을 "수강한다(enrolls in)". 이 관계는 다대다(M:N)이다. 논리적 모델링논리적 모델링에서는 다대다 관계를 해소하기 위해 중간에 수강(ENROLLMENT)이라는 연결 테이블을 만든다. 이 테이블은 어떤 학생이..

Ch06. 논리적 모델링(3) - 다대다 관계 속성

관계의 속성(Attribute)과 연결 테이블그런데 여기서 매우 중요한 실무적 통찰이 나온다. 다대다 관계를 표현하는 연결 테이블은 단순히 두 테이블을 이어주는 기술적인 역할만 하는 것이 아니다. 대부분의 경우, 이 연결 테이블은 관계 자체에 대한 추가적인 속성을 가지게 된다. 예를 들어, 회원이 상품을 주문하는 행위를 생각해 보자.주문 당시의 상품 가격은 얼마였는가?(order_price)상품의 현재 가격은 할인이나 정책에 따라 계속 변할 수 있으므로, 주문이 일어난 시점의 가격을 반드시 기록해야 한다.몇 개를 주문했는가?(order_quantity) 주문 수량은 주문과 상품의 관계에서만 의미가 있는 매우 중요한 정보다.이러한 "order_price"나 "order_quantity" 같은 정보들은 or..

Ch06. 논리적 모델링(3) - 다대다 관계 연결 테이블

해결책: 연결 테이블(Junction Table)다대다 관계를 푸는 표준적인 해법은 중간에 새로운 테이블을 하나 더 만들어서, 기존의 다대다 관계를 두 개의 일대다 관계로 풀어내는 것이다. 이 중간 테이블을 연결 테이블(Junction Table) 또는 개념적 모델링에서는 연관 엔티티(Associative Entity)라고 부른다. 우리 쇼핑몰의 orders와 product 관계를 예로 들면, order_product라는 연결 테이블을 만드는 것이다. 참고로 여기서는 orders와 product를 연결하는 의미로 order_product라는 이름을 사용했다.기존 "M:N" 관계orders (M) (N) product연결 테이블로 분해orders (1) (N) order_product (N) (1) ..

Ch06. 논리적 모델링(3) - 다대다 관계 모델의 한계

다대다 관계를 이해하고 올바르게 설계하는 것은 데이터 모델링의 핵심 역량 중 하나다. 하지만 놀랍게도, 관계형 데이터베이스는 테이블 두 개만으로 다대다(M:N) 관계를 표현할 수 없다. 관계형 데이터베이스의 기본 제약진행하기 전에 관계형 데이터베이스의 기본 제약을 다시 확인해보자.관계형 데이터베이스에서 테이블의 행(row)은 다음과 같은 특징을 가진다.기본 키(PK)는 반드시 유일하다.한 테이블 안에서 동일한 PK를 가진 행은 존재할 수 없다.외래 키(FK)는 단일 행만 참조한다.외래 키 값 하나는 상대 테이블의 정확히 한 행만 가리킨다.컬럼은 원자적(atomic)이어야 한다.하나의 컬럼에 여러 값을 넣을 수 없다(제1 정규형). 두 테이블로 다대다 관계 시도100번 주문이 청바지(1), 티셔츠(2)라는..