IT 도서 리뷰/개발자가 되기 위해 꼭 알아야 하는 IT 용어

[PART3] 데이터베이스/자료구조 - TERMS 03

goldenkiwi-coder 2025. 2. 18. 18:23

[ TERMS 03 ]  ERD / UML

ERD와 UML의 차이를 나타내는 표 (출처 : https://pediaa.com/what-is-the-difference-between-uml-and-erd/)

1. ERD(Entity Relationship Diagram) / UML(Unified Modeling Language)의 정의

  ERD는 개체(Entity)들의 관계를 시각적으로 보기 편하게 해 놓은 것이다. 데이터베이스에서 테이블들의 관계를 도식화하여 보여준다.

 UML은 시각적으로 보여주는 설계 다이어그램이다. 시각적인 모델을 만들어서 서비스의 흐름, 실제 코드에 사용되는 객체들의 구조, 일부 로직을 처리하는 과정등을 보여준다.

 

2. ERD / UML은 어디서 접하게 될까?

  ERD나 UML은 개발할 때 설계도 역할을 하여 개발자들의 이해를 돕는 용도로 사용한다. ERD는 데이터베이스를 설계할 때 각 테이블의 관계를 도식화해서 보여준다. 데이터베이스 내의 테이블 간의 관계를 보기가 쉽고 실제 쿼리를 작성하기 전에 테이블 간의 관계를 파악할 수 있기 때문에 초기 테이블 설계와 테이블 수정이 용이하다. UML은 객체(클래스, 인터페이스 등)들의 관계나 개발 프로세스 과정을 시각적으로 보여 주어 개발자들끼리 시각적으로 의사소통 하기 때문에 편리하다.

 

3. ERD / UML 알아보기

>  ERD

erd의 다양한 표기법 (출처 : https://www.smartdraw.com/entity-relationship-diagram/)

 

  ERD의 표기 방식은 초기에 나온 Peter Chen 표기 방법, IE(Information Engineering, 정보공학) 표기 방식, Bachman 표기 방식이 있다. 자주 사용되는 IE 표기 방법을 알아보자면, IE 방식은 주로 ERD에서 사용하며 까마귀 발 모양으로 표기한다고 해서 'Crow Foot'이라고도 불린다.

ie 표기법 (출처 : https://www.omg.org/retail-depository/arts-odm-73/data_modeling_methodology_and_.htm)

 위의 그림은 1:1, 1:N과 같은 테이블의 관계를 표현하는 방법이다.

샘플 erd

 예를 들어 인터넷 쇼핑몰에서 판매자가 상품등록을 하지 않으면 0, 1개 이사으이 상품을 등록해서 팔면 n개 이기 때문에 판매자는 0~n개의 상품 개체를 가질 수 있다. 고유번호가 존재하는 상품은 1명의 판매자에게 관리되어 판매된다. 따라서 판매자와 상품은 1:0~n의 관계가 된다.

 

 

>  UML

 과거에는 개발자마다 모델링 방식이 달랐고 이는 개발에 혼란을 야기했다. 이에 따라 표준 모델링 방식인 UML이 탄생했다. 개발자들은 설계를 할때 UML을 기준으로 전체적인 갭라 흐름이나 객체들의 관계를 표현하여 서로 의사소통할 수 있다. UML은 용도에 따라 10가지 이상이 존재하며 클래스의 관계를 위주로 한 클래스 다이어그램, 특정 부분의 로직 과정을 설명하는 시퀀스 다이어그램 등이 있다.

 

  • UML 클래스 다이어그램

 각 객체들이 가진 메소드나 속성들을 파악할 때 사용한다. 클래스, 인터페이스 같은 객체들의 관계를 보기에 용이하다.

class diagram의 예시 (출처 : https://www.edrawmax.com/article/uml-class-diagram-explained.html)

 

 클래스 다이어그램은 클래스나 인터페이스들의 관계를 시각적으로 보여준다.

클래스 다이어그램에 기호설명(출처 : https://www.tutorialspoint.com/uml/uml_basic_notations.htm)

 클래스는 <<class>>를 사용하지 않고 객체명만 작성하면 되고 클래스 외에 나머지는 <<interface>>, <<abstract>>, <<enumerate>>처럼 스테레오 타입으로 표현한다.

 가운데 칸은 객체의 속성을 의미한다. 객체의 멤버변수가 가진 접근제어자, 필드, static, 변수명, 타입 등을 알수 있다. '접근 제어자 멤버 변수명:데이터 타입'순으로 작성된다. 접근 제어자는 좌측에 기호(+: public, - : private, # : protected, ~ : package)로 표현한다. 오른 쪽 공간은  ' 멤버 변수명:데이터 타입'으로 작성된다. 디폴트 값을 선언할 수도 있고 final은 ( readonly )를 사용하고 static은 밑줄을 그어 표현한다.

 다음 칸은 객체의 메소드를 표현하는 공간이다. 접근 제어자 사용 방식은 기호로 동일하고 '메소드 명 (매개변수 타입) :리턴 타입'과 같이 표현한다.

 

클래스 다이어그램에서 클래스 간의 관계를 나타내는 양식 이미지(출처 : https://creately.com/blog/software-teams/class-diagram-tutorial/)

 

 이제 클래스 객체들의 관계를 알려주는 화살표를 설명하겠다.

  • 직선 + 화살표는  클래스가 멤버 변수에 다른 클래스를 가지고 있을때 사용한다. 큰 클래스에서 사용되는 작은 클래스를 향해 화살표가 나간다.
  • 직선 + 비어 있는 화살표는 클래스가 서로 상속 관계일때 사용한다. 자식 클래스에서 부모클래스를 향해 화살표가 나간다.
  • 점선 + 비어 있는 화살표는 인터페이스와 구현체 관계일때 사용한다. 구현 클래스에서 인터페이스를 향해 화살표가 나간다.
  • 점선 + 화살표는 2개의 클래스가 직접적인 연관은 없지만, 클래스의 메소드에 다른 클래스를 매개변수로 넣거나 반환값으로 사용하는 등 클래스와 클래스가 각각 독립적일때 사용한다. 사용하는 클래스에서 반환값 또는 매개변수값에 해당하는 클래스를 향해 화살표가 나간다.
  • 비어 있는 마름모 + 직선은 멤버 변수에 잇는 객체를 클래스 외부에서 매개변수로 넣어 주어 생성한다. 이때 객체가 없어져도 다른 객체는 소멸되지 않는다. 작은 클래스에서 사용하는 큰 클래스를 향해 마름모가 나간다.
    • setCard(Card card){this.card = card}
  • 색칠된 마름모 + 직선은 멤버 변수에 잇는 객체를 클래스 내부에서 객체를 생성할 때 사용한다. 객체가 사라지면 같이 소멸된다.
    • power(){this.window = new Window()}

 

  • UML 시퀀스 다이어그램

카카오에서 제공하는 카카오 로그인 API 로직 시퀀스 다이어그램(출처 :https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api)

 일부 처리 과정에서 객체들 사이에 메시지나 데이터들이 어떻게 시간 순서대로 이동하는지 보여준다. 위의 이미지는 카카오 로그인 API 의 로직 과정을 시퀀스 다이어그램으로 표현한 것이다.

시퀀스 다이어그램 심볼 이미지 (출처 : https://www.conceptdraw.com/How-To-Guide/uml-design-elements-sequence)

시퀀스 다이어그램은 메시지 요청과 응답을 화살표로 표시한다. 객체를 네모로 표시하고 객체의 생명주기를 점선으로 표시한다. 그리고 작업이 진행되는 구간에 네모 박스로 작업이 진행 중이라는 것을 표시한다. 동기 요청은 꽉찬 화살표 모양으로 비동기 요청은 화살표 모양으로 표시된다.

 

4. ERD / UML을 사용하는 이유

  ERD, UML은 개발 초기에  설계나 구조를 시각적으로 보여 주는 데 매우 유용하다. 개발 초기에는 코드를 작성하지 않고 ERD, UML을 이용하면 효율적으로 의사소통할 수 있으며 의견이 맞지 않는 부분이나 개선점들을 고쳐 나갈 수 있다. 또한 새롭게 개발에 참여하는 사람이 있거나 유지 보수를 할 때 전체적인 개발 구조의 이해를 돕는 용도로도 사용된다.

 

5. ERD / UML 더 알아보기

>  함께 알아 두면 좋은 용어

  • UML 다이어그램 종류
  • 시퀀스 다이어그램 설계 방법