"데이터베이스 설계의 시작은 ERD다."
ERD란 무엇인가?
ERD(Entity-Relationship Diagram)는
데이터베이스를 설계할 때, 데이터 간의 관계를 시각화하는 다이어그램입니다.
- Entity(엔티티): 독립적으로 존재할 수 있는 데이터 객체 (ex. 사용자, 주문)
- Relationship(관계): 엔티티 간의 연결 (ex. 사용자가 주문한다)
- Diagram(다이어그램): 이것을 그림으로 표현한 것
쉽게 말하면,
"데이터베이스에 어떤 테이블이 있고, 테이블 간에 어떤 관계가 있는지 그림으로 그린 것"입니다.
ERD가 왜 필요한가?
| 필요성 | 설명 |
| 데이터베이스 구조 설계 | 테이블 구조를 논리적으로 설계 |
| 팀원 간 소통 | 개발자, 기획자, 디자이너 모두 이해할 수 있게 |
| 시스템 확장성 고려 | 미래에 데이터가 확장될 것을 고려해서 설계 |
| 오류 사전 방지 | 설계 단계에서 관계 오류나 중복을 발견 |
특히, 협업하는 프로젝트에서는 ERD가 사실상 필수입니다.
ERD의 구성 요소
ERD는 기본적으로 3가지 요소로 이루어져 있습니다.
Entity (엔티티)
- 데이터베이스의 테이블에 해당합니다.
- 명사(Noun)로 표현합니다.
(ex. User, Order, Product)
엔티티에는 속성(Attribute)이 포함됩니다.
| 예시 | 속성 |
| User | id, name, email, password |
| Order | id, user_id, total_price |
Attribute (속성)
- 테이블의 컬럼을 의미합니다.
- 엔티티의 세부 정보입니다.
- Primary Key (기본키), Foreign Key (외래키), Unique, Not Null 같은 제약조건을 가질 수 있습니다.
Relationship (관계)
- 두 엔티티 간의 연결을 표현합니다.
- 관계에는 Cardinality(카디널리티)가 매우 중요합니다.
| 관계 종류 | 설명 | 예시 |
| 1:1 (일대일) | 한 유저는 하나의 프로필만 가짐 | User - Profile |
| 1:N (일대다) | 한 유저는 여러 주문을 할 수 있음 | User - Order |
| N:M (다대다) | 여러 학생이 여러 수업을 수강할 수 있음 | Student - Class |
ERD 작성 방법
요구사항 분석
- 시스템에 필요한 데이터가 무엇인지 파악합니다.
엔티티 도출
- 데이터베이스에 저장할 주요 객체(명사)를 정리합니다.
속성 정의
- 각 엔티티에 필요한 속성을 정리합니다.
- PK (Primary Key)를 반드시 지정합니다.
관계 정의
- 엔티티 간의 연결을 설정합니다.
- 관계를 1:1, 1:N, N:M 중에서 구분합니다.
제약 조건 설정
- Not Null, Unique, Foreign Key 등 필요한 제약 조건을 설정합니다.
ERD 작성 시 주의할 점
- 중복 데이터를 최대한 피해야 합니다. (정규화)
- 외래키(FK)를 통해 관계를 정확히 맺어야 합니다.
- 카디널리티(관계 수)를 잘못 설정하면 나중에 큰 문제가 됩니다.
- 필요한 경우에는 의도적으로 비정규화(Denormalization)를 고려합니다.
(성능이 매우 중요한 경우)
ERD 예시
예시: 쇼핑몰 데이터베이스 ERD
[User]
- id (PK)
- name
- email
- password
[Product]
- id (PK)
- name
- price
- stock
[Order]
- id (PK)
- user_id (FK → User.id)
- order_date
- total_price
[OrderItem]
- id (PK)
- order_id (FK → Order.id)
- product_id (FK → Product.id)
- quantity
- price_at_purchase
관계 설명
- User 1 : N Order
- Order 1 : N OrderItem
- Product 1 : N OrderItem
즉,
- 한 사용자는 여러 주문을 할 수 있고,
- 하나의 주문은 여러 제품을 포함할 수 있으며,
- 각각의 제품은 여러 주문에 등장할 수 있습니다.
마무리 요약
| 항목 | 요약 |
| ERD란 | 엔티티(Entity)와 관계(Relationship)를 시각적으로 나타낸 것 |
| 왜 필요한가 | 데이터베이스 구조 설계, 팀 소통, 오류 예방 |
| 핵심 요소 | Entity, Attribute, Relationship |
| 작성 요령 | 요구사항 분석 → 엔티티 도출 → 속성 정의 → 관계 정의 |
| 주의점 | 중복 최소화, 정확한 관계 설정, 필요한 경우 비정규화 고려 |
728x90