이번 포스팅에서는 DB ERD에 대해 알아보자.
ERD 란?
Entity Relationship Diagram의 약어다.
*Entity : 실재, 독립체 등 / Relationship : 관계
Entity를 DB 내 하나의 테이블로 놓고 본다면
'DB 내 테이블 관계 다이어그램' 이라 이해할 수 있다.
가끔 ERD 다이어그램이라고 부르는 사람이 있는데,
다이어그램 x2 이기 때문에 부끄럽지 않도록 조심하자.
ERD 사용하면 뭐가 좋아요?
● 실제 DB를 구현하기 전, DB 설계의 이해를 높이기 위해 모델링할 수 있다.
● DB 구조를 한 눈에 알아보기 쉽도록 도움을 준다.
● 개발 시작 후에도, 구조화된 다이어그램을 보면서 수월한 작업을 할 수 있다.
ERD 표기 방법
이제 엔티티의 관계를 표기하는 방법을 알아보자.
✅ 식별 · 비식별 관계 정의
엔티티 사이에 연결 관계가 존재한다면 선을 이어줘야 하는데,
기본키를 기준으로 2가지로 구분한다.
● 식별 관계
부모 테이블의 기본키를 자식 테이블도 기본키로 사용하는 경우에 해당한다.
강한 종속 관계를 나타내며 실선으로 표기한다.
● 비식별 관계
부모 테이블의 기본키를 자식 테이블도 가지고 있지만,
이를 기본키로는 사용하지 않는 경우에 해당한다.
비교적 약한 종속 관계를 나타내며 점선으로 표기한다.
✅ 관계 형태 정의
위와 마찬가지로, 기본키를 기준으로 관계의 형태가 정의된다.
A · B 와 같이 2개의 엔티티가 있다고 가정하고,
4가지 예시를 들어보겠다.
① 1 : 1 관계
A는 B에서 하나의 자식만을 가진다.
② 1 : N 관계
A는 B에서 둘 이상의 자식을 가진다.
③ 1 : 1 (0) 관계
A는 B에서 하나 이하의 자식을 가질 수 있다.
④ 1 : N (0) 관계
A는 B에서 하나 이하 또는 하나 이상의 자식을 가질 수 있다.
위 ③ · ④번을 보면서 느꼈겠지만,
관계의 형태는 중복 표기할 수 있다.
기본적인 이해를 위해 4가지만 설명했을 뿐,
위에서 설명한 4가지 관계 말고도 더 많은 관계가 존재한다.
간단한 사용 예시
다음과 같이 3개의 테이블을 만들고 ERD를 표기해 보겠다.
Student(학생) · Hobby(취미) · Club(동아리)
위 학교에서는 학생들의 동아리 가입이 의무적이고,
1명의 학생이 1개의 동아리에만 가입할 수 있다고 가정한다.
● Student - Club
Student 테이블에서는 name을 기본키로 사용하고 있다.
Club 테이블에서도 name을 기본키로 사용한다.
두 테이블은 식별 관계에 해당하므로 실선으로 표기했다.
1명의 학생은 1개의 동아리에만 가입할 수 있으므로
1:1 관계 표시를 해주었다.
● Student - Hobby
Student 테이블에서는 name을 기본키로 사용하고 있다.
Hobby 테이블에서도 name을 기본키로 사용한다.
두 테이블은 식별 관계에 해당하므로 실선으로 표기했다.
1명의 학생은 취미가 있을 수도 있고 없을 수도 있고 여러 개일 수도 있다.
따라서 1:N(0) 관계 표시를 해주었다.
ERD는 어떻게 만들어요?
ERD만 검색해도 여러 플랫폼이 나온다.
본인은 그 중에서 ERDCloud 라는 플랫폼을 이용했다.
링크 남긴다.
ERDCloud
Draw ERD with your team members. All states are shared in real time. And it's FREE. Database modeling tool.
www.erdcloud.com
이번 포스팅에서는 데이터베이스 ERD에 대해 알아보았다.
DB 구조를 한 눈에 알아보기에 괜찮게 도움이 되었던 것 같다.

'Web (웹), Server (서버)' 카테고리의 다른 글
[Server] DataBase Transaction / 데이터베이스 트랜잭션 / 사용법 (0) | 2024.02.07 |
---|---|
[MySQL] Join을 사용해보자 (4) | 2024.01.17 |
[Web] HTML에 CSS 적용하기 - (2) / CSS 적용 안될 때 / CSS 적용 우선 순위 / 스타일 시트 우선 순위 / 선택자 우선 순위 / 페이지 강력 새로고침 (0) | 2024.01.16 |
[Web] HTML에 CSS 적용하기 - (1) / 스타일 시트 종류 / 선택자 지정하기 (2) | 2024.01.15 |
[Web] HTTP, HTTPS, HTTP2 에 대해 알아보자 (0) | 2023.05.20 |