DATABASE

[ERD]란 무엇인가?

Haksae 2022. 2. 27. 23:57
지난 글에서 데이터 모델링에 대한 글을 올렸었다.
오늘은 데이터 모델링의 3단계에서 두 번째 단계인  논리적 데이터 모델링에서 사용되는 ERD에 대해서 정리해보려 합니다.

https://haksae.tistory.com/143?category=958700 

 

[Data Modeling]

1. 데이터 모델링 1.1 모델링 일반적으로 "모델링"이란 세상에 존재하는 다양한 사물이나 현상들을 일정한 표기법에 의해 나타내는 것을 의미한다. 모델링의 대표적인 3가지 특징 추상화(모형화,

haksae.tistory.com

 

1.  데이터 모델링 절차

위의 내용에서 언급했던 데이터 모델링 3단게에 근거하여, 데이터 모델링 절차 정리를 간단히 정리하면 다음과 같다.

1) 업무 파악 단계 : 화면에 어떠한 것들이 필요한지에 대한 개념 잡기
2) 개념적 데이터 모델링 : 화면에 표현되는 데이터들을 파악해서 관계 설정

3) 논리적 데이터 모델링 : 개념적 데이터 모델링 한 것을 표로 만들기
4) 물리적 데이터 모델링 : 모든 절차를 수행하고, 실제 데이터 베이스를 만드는 것

 

2. ERD란?

ERD는 Entity Relationship Diagram의 약자로, 데이터베이스 구조를 한 눈에 알아보기 위해 그려놓는 다이어그램을 뜻한다.
ERD는 단어에서 의미하는 그대로 'Entity'와 'Relationship'을 중점적으로 표시하는 다이어그램이다.

1) 언제 ERD를 작성하는가?

  • ERD는 위의 단계에서 3번째, 논리적 데이터 모델링 만드는 단계에서 작성하게 됩니다.
  • 즉 개념적 데이터 모델링을 한 것을 보기 좋게 정리해준 것이라 할 수 있겠습니다. (아래 예시와 같이)

ERD 예시

2) ERD를 작성하면 어떤 장점이 있을까?

  • 데이터베이스 구축 용이
    • 데이터베이스에는 다양한 테이블들이 존재하기 때문에 미리 계획하고 시작하지 않으면, 길을 잃기 마련이다.
    • 데이터베이스를 만들기 전에 미리 ERD를 작성하면 실행착오를 줄일 수 있다.
  • 테이블 간의 관계 파악 용이
    • 데이터베이스는 다양한 테이블들이 존재하고, 규모가 커지다보면 테이블 간의 관계를 파악하기 어려워진다.
    • ERD는 테이블 간의 관계를 가독성 있게 나타내줌으로, ERD만 보고도 관계 파악과 설정의 큰 도움을 받을 수 있다.
  • 디버깅 용이
    • 데이터베이스를 사용하다보면 복잡한 쿼리문을 작성할게 생긴다.
    • 구조화된 다이어그램은 각 Entity의 속성을 바로 보여주기 때문에 이러한 상황에 큰 도움을 줄 수 있다.
  • 데이터의 우선순위 파악 용이
    • 데이터를 수집하거나 구축할 때, ERD 데이터의 요구사항이나 흐름 파악에 용이하다.
    • 데이터의 다양한 특징이 한 눈에 보이기에 요구사항에 맞추어 개발하기 용이하다.

 

3. ERD 표기법

ERD 표기법은 하나로 정해져있지 않지만, 가장 많이 사용되는 IE 표기법을 설명하겠다.

 

1) Entity

  • Entity는 정의 가능한 사물 또는 개념을 의미한다.
  • 사람이나 객체 혹은 개념이나 이벤트 등을 Entity로 둘 수 있다.
  • 데이터베이스를 설계할 때, 테이블이 Entity로 정의될 수 있다.

 

2) Entity Attribute

  • Attribute는 개체가 갖고 있는 속성이다.
  • 각각의 Entity에는 속성들이 포함되어 있다.
  • 예를 들어 사람이라면, 나이, 이름, 생년월일 등이 속성에 포함될 수 있다.
  • 이러한 속성들은 데이터 타입으로 명시되어야한다. (RDBMS가 지원하는 타입에 맞추어)

3) Constraint : PK & NN

  • ERD에는 각 속성마다 제약조건을 표시해주어야한다. 제약 조건 중에 먼저 PK와 NN을 다루겠다.

1) PK

  • PK 는 Primary Key로서 해당 entity의 고유한 속성 값을 뜻한다.
  • 대부분 아래 그림과 같이 열쇠의 그림으로 표시된다.

2) Not Null

  • Null을 허용하지 않으면 Not Null을 표기한다.
  • 보통 아래와 같이 N으로 표시된다.

4. Constraint: FK

  • 위에서 ERD를 표시할 때는 두 가지, 즉 개체와 관계를 표시한다고 하였다.
  • 여기서 관계가 바로 FK(Foreign Key)이다.
  • 이는 ERD에서 가장 까다롭운 핵심 내용이기에 번호를 부여하여 따로 설명하겠다.

1) ERD 관계선, 기호

(1) 관계선의 종류

 

  • 실선(Identifying): 식별관계
    • 부모테이블의 PK가 자식테이블의 FK/PK가 되는 경우
    • 부모가 있어야 자식이 생기는 경우
  • 점선(Non-Identifying): 비식별관계
    • 부모테이블의 PK가 자식테이블의 일반속성이 되는 경우
    • 부모가 없어도 자식이 생기는 경우

 

(2) 기호의 종류 (도형 혹은 식별자)

  • |: 1개 / 실선은(dash) ‘1'을 나타낸다.
  • ∈: 여러개 / 까마귀 발(crow’s foot or Many)은 ‘다수' 혹은 '그 이상'을 나타낸다.
  • ○: 0개 / 고리(ring or Optional)은 ‘0'을 나타낸다.

  • Type1(실선과 실선): 정확히 1 (하나의 A는 하나의 B로 이어져 있다.)
  • Type2(까마귀발): 여러개 (하나의 A는 여러개의 B로 구성되어 있다.)
  • Type3(실선과 까마귀발): 1개 이상 (하나의 A는 하나 이상의 B로 구성되어 있다.)
  • Type4(고리와 실선): 0 혹은 1 (하나의 A는 하나 이하의 B로 구성되어 있다.)
  • Type5(고리와 까마귀발): 0개 이상 (하나의 A는 0또는 하나 이상의 B로 구성되 있다.)

3) Cardinality

  • Cardinality는 한 개체에서 발생할 수 있는 발생 횟수를 정의하며, 다른 개체에서 발생할 수 있는 발생횟수와 연관된다.
  • 이는 1:1, 1:N, M:N 관계로 나타난다.

a) One-to-One Cardinality

1:1 관계에서는 아래와 같이 표기된다.

b) Many-to-Many Cardinality

N:M 관계에서는 아래와 같이 표기된다.

 

 

ERD를 만드는 플랫폼이 많지만, 우선 하나만 소개한다.

https://www.erdcloud.com/

 

ERDCloud

Draw ERD with your team members. All states are shared in real time. And it's FREE. Database modeling tool.

www.erdcloud.com

 

참고자료

https://gngsn.tistory.com/29?category=851218

https://inpa.tistory.com/entry/DB-%F0%9F%93%9A-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%AA%A8%EB%8D%B8%EB%A7%81-1N-%EA%B4%80%EA%B3%84-%F0%9F%93%88-ERD-%EB%8B%A4%EC%9D%B4%EC%96%B4%EA%B7%B8%EB%9E%A8

https://eyecandyzero.tistory.com/246

https://gngsn.tistory.com/48