식별 관계 (Identifying) — 부모 없이는 자식이 존재 의미가 없는 관계. 자식의 PK가 부모의 PK에 종속. ERD에서 실선으로 표시
비식별 관계 (Non-identifying) — 자식이 독립적인 PK를 가지고, 부모 PK는 FK로만 참조하는 관계. 부모가 없어도 자식의 "식별자"는 독립적으로 존재. ERD에서 점선으로 표시
"부모 행이 삭제되면 자식 행은 의미를 잃는가?"
예 → 식별 관계 / 아니오 → 비식별 관계
이번 프로젝트 스키마에 적용하면
orders → order_items : 식별 관계 (실선) order_items는 주문이 없으면 존재 자체가 의미 없음. "어떤 주문에 속한 항목인지"가 그 행의 본질
users → orders : 비식별 관계 (점선) 주문은 자신만의 id로 식별. 유저 계정이 탈퇴해도 주문 이력은 독립적으로 보존돼야 함 (환불, 세금 처리 등) user_id는 그냥 "누가 주문했냐"를 참조하는 FK
menus → order_items : 비식별 관계 (점선) menu_name, unit_price 스냅샷 덕분에 메뉴가 삭제되어도 order_items는 독립적으로 의미를 유지. menu_id FK: "당시 어떤 메뉴였는지" 참조하는 정보
users → point_transactions, orders → point_transactions : 비식별 관계 (점선) 각 포인트 트랜잭션은 고유한 금융 이벤트로서 독립적인 id를 보유. 유저나 주문을 참조하지만, 그것들에 종속되어 식별되는 개념은 아님
'Projects > [Spring] Coffee Shop Project' 카테고리의 다른 글
| 트러블슈팅 : MySQL Access Denied 오류 해결하기 (0) | 2026.04.02 |
|---|---|
| 트러블슈팅: redisson-spring-boot-starter Spring Boot 4.x 호환성 오류 (0) | 2026.04.02 |
| API 명세서 만들어보기 (3) | 2026.04.01 |
| 3. 1차 피드백 후 수정 ERD (0) | 2026.03.27 |
| [데이터베이스] 1. 데이터 모델링과 ERD 설계 (0) | 2026.03.26 |