ERD는 Entity-Relationship Diagram(엔터티-관계 다이어그램)의 줄임말이야. 이건 네 데이터베이스 구조를 시각적으로 보여주는 거고, 엔터티(테이블)들이 어떻게 서로 연결되는지 한눈에 볼 수 있어.
ERD를 데이터베이스 지하철 노선도라고 생각해봐. 역이 테이블이고, 역 사이를 잇는 선이 관계야. 이 노선도를 보면 역(테이블) 사이를 어떻게 이동하는지(테이블이 어떻게 연결되는지) 쉽게 이해할 수 있지.
ERD는 이런 걸로 구성돼:
- 엔터티: "학생", "강의", "교수" 같은 객체나 테이블이야.
- 속성:
ID,이름,성같은 테이블의 컬럼이야. - 관계: 테이블 사이를 잇는 선으로, 예를 들어 한 학생이 여러 강의에 등록될 수 있어.
ERD를 이용하면 데이터베이스를 설계할 수도 있고, 동료나 상사한테 구조를 설명할 수도 있어. 개발자라면 꼭 써야 하는 강력한 도구지!
ERD의 기본 요소
- 엔터티
엔터티는 데이터베이스의 축소판이야. 각각의 엔터티는 네 시스템에서 관리하고 싶은 실제 객체나 개념에 해당해. 예를 들면:
- "학생" 테이블.
- "강의" 테이블.
- "대출" 테이블(도서관 시스템에서).
예시:
+---------------+
| 학생 |
+---------------+
| ID |
| 이름 |
| 성 |
| 생년월일 |
+---------------+
- 속성 속성은 엔터티의 개별 특성이나 성질이야. 데이터베이스 테이블의 컬럼으로 표현되지. 예를 들어:
- "학생" 테이블의 경우
ID,이름,성이 될 수 있어. - "강의" 테이블은
강의 ID,강의명이야.
ERD에서는 보통 엔터티를 나타내는 사각형 안에 속성을 적어.
엔터티 간의 관계
관계는 두 엔터티가 어떻게 상호작용하는지 보여줘. 기본적인 관계 타입을 다시 정리해볼게:
- 일대일(1:1): 예를 들어, 각 학생은 하나의 고유한 학생증을 가져.
- 일대다(1:N): 한 교수는 여러 강의를 맡을 수 있어.
- 다대다(M:N): 여러 학생이 여러 강의에 등록될 수 있어.
"일대다" 관계 예시:
학생 (1) <----- 등록됨 -----> (N) 강의
데이터베이스에서 관계를 구현할 때는 보통 외래 키를 써.
ERD를 어떻게 만들까?
ERD를 만드는 과정을 단계별로 살펴보고, 도서관 예시도 같이 볼게.
1단계: 엔터티 정하기
시스템을 주요 객체로 나누는 게 첫 번째야. 예를 들어, 도서관 시스템이라면:
- "책".
- "회원".
- "대출".
예시:
+-------------+ +--------------+ +------------+
| 책 | | 회원 | | 대출 |
+-------------+ +--------------+ +------------+
| ID | | ID | | ID |
| 제목 | | 이름 | | 회원 |
| 저자 | | 성 | | 책 |
| ISBN | | 생년월일 | | 대출일 |
+-------------+ +--------------+ +------------+
2단계: 속성 추가
각 엔터티에 핵심 속성을 넣어야 해. 예를 들어:
- "책" 테이블에는
ID(기본 키),제목,저자,ISBN이 들어가야 해. - "회원" 테이블은
ID,이름,성이야.
3단계: 관계 설정
이제 엔터티들 사이의 관계를 추가해:
- "대출"은 "책"과 연결돼(한 책이 여러 번 대출될 수 있음).
- "대출"은 "회원"과도 연결돼(한 회원이 여러 책을 빌릴 수 있음).
4단계: 시각화
다이어그램을 그릴 때는 이런 툴을 써봐:
- draw.io
- dbdiagram.io
- Lucidchart
- Microsoft Visio
다이어그램은 이렇게 생겼을 거야:
[회원] ----(1:N)---- [대출] ----(N:1)---- [책]
각 관계마다 데이터 타입이랑 설명도 추가해줘. 예를 들어:
- 회원 ID는 "대출"에서 "회원" 테이블의 기본 키랑 연결돼.
예시: 인터넷 쇼핑몰 ERD
인터넷 쇼핑몰은 이런 논리 구조가 필요해:
- 사용자(가입한 고객).
- 상품(판매하는 물건).
- 주문.
1단계: 엔터티
- 사용자:
사용자 ID,이름,Email. - 상품:
상품 ID,상품명,가격. - 주문:
주문 ID,사용자 ID,주문일.
2단계: 관계 설정
- 한 사용자가 여러 주문을 할 수 있어(1:N).
- 한 주문에 여러 상품이 들어갈 수 있어(M:N).
전체 ERD 다이어그램:
[사용자] ----(1:N)---- [주문] ----(N:M)---- [상품]
다대다 관계를 구현하려면 중간 테이블을 추가해야 해:
- 주문 상세:
주문 ID,상품 ID,수량.
ERD 만들기 팁
먼저 데이터베이스에서 뭘 보고 싶은지 생각해봐. 모든 건 네 도메인 이해에서 시작이야.
정말 중요한 속성과 엔터티만 포함해. 너무 세세하면 오히려 헷갈릴 수 있어.
모든 관계가 논리적으로 맞는지 꼭 확인해. 이상하면 다시 생각해봐.
다이어그램을 시각화해주는 툴을 쓰면 시간과 노력을 아낄 수 있어.
GO TO FULL VERSION