Today I Learned
부캠할동안 잊어버렸던 백엔드 기술을 복습하는 시간을 가져보려한다.
오늘은 ERD 데이터 모델링을 복습!

https://github.com/ChoonB/BlogPostSpring?tab=readme-ov-file
ERD 설계 방법
ERD (Entity Relationship Diagram)는 데이터베이스 구조를 시각적으로 표현하여 데이터 간의 관계를 쉽게 파악할 수 있도록 도와준다.
ERD?
ERD는 데이터베이스에서 엔티티(객체), 속성(특성), 그리고 관계(연관성)를 도식화한 다이어그램이다. 이를 통해 개발자, 분석가, 설계자들이 시스템의 데이터 구조를 직관적으로 이해하고 소통할 수 있다.
ERD 설계의 기본 구성 요소
엔티티 (Entity)
- 정의: 실제 세계에서 독립적으로 존재할 수 있는 사물이나 개념, 데이터베이스 내에서 저장되어야 하는 대상(사용자, 제품, 주문 등)
- 표현 방법: 사각형(box)으로 표현하며, 엔티티 이름은 단수형을 사용하는 것이 일반적
속성 (Attribute)
- 정의: 엔티티가 가지는 정보 또는 특성(사용자 엔티티의 이름, 이메일 등)
- 표현 방법: 엔티티 사각형 내부나 연결선으로 표시하며, 기본 키(primary key)와 같은 중요한 속성은 별도로 구분
- 예: 사용자 엔티티의 경우
UserID
, Name
, Email
등이 속성이 될 수 있다.
관계 (Relationship)
- 정의: 두 개 이상의 엔티티 사이의 연관성. 엔티티 간의 연결고리(사용자가 주문을 생성)
- 표현 방법: 엔티티 간 선(line)을 그려 표시하며, 관계의 이름은 동사형을 사용하여 표현
- 카디널리티: 각 관계에서 엔티티 간의 다중성을 나타내며, 1:1, 1:N, N:M 관계로 구분
ERD 설계 방법론
요구사항 분석
- 목적: 시스템이 해결해야 하는 문제와 요구되는 데이터, 비즈니스 로직 파악
- 활동:
- 도메인 전문가 및 이해관계자와의 회의
- 요구사항 문서 및 유스케이스 분석
- 데이터 흐름 및 프로세스 파악
개념적 설계 (Conceptual Design)
- 목적: 실제 구현 전, 시스템에 포함될 주요 엔티티와 그들 간의 관계 도출
- 활동:
- 도메인 모델링
- 주요 엔티티 및 관계 정의
- ERD의 초기 스케치 작성
논리적 설계 (Logical Design)
- 목적: 개념적 설계를 기반으로 세부적인 데이터 구조 정의
- 활동:
- 엔티티의 속성 및 데이터 타입 결정
- 기본 키, 외래 키 설정
- 정규화 과정을 통해 중복 데이터를 최소화
물리적 설계 (Physical Design)
- 목적: 실제 데이터베이스에 구현하기 위한 최적화된 스키마 작성
- 활동:
- 인덱스, 파티셔닝, 저장소 구조 결정
- 성능 최적화 및 데이터 무결성 보장
- DBMS 별 특성에 맞춘 구현
ERD 설계 시 고려 사항
정규화 (Normalization)
- 목적: 데이터 중복을 줄이고, 데이터 무결성을 보장하기 위한 과정
- 주의: 과도한 정규화는 성능 저하를 초래할 수 있으므로, 상황에 맞게 적절한 비정규화(denormalization) 전략도 고려해야 함
데이터 중복 최소화
- 데이터 중복은 저장 공간 낭비 및 데이터 불일치 문제를 야기할 수 있으므로, 엔티티 간 관계를 명확히 하고 필요한 경우 공통 속성을 별도의 엔티티로 분리
확장성 고려
- 시스템 확장 및 유지보수를 위해 ERD 설계 시 미래에 추가될 요구사항이나 변경 가능성을 염두에 두어 모듈화된 설계 지향
명명 규칙 및 표준화
- 일관성 있는 명명 규칙: 엔티티, 속성, 관계에 대해 일관성 있는 명명 규칙을 적용
- 표준화: 팀 내 또는 조직 내 데이터 모델링 표준을 준수하여 협업 시 혼란을 최소화