AI 시대 DB 모델링 & SQL 완벽 마스터4-3 연습 문제
테크타니 LEARN — 섹션 04 · 연습 문제

4-3 연습 문제 — 1:1 / 1:N / N:M,
양쪽으로 물어봐야 관계가 보인다

이번 강의에서 배운 것 — "한 X 가 여러 Y? 반대도?" 질문으로 세 관계를 식별하는 법. 눈으로 읽고 끝내면 머리에 남지 않습니다. 시나리오마다 질문 두 개를 직접 양쪽으로 던져보고, 본인 답을 적어 본 다음에 정답을 여세요.

문제3문제 (도전 1 포함)권장 소요15~20분유형관계 판별 + 중간 테이블 설계사용 테이블shop 5테이블 + 실무 시나리오

섹션 4 에서의 위치

4-1 ~ 4-2

완료 ✓

4-3 1:1 / 1:N / N:M

강의 완료 ✓

4-3 연습 문제

지금 여기

4-4 외래키 (FK)

관계를 지키는 장치

4-5 ~ 4-8

ERD · 정규화 · 모델링 실전

AI 과외 선생님 활용법 — 가장 중요한 학습 습관

2-4에서 만든 AI 과외 선생님 세션을 그대로 쓰세요. 막히면 정답이 아니라 힌트만 요청하고, 다 푼 뒤에는 본인 답을 AI 에 던지며 “이 관계 분류가 맞아?” 라고 검증을 요청하세요. 관계 식별은 정답표 암기가 아니라 — 질문 두 개를 던지는 사고 습관입니다.

문제 1. 실무 시나리오 관계 종류 판단

다음 시나리오에서 — 두 대상이 어떤 관계인지 (1:1 / 1:N / N:M) 판단하세요.

#시나리오관계?
A게시글 ↔ 댓글?
B회원 ↔ 회원 (팔로우)?
C학생 ↔ 학교 (재학)?
D회원 ↔ 신용카드?
E책 ↔ 저자?
힌트”한 X 가 여러 Y? 반대도?” 질문으로 답하세요.
정답 보기
#시나리오관계설명
A게시글 ↔ 댓글1:N게시글 1개에 댓글 여러개, 댓글은 게시글 하나에만 속함
B회원 ↔ 회원 (팔로우)N:M한 명이 여러 명 팔로우 + 한 명이 여러 명에게 팔로우당함. 자기참조 N:M. 중간 테이블 follows 필요
C학생 ↔ 학교N:1 (=1:N 의 반대)학생 여러 명이 한 학교에 속함. 학생 → 학교 는 1:1 처럼 보이지만, 학교 → 학생 으로 보면 1:N
D회원 ↔ 신용카드1:N한 회원이 여러 카드 등록 가능 (가능한 경우)
E책 ↔ 저자N:M한 책에 여러 저자 가능 (공저), 한 저자가 여러 책 씀. 중간 테이블 book_authors 필요

핵심: 질문 두 개를 양쪽 모두 던지는 게 핵심.

문제 2. shop 의 N:M 이 어떻게 풀려있나

shop 에서 — 주문(orders) 과 상품(products) 의 N:M 관계가 어떻게 풀려있는지 설명하세요. 어느 테이블이 중간 테이블이고, 어떻게 1:N + N:1 두 쌍으로 분해됐는지.

정답 보기

order_items 가 중간 테이블 — 주문 ↔ 상품의 N:M 을 풀어줌.

N:M 분해 구조
orders (1) products (1)
│ │
│ 1:N 1:N │
▼ ▼
└───────▶ order_items ◀──────────┘
중간 테이블
N:M 한 쌍 → 1:N 두 쌍으로 분해 완료
원래 N:M분해된 두 1:N
ordersproductsorders (1) : order_items (N) — 한 주문에 여러 주문상세
products (1) : order_items (N) — 한 상품이 여러 주문상세에

중간 테이블의 의미: order_items“누가, 어떤 상품을, 몇 개 샀냐” 라는 교차 정보 를 담음. 단순 ID 두 개 뿐 아니라 quantity 같은 추가 컬럼도 가짐 — 이게 중간 테이블의 진가.

문제 3 (도전). “태그 기능” 을 shop 에 추가한다면

shop 에 — “상품에 태그를 달 수 있는 기능” 을 추가한다고 합시다. 예: “세일”, “신상품”, “베스트셀러” 등.

1) 상품 ↔ 태그는 어떤 관계? 2) 어떤 테이블을 추가해야 하나? 3) 그 테이블의 PK 와 FK 는?

힌트

한 상품에 여러 태그, 한 태그가 여러 상품에 달릴 수 있음.

정답 보기

1) 관계: N:M

  • 한 상품 → 여러 태그 (예: “신상품” + “세일” 동시 가능)
  • 한 태그 → 여러 상품 (“세일” 태그가 50개 상품에 달림)

2) 추가할 테이블 2 개

  • tags (태그 마스터): tag_id PK, tag_name
  • product_tags (중간 테이블): product_id FK, tag_id FK

3) ERD

product_tags 의 PK 는 복합키 (product_id, tag_id) — 한 상품에 같은 태그가 두 번 달리지 않게.

모범 SQL — 신상품 태그 달린 상품 찾기:

SELECT
  p.product_name
FROM
  products p
JOIN product_tags pt
  ON p.product_id = pt.product_id
JOIN tags t
  ON pt.tag_id = t.tag_id
WHERE
  t.tag_name = '신상품';
한 걸음 더

AI 에 이 ERD 와 함께 “베스트셀러 태그 + 의류 카테고리 상품” 같은 복합 쿼리도 던져보세요.

다 풀었다면 — AI 검증 루틴까지

✓ 4-3 훈련 완료 기준

관계 판별 질문 양쪽으로 던지기 · 중간 테이블 찾기 · N:M 직접 설계 — 세 문제를 본인 답으로 먼저 적어봤다면, 어떤 시나리오를 만나도 관계 종류가 보이기 시작합니다. 마지막 한 걸음 — 본인 답을 AI 선생님에게 검증받는 것 까지 해야 진짜 끝입니다.

관계를 식별했으면 다음 질문은 하나 — 이 관계를 DB 가 스스로 지키게 만들 수는 없을까? 그 장치가 바로 외래키(FK)입니다.

NEXT LESSON4-4 외래키 (FK) 와 무결성

식별한 관계를 선언으로 끝내지 않고 — DB 가 직접 지켜주게 만드는 장치를 배웁니다.

GO ▸ 다음 강의 시작하기