Entity Relationship Diagram
흔히 ER 다이어그램
이라고 불리며 ERD
라고 줄여 부르기도 한다.
영어 약자 그대로 '존재하고 있는 것(Entity)들의 관계(Relationship)을 나타낸 도표(Diagram)'이다.
여기서 말하는 존재하고 있는 것이란 데이터를 뜻하니 데이터들의 관계를 나타낸 도표인 셈이다.
먼저 ERD의 규칙은 다음과 같다.
A는 부모, B는 자식의 관계를 가진 ERD이다. 여기서 '~B로 구성되어 있다'
라는 말이 살짝 헷갈릴 수 있다.
이를 풀어 설명해주면 '~B를 포함하고 있다'
라고 이해하면 된다.
그리고 부모와 자식의 관계를 알아야 하는데 A 테이블의 기본키를 B 테이블이 가지고 있다면 A테이블이 부모 테이블
, B테이블이 자식 테이블
을 뜻한다.
또한 그림에는 없지만 점선과 실선으로 관계를 구분하는데 실선
은 부모 테이블의 기본키를 자식 테이블이 가지고 있으며 이를 기본키로 사용하는 경우이고, 점선
은 부모 테이블의 기본키를 자식테이블이 가지고 있지만 이를 기본키로 사용하지 않을 때 사용한다.
위의 학생 테이블과 수강내역 테이블과의 관계를 나타낸 ERD이다.
먼저 부모 테이블과 자식 테이블이 누구인지 알아내야 하는데 수강내역 테이블이 학생 테이블의 기본키를 외래키로 가지고 있으니 수강내역 테이블이 자식 테이블, 학생 테이블이 부모 테이블임을 알 수 있다.
다음으로 테이블 간의 관계를 보면 학생 테이블 쪽의
는 1을 뜻하기 때문에 '하나의 학생', 수강내역 테이블 쪽의
는 0~N 을 뜻하기 때문에 '0~N 개의 수강내역'을 뜻한다.
이는 학생의 입장에서는 '하나의 학생은 0~N 개의 수강내역을 가진다', 수강내역의 입장에서는 '0~N 개의 수강내역은 하나의 학생에게 포함되어 진다'라는 해석이 가능하다.
그리고 수강내역 테이블에서 학생 테이블의 기본키를 자신도 기본키로 사용하기 때문에 실선으로 표현되어 있음을 알 수 있다.
이러한 모든걸 유추해 이 ERD를 해석해 보자면
- 부모 테이블은 학생 테이블이다.
- 자식 테이블은 수강내역 테이블이다.
- 부모 테이블의 PK를 자식 테이블에서 PK로 사용하고 있다.
- 학생 한 명은 0~N 개의 수강내역을 가진다.
- 수강내역은 하나의 학생을 가진다.
- 수강내역 테이블은 학생 테이블의 PK인
학생ID
를 FK로 가진다.
- 부모 테이블은 부서 테이블이다.
- 자식 테이블은 사원 테이블이다.
- 자식 테이블이 부모 테이블의 PK를 가지고 있지만 이를 PK로 사용하지는 않는다.
- 하나의 부서는 0~N 명의 사원을 가질 수 있다.
- 사원 테이블은 부서 테이블의 PK인
부서번호
를 FK로 가진다.