🚀 Database 설계 실습 정리 - 장동욱 강사님 강의
본 글은 MySQL Database 설계 실습 강의 내용을 정리한 자료입니다.
Amazon.com의 E-commerce 설계를 바탕으로 실전 Database 설계를 익혀봅니다. 🎯
📌 1. 3주 동안 Database 설계 과정
✅ 1주차: Database 설계 및 구현
✅ 2주차: Database 최적화 - 검색 시스템
✅ 3주차: 트랜잭션 - 주문 시스템
📌 2. Amazon.com 설계
여러분이 생각하는 도서 E-commerce란…?
- E-commerce의 기본적인 요구사항
- 사용자는 회원가입 후 로그인 가능해야 함
✅ Database 설계 시 고려할 사항
- 영구적/반영구적으로 저장되어야 하는 데이터
- 중복을 최소화하고 정규화를 적용
📌 3. 테이블 설계 기본 원칙
✅ 테이블을 만들 때 고려해야 할 사항
📌 명사(Noun) = 객체(Entity)
- 객체가 지녀야 하는 속성도 논의해야 함
- 예시
- 학생 → 학번, 학부, 학년, 입학 연도, 이메일, 전화번호
- 주문, 배송, 결제, 카테고리 등
📌 컬럼(Column)에는 중복된 데이터가 들어가면 안 된다?
- 진위 여부: ❌ 완전히 틀린 말은 아님. 하지만 무조건 그런 것은 아님.
- 설명:
- 데이터 정규화(Normalization)를 통해 중복을 최소화하는 것이 원칙
- 하지만 실무에서는 성능 최적화를 위해 일부 중복을 허용하기도 함
- 예시:
- 사용자 테이블과 주문 테이블의 주소 정보
- 원칙적으로는 주소 테이블을 따로 만들어 정규화하는 것이 좋음
- 하지만 성능 최적화를 위해 주문 테이블에 배송 주소를 중복 저장할 수도 있음
- 사용자 테이블과 주문 테이블의 주소 정보
📌 4. 실전에서 Database 설계 경험을 쌓는 방법?
이론만으로는 어렵다!
- 실무에서는 직접 부딪히며 경험을 통해 빠르게 습득
- 실제 프로젝트를 직접 해보는 것이 가장 빠른 학습 방법
✅ 경험을 쌓을 수 있는 방법
1️⃣ 오픈 프로젝트 참여 (깃허브, 오픈소스 기여)
2️⃣ MySQL을 활용한 개인 프로젝트 진행
3️⃣ AI 추천 시스템과 연동하여 DB 설계 실습
4️⃣ 실제 E-commerce 사이트 모델링 & 구현
5️⃣ ChatGPT나 AI 툴을 활용하여 자동 ERD 생성 & 설계안 검토
📌 5. 테이블 간 관계 설정
📌 동사(Verb) = 관계(Relationship)
- 객체(Entity) 간 관계 설정
- 예시
- 학생 → 강의를 수강한다.
- 회원 → 장바구니를 소유한다. (회원당 장바구니 한 개, 종속적 관계)
- 작가 → 도서를 여러 권 집필한다.
📌 동사를 꼭 쓰지 않아도 됨
- 회원 - 장바구니 (회원이 장바구니를 갖고 있음)
- 작가 - 도서 (작가는 여러 도서를 집필)
📌 6. Database 설계도 (ERD) 그리기
✅ 명사(Entity) → 테이블 (객체 정의)
✅ 동사(Relationship) → 테이블 간 관계 (FK 설정)
📌 7. ERD (Entity Relationship Diagram)란?
✅ 개발자는 IT 산업의 건축가
✅ ERD는 소프트웨어의 청사진 (설계도)
📌 ERD의 필요성
- 구현(시공) 전에 설계를 명확하게 정리
- 설계 단계에서 오류를 최소화하여 개발 비용 절감
- 신규 입사자, 인수인계 시 학습 비용 최소화
- 팀 내/부서 간 효과적인 커뮤니케이션 도구
📌 8. Database 설계도 작성 방법
📌 1) 손으로 직접 그리기 (화이트보드 사용)
- 장점: 빠르게 아이디어를 정리 가능
- 단점: 유지보수 어려움 (지우면 복구 불가)
📌 2) 온라인 툴 사용 (draw.io, ERDCloud)
- 장점: ERD를 디지털 문서로 저장하여 관리 가능
- 단점: 시간이 오래 걸릴 수 있음
📌 3) AI 활용하여 자동 생성 (추천)
- 설계도 생성뿐만 아니라 설계 검토 가능
- ERD를 코드(DSL)로 생성하여 문서화 가능
- 주요 툴:
- PlantUML → Java 기반 (복잡하지만 강력한 기능)
- Mermaid.js → JavaScript 기반 (간단하고 빠른 시각화)
✅ Mermaid.js로 ERD 자동 생성 예제
erDiagram
MEMBER ||--|| CART : owns
AUTHOR ||--o{ BOOK : writes
PUBLISHER ||--o{ BOOK : publishes
MEMBER ||--o{ BOOK : purchases
MEMBER ||--o{ REVIEW : writes
BOOK ||--o{ REVIEW : has
CATEGORY ||--o{ BOOK : contains
ORDER ||--o{ MEMBER : placed by
ORDER ||--o{ BOOK : includes
MEMBER ||--|| ADDRESS : has
BOOK ||--|{ DELIVERY : shipped via
✅ 설명
- MEMBER ||--|| CART : owns → 회원은 장바구니를 소유
- AUTHOR ||--o{ BOOK : writes → 작가는 도서를 여러 권 집필
- CATEGORY ||--o{ BOOK : contains → 카테고리는 여러 도서를 포함
- ORDER ||--o{ BOOK : includes → 주문은 여러 개의 도서를 포함 가능
📌 9. ERD 설계도를 활용한 개발 프로세스
📌 설계도를 기반으로 개발 프로세스를 진행
1️⃣ Component Diagram → 시스템/서비스 단위 설계
2️⃣ Sequence Diagram → 서버 사이드에서 처리 순서
3️⃣ Class Diagram → 객체 지향 설계 (클래스/메소드 포함)
4️⃣ Database 설계 → ERD 기반 테이블 구조 정의
✅ 마무리 및 정리
✅ Database 설계는 개발의 필수 요소!
✅ 설계도를 통해 유지보수성과 확장성을 고려하여 구축해야 함
✅ ERD, UML 등의 도구를 활용하여 효율적인 설계를 진행
✅ AI와 자동화 툴을 활용하면 보다 빠르고 정확한 설계 가능
'특강' 카테고리의 다른 글
Database Amazon 검색 시스템 구축 - 장동욱 강사님 강의 (0) | 2025.03.27 |
---|---|
Database Erd 및 관계형 데이터베이스 모델링 쉽게 이해하기- 장동욱 강사님 강의(250325) (0) | 2025.03.25 |
Database - 파머 강사님 강의(250321) (0) | 2025.03.21 |
백엔드 개발 및 SQL 전문성 향상 (0) | 2025.03.18 |
Database - 데이터베이스란? DBMS? RDBMS?스키마? (0) | 2025.03.18 |