ERD(Entity Relationship Diagram)
- ERD는 시스템 내부에서 각각의 엔티티들이 서로 어떤 관계를 맺고 있는지를 설명하는 플로우차트의 한 종류이다.
- ERD는 소프트웨어 엔지니어링 분야에서 관계형 데이터베이스를 디자인하고 디버깅하기 위해 자주 사용된다.
- 직사각형, 다이아몬드와 같은 정의된 심볼들을 사용해서 엔티티들, 엔티티들의 관계들, 엔티티들의 속성들의 상호연결성을 묘사한다.
ERD의 역할

개발자들은 분리된 모든 요소들이 서로 어떤 관계를 맺고 있고 어떻게 같이 동작하는지에 대한 시각적 요소를 필요로 한다. 이런 시각적 요소를 보여주기 위해, ERD를 구축한다.
ERD는 데이터베이스를 디자인하는 역할을 한다.
- 관계형 데이터베이스를 모델링하고 디자인하기 위해 ERD를 사용한다.
- 일반적으로 ERD 작업은 프로젝트를 위한 요구사항을 결정하는데 있어 첫 번째 작업이 된다.
- 특정 데이터베이스를 모델링하기 위해 나중에 ERD 작업을 하기도 한다.
또한 데이터베이스의 문제를 해결하는 역할을 한다.
- 로직이나 배포 차원에서 발생하는 문제를 찾고 해결하기 위해 기존의 데이터베이스를 분석하기 위해 ERD를 사용하기도 한다.
- 작업해놓은 다이어그램을 통해 무슨 문제가 발생하는지 알 수 있다.
ERD의 구성요소와 특징
ERD는 다음과 같은 요소들로 구성되어 있다.
- 엔티티(entities)
- 관계(relationships)
- 속성(attributes)
ERD는 관계들을 정의하는 카디널리티(cardinality)를 묘사하기도 한다.
엔티티(Entities)

- 데이터베이스의 테이블을 ERD에서는 엔티티라고 한다.
- 엔티티는 테이블의 칼럼을 나타내는 속성을 내부에 나열한다.
- 예를 들어, 쇼핑몰에서 물건을 사는 경우 다음과 같은 엔티티가 있을 수 있다.
- "고객" 엔티티
- "주문" 엔티티
- "물건" 엔티티
속성(Attributes)

- 데이터베이스의 테이블에서 하나의 칼럼을 ERD에서는 속성이라고 한다.
- 속성은 하나의 엔티티가 갖는 여러가지 특성을 말한다.
- 예를 들어, "고객" 엔티티는 다음과 같은 속성을 가질 수 있다.
- "고객 ID"
- "성"
- "이름"
- "주소"
- "휴대폰번호"
관계(Relationships)

- 관계는 각각의 엔티티들이 어떻게 상호작용하는지를 나타내는 것을 말한다.
- 사진을 보면 엔티티들을 연결한 선들을 볼 수 있는데, 이것이 엔티티들의 관계를 알려준다.
- 엔티티들 사이에 연결해놓은 선들을 통해 엔티티들이 어떤 관계를 맺고 있는지를 알 수 있다.

- 관계를 설명하기 위해, 다양한 종류의 카디널리티(Cardinality)를 사용한다.
ERD 툴
- Lucidchart
- Creately
- DBDiagram
- ERDPlus
- DrawSQL
- QuickDBD
- ER Draw Max
참고