4-5 연습 문제 — ERD 읽는 법,
처음 보는 ERD도 5단계로 읽는다
이번 강의에서 배운 5단계 — 마스터 → PK → FK → 관계 종류 → 시나리오 — 를 처음 보는 도서관 대출 시스템 ERD에 그대로 적용해봅니다. 눈으로만 읽은 ERD는 금방 흐려지지만, 손으로 5단계를 직접 돌려본 ERD는 머리에 남습니다. 풀어본 뒤에는 AI에게 답을 던지고 "5단계 분석이 맞나" 검증까지 해보세요.
이번 연습의 위치
완료 ✓
강의 완료 ✓
지금 여기
테이블을 쪼개는 이유
섹션 4 마무리 ⭐
2-4에서 만든 AI 과외 선생님 세션을 그대로 쓰세요. 막히면 정답이 아니라 힌트만 요청하고 — 다 푼 뒤에는 본인의 답을 던지며 “내 5단계 분석이 맞는지 검증해줘” 라고 물어보세요. 직접 읽고 → 검증받는 이 순서가 ERD 읽는 눈을 만듭니다.
도서관 시스템 ERD
다음 ERD 는 도서관 대출 시스템입니다. 우리 쇼핑몰 DB가 아니라 처음 보는 ERD — 이걸 보면서 아래 3 문제를 풀어보세요.
문제 1. 5단계 적용
위 도서관 ERD 에 5 단계 (마스터 → PK → FK → 관계 → 시나리오) 를 적용해서 — 각 단계의 결과를 정리하세요.
정답 보기
| 단계 | 결과 |
|---|---|
| 1. 마스터 | publishers, members (FK 없음) |
| 2. PK | publisher_id, member_id, book_id, loan_id — 모두 단일 컬럼 |
| 3. FK | books.publisher_id → publishers.publisher_id / loans.member_id → members.member_id / loans.book_id → books.book_id (총 3개) |
| 4. 관계 종류 | publishers→books (1:N), members→loans (1:N), books→loans (1:N). loans 가 members ↔ books 의 N:M 을 풀어주는 중간 테이블 (member 1명이 book 여러권 빌리고, book 1권이 member 여러명에게 대출됨 — 시간 다르면) |
| 5. 시나리오 | 출판사 등록 → 책 등록 (출판사 FK 와 함께) → 회원 등록 → 회원이 책 대출 → loans 행 생성 (loaned_at) → 반납 시 returned_at 채워짐 |
문제 2. 표기법 객관식
다음 mermaid ERD 표기법 중 — 1:N 관계 를 나타내는 것은?
A. members ||--|| orders
B. members ||--o{ orders
C. members o|--o| orders
D. members |{--o{ orders정답 보기
B. members ||--o{ orders
- A:
||↔||→ 1 : 1 - B:
||(1) ↔o{(0 또는 N) → 1 : N ✓ - C:
o|↔o|→ 0..1 : 0..1 - D:
|{(1..N) ↔o{(0..N) → N : M (양쪽 모두 multiple)
양쪽 끝 모양을 양방향으로 읽고, “하나 / 여럿” 만 구분하면 됩니다.
문제 3 (도전). 비즈니스 추론
위 도서관 ERD 만 보고 — 다음 비즈니스 질문에 답할 수 있을까요? 답하기 어렵다면 어떤 정보가 더 필요한지.
| # | 질문 |
|---|---|
| A | ”현재 대출 중인 책 (반납 안 된 책) 수를 조회 가능한가?” |
| B | ”한 회원이 같은 책을 두 번 이상 빌렸는지 알 수 있나?” |
| C | ”이 책의 재고가 몇 권 있는지 알 수 있나?” |
| D | ”연체된 대출이 몇 건인지 알 수 있나?” |
정답 보기
| # | 답 | 이유 |
|---|---|---|
| A | YES | loans WHERE returned_at IS NULL 로 알 수 있음. NULL = 아직 반납 안 됨 |
| B | YES | loans GROUP BY member_id, book_id HAVING COUNT(*) > 1 |
| C | ❌ 부족 | books 에 재고/소장 권수 컬럼이 없음. 이 ERD 로는 “이 책 빌릴 수 있나?” 답 못함. 한 책의 모든 대출이 동시에 가능한지도 불명. 모델링 결함 — 실제 도서관 시스템이라면 book_copies 같은 테이블이 필요할 것 |
| D | ❌ 부족 | 대출 기한 (due_date) 컬럼이 없음. loaned_at 만 있어서 “몇 일 후 반납해야” 알 수 없음. 추가 컬럼 필요 |
ERD 5단계 분석은 — “무엇이 가능한가” 뿐 아니라 “무엇이 못 되는가” 도 드러내줍니다. 모델링의 빈틈을 발견하는 능력.
AI 에게 “이 ERD 로 도서관 운영 가능한가? 빈 곳은?” 던져보세요. 같은 결론이 나오는지 비교.
처음 보는 ERD를 5단계로 끝까지 읽어냈다면 — 이제 테이블이 왜 이렇게 쪼개져 있는지, 그 이유를 배울 차례입니다.