ERD(Entity Relationship Diagram)
ERD(Entity Relationship Diagram)는 엔티티가 시스템 내에서 서로 어떻게 관련되어 있는지 보여주는 일종의 플로우차트로 엔티티와 엔티티 간의 관계를 그래픽으로 표현한 것이다.
그러면 관계나 다이어그램은 알 것 같은데 엔티티는 뭘까?
엔티티의 사전적인 의미는 저장되는 데이터를 나타내는 객체 또는 개념이다. 조금 쉽게 말해보자면 표현하고자 하는 대상을 의미한다고 생각하면 될 것 같다.
예를 들면 엔티티를 사람, 장소, 사물로 표현할 수 있다. 그리고 각 엔티티마다 속성이라는 것을 갖게 되는데 사람을 예로 들면 사람의 이름, 거주하는 거주지, 전화번호 등 그 사람을 표현할 수 있는 것을 속성이라고 한다.
그럼 다시 ERD에서 살펴보자면 식당에서 주문을 한다고 가정해 보자.
위의 그림을 통해 생각해 보면 사람과 식당이라는 엔티티가 존재하고 "주문하기"라는 관계가 형성된다. 그리고 사람이라는 엔티티에는 이름과 나이 등 속성이 있을 것이고, 식당에는 위치, 종류와 같은 속성이 있을 것이다.
이 처럼 내가 개발할 서비스가 실제로 어떤 엔티티가 있고 그에 대해서 어떤 관계가 형성되는지를 이해하기 쉽게 표현한 것이 바로 ERD이다.
ERD를 사용하는 이유
앞서 ERD에 대해서 살펴봤는데 그러면 왜 사용하는 것일까?
여러 가지 이유가 있겠지만 내가 생각하는 가장 큰 이유는 바로 ERD가 서비스에 대한 이해를 높여주기 때문이다.
항상 생각하는 부분이지만 개발이라는 부분은 상대방에게 말로 설명하기 참 어렵다.
ERD 개념에서 살펴봤던 주문 예시를 다시 적용해 보면 만약 말로 설명한다고 가정해 보자.
말로 설명한다면 "A라는 이름을 가지고 있는 20대 사람이 양식을 전문으로 하는 B라는 음식점에 치킨을 주문한다."
이렇게 말로 설명하면 머리에 다 담기지 못할뿐더러 까먹기 쉽고, 복잡한 시스템일수록 이해하기 어려워진다.
하지만 말로 설명했던 부분을 하나의 도식화된 그림으로 표현한다면 간결하고, 이해하기 더 편하고, 각 부분마다 명확해지는 이점이 생긴다.
여기까지는 내 생각이었고 조금 이론적인 측면에서 어떤 이유가 있는지 살펴보자.
- 데이터베이스 디자인
ERD를 구현하게 되는 상황은 실제 데이터베이스를 만들기 전에 먼저 논리적인 설계를 할 때 진행하게 된다.
ERD를 물리적인 데이터베이스를 높은 수준의 추상화를 통해서 데이터베이스를 시각화하고 설계하는 데 사용할 수 있다.
- 데이터베이스 문제 해결
ERD를 구현하면서 사전에 잠재적인 문제나 충돌이 발생할 것 같은 상황을 식별하여 사전 조치를 취할 수 있다.
아무래도 실제 데이터베이스 작업 도중에 문제가 발생하는 것은 상당히 리스크가 크다. ERD를 통해서 사전에 문제를 예방하는 것이 리스크를 줄이는데 많은 도움이 된다.
ERD의 구성 요소
이전까지 ERD의 개념을 살펴봤다면 이번에는 실제 ERD를 그리기 위해 어떤 구성 요소가 있는지 살펴보자.
개념에서도 살펴봤듯이 엔티티, 속성, 관계 이 3가지를 기억하면서 보자.
참고로 ERD를 그릴 때는 자연어의 품사에 따라 나눌 수 있으며 그것을 매핑하여 그릴 수 있다.
- 엔티티(Entity)
엔티티는 사람, 사물, 개념 또는 이벤트와 같이 어떤 데이터에 대한 정의를 저장한 것이 엔티티이다.
주로 직사각형으로 그리게 되고 자연어로는 일반 명사를 떠올리면 된다.
- 관계(Relationship)
관계는 엔티티 간의 연관된 방식이나 작용을 의미한다.
마름모로 그리게 되며 자연어로는 동사로 생각하면 된다.
엔티티 간의 관계를 표현해 주는 방법에는 3가지가 있다.
- 일 대 일 관계
엔티티의 단일 인스턴스가 다른 엔티티의 단일 인스턴스와 연관될 때를 일 대 일 관계라고 한다.
예를 들어, 한 사람은 운전면허증을 하나만 가질 수 있다.
- 일 대 다 관계
엔티티의 단일 인스턴스가 다른 엔티티의 두 개 이상의 인스턴스와 연관될 때를 일 대 다 관계라고 한다.
예를 들어, 고객은 여러 주문을 가질 수 있지만 주문은 한 고객에게만 속할 수 있다.
- 다 대 다 관계
엔티티의 두 개 이상의 인스턴스가 다른 엔티티의 두 개 이상의 인스턴스와 연관될 때를 다 대 다 관계라고 한다.
예를 들어, 학생은 많은 과정에 등록할 수 있으며 각 과정에는 많은 학생이 있을 수 있다.
관계를 그릴 때 필수적인지 혹은 선택적인지에 따라 구분할 수 있는데 필수적이면 점선으로, 선택적이면 실선으로 그린다.
- 속성(Attribute)
속성은 엔티티에 대한 속성이 있고, 관계에 대한 속성이 있다.
엔티티에 대한 속성은 형용사, 관계에 대한 속성은 부사로 표현한다.
속성에는 여러 종류가 있는데 위의 4가지로 살펴보면 단순 속성, 파생 속성, 복합 속성, 다중 속성이 있다.
단순 속성: 하위 부분으로 나눌 수 없는 속성으로 예를 들면 사람의 나이 또는 이름이 있다.
파생 속성: 값이 동적이고 다른 속성에서 파생된 속성을 뜻한다. 예를 들어, 사람의 나이를 들 수 있는데 사람의 나이는 시간이 지남에 따라 변하기 때문이다.
복합 속성: 다른 속성들의 조합인 속성을 복합 속성이라고 한다. 예를 들어, 주소라는 속성에는 나라, 시, 구 등으로 속성을 나눌 수 있다.
다중 속성: 동시에 여러 값을 가질 수 있는 속성으로 사람의 취미 등이 있다.
참고 자료
'CS > 데이터베이스' 카테고리의 다른 글
데이터베이스 - 고립화 수준과 이상 현상 (2) | 2024.08.05 |
---|---|
데이터베이스 - 동시성 제어 (0) | 2024.08.05 |
데이터베이스 - 트랜잭션 (0) | 2024.08.04 |
데이터베이스 - Key (0) | 2024.08.01 |
[DB] - 대규모 데이터 처리 (0) | 2024.06.12 |