ERD(Entity Relationship Diagram):
| 역할 | 설명 |
|---|---|
| 요구사항 분석 | 서비스의 데이터 흐름과 구조를 명확하게 이해하게 해 줌 |
| 데이터베이스 설계 | 정규화된 테이블과 관계를 정의하고 SQL 설계에 기반을 제공 |
| 디버깅 및 유지보수 | 데이터베이스 구조를 빠르게 파악해 문제 해결에 도움 |
| 비즈니스 재설계 | 새로운 기능 추가나 리팩토링 시, 데이터 흐름 파악에 필수 |
비정형 데이터
비구조화 데이터를 말하며, 미리 정의된 데이터 모델이 없거나 미리 정의된 방식으로 정리되지 않은 정보
다음 예제의 서비스 요구 사항과 답을 기반으로 ERD를 작성하며 공부해볼까요? 참고로 정답 ERD의 테이블 필드, 타입은 생략했습니다.
요구 사항
• 영업사원은 0 ~ n명의 고객을 관리한다.
• 고객은 0 ~ n개의 주문을 넣을 수 있다.
• 주문에는 1 ~ n개의 상품이 들어간다.

요구 사항
• 선수들은 1명의 챔피언을 고를 수 있다.
• 챔피언은 한 개 이상의 스킬을 갖는다.
• 스킬은 한 개 이상의 특성을 갖는다.

릴레이션 간의 이상현상(중복, 삭제, 삽입 이상 등)을 해결하기 위해 테이블을 정제하는 과정
목표
| 유형 | 설명 |
|---|---|
| 삽입 이상 | 어떤 필드를 NULL 없이 넣기 어렵다 (ex. 유저 등급만 넣고 싶은데 주문정보도 필수인 경우) |
| 삭제 이상 | 데이터를 하나 지우면 다른 중요한 데이터도 함께 사라진다 |
| 갱신 이상 | 중복된 데이터를 여러 군데 수정해야 함 |
{C++, 자바} → 행 2개로 분리)| 유저ID | 수강과목 |
|---|---|
| a_01 | C++, 자바 |
1NF 변환 후
| 유저ID | 수강과목 |
|---|---|
| a_01 | C++ |
| a_01 | 자바 |
용어 설명 결정자 어떤 값을 결정짓는 컬럼 (A → B → A는 결정자) 함수 종속 어떤 컬럼이 다른 컬럼의 값을 결정지음 이행적 종속 A → B, B → C → A → C 관계 무손실 분해 데이터를 분해해도 정보가 손실되지 않음
참고: 북스터디 - 면접을 위한 CS 전공지식 노트 (Chapter 4-2)