Server/Spring Boot

[Spring Boot] ERD (Entity Relationship Diagram) 란?

Nellie29 2023. 10. 15. 22:06


1️⃣ ERD (Entity Relationship Diagram) 란?

  • 'Entity 개체'와 'Relationship 관계'를 중점적으로 표시하는 데이터베이스 구조를 한 눈에 알아보기 위해 그려놓는 다이어그램
  • ERD는 실체(Entity), 속성(Attribute), 관계(Relationship)로 구성

💚 Entity

  • Entity는 관리하고자 하는 정보의 실체이며, 사람, 객체 혹은 개념
  • ERD에서는 개체를 "사각형"으로 표기한다
  • 데이터베이스의 테이블이 엔티티로 표현됨

💚 Attribute

  • 개체가 가지고 있는 속성
  • Entity를 구성하고 있는 구성 요소
  • ERD에서는 속성을 "원"으로 표기한다.
  • 데이터베이스의 테이블의 각 필드(컬럼)들이 엔티티 속성임

💚 Relationship

  • Entity와 Entity간의 관계를 나타냄
  • 1:1, 1:다수, 다수:다수의 관계 존재


2️⃣ ERD 작성법

💚 학생 Entity와 Entity 속성 (학번, 이름...)

💚 Entity 도메인

  • 도메인은 속성의 값, 타입, 제약사항 등 값의 범위를 표현 (생략 가능)

  • 엔티티는 저장하는 데이터 정보 주제에 따라 종류가 다양하며, 이를 잘 구분해 주어야 함
구 분 내 용
유형 엔티티 물리적인 형태
(예 : 고객, 상품, 거래처, 학생, 교수 등)
무형 엔티티 물리적인 형태가 없고 개념적으로만 존재하는 엔티티
(예 : 인터넷 장바구니, 부서 조직 등)
문서 엔티티 업무 절차상에서 사용되는 문서나 장부, 전표에 대한 엔티티
(거래명세서, 주문서 등)
이력 엔티티 업무상 반복적으로 이루어지는 행위나 사건의 내용을 일자별, 시간별로 저장하기 위한 엔티티
( 예 : 입고 이력, 출고 이력, 구매 이력 등)
코드 엔티티 무형 엔티티의 일종으로 각종 코드를 관리하기 위한 엔티티
(예 : 국가코드, 각종 분류 코드)

💚 ERD 키와 제약 조건 표기법

주 식별자 (PK)

  • 데이터베이스 테이블의 Primary Key를 표현
  • 중복이 없고 NULL 값이 없는 유일한 값에 지정하는 식별자
  • 아래 그림과 같이 ◆ 다이아몬드로 표현하기도 하고 아니면 열쇠로도 표현하기도 한다.
  • 그리고 주 식별자는 유일한 속성이므로 다른 속성과의 명확한 구분을 위해 구분선을 두기도 한다.

  • NOT NULL
    • 해당 속성에 들어갈 값에 Null 을 비허용한다면, N 혹은 NN을 적는다.
    • 만일 Null 허용한다면 N을 적지 않는다.

외래 식별자 (FK)

  • 데이터베이스 테이블의 Foreign Key를 표현
  • 외래 식별자 역시 key의 일종이라 ERD 엔티티에도 열쇠 아이콘으로 표시한다. (프로그램에 따라 다를 수 있다)
  • 외래 식별자를 표시할 때에는 선을 이어주는데 개체와 관계를 따져 표시한다. 

💚 ERD Entity 관계 표기법

  • 엔티티끼리 관계가 있는 경우 선을 이어 관계를 맺어야 함
  • 부모의 키를 자식에서 PK로 사용하는지 일반 속성으로 사용하지에 따라서 실선과 점선의 표기가 나뉘어짐

실선: 강한 관계 (식별자 관계)

  • 부모 자식 관계에서 자식이 부모의 주 식별자를 외래 식별자로 참조하여 자신의 주 식별자로 설정
  • 반드시 부모엔터티 종속되어 있어야 함
  • 자식 주 식별자 구성에 부모 주 식별자 포함 필요
  • 상속받은 주 식별자 속성을 타 엔터티에 이전 필요
  • 아래 그림에선 자식 엔티티(학생별 취미)가 부모 엔티티(학생)의 학번을 자신의 주 식별자로 설정

점선: 약한 관계 (비식별자 관계)

  • 부모 자식 관계에서 자식이 부모의 주 식별자를 외래 식별자로 참조해서 일반 속성으로 사용.
  • 약한 종속관계
  • 자식 주 식별자 구성을 독립적으로 구성
  • 자식 주 식별자 구성에 부모 주 식별자 부분 필요
  • 상속받은 주 식별자 속성을 타 엔터티에 차단 필요
  • 부모쪽의 관계참여가 선택관계
  • 아래 그림에선 자식 엔티티(사원정보)가 부모 엔티티(부서정보)의 부서코드를 일반 속성으로 두었다.

💚 ERD 관계의 카디널리티

  • One to one : 1 대 1 대응 (1:1 관계)
    • ex. 학생 1명(학번, 이름...) 과 그 학생의 신체 정보 (키, 몸무게...)
  • One to many : 1 대 다 대응 (1:N 관계)
    • ex. 학생 1명 (학번, 이름...) 과 그 학생의 여러개의 취미 (낚시, 등산...)
  • Many to many : 다 대 다 대응 (M:N 관계)
    • ex. 제품과 제조업체
    • but 데이터 모델링에서는 M:N 관계를 완성되지 않은 모델로 간주
      -> 두 엔티티의 관계를 1:N, N:1 로 조정하는 작업이 필요
      • 두 엔티티의 관련성을 표현하기 위해, 중간에 또 다른 엔티티를 필요
        이 중간 엔티티(업체별 제품)가 두 엔티티의 공유 속성 역할을 함

💚 ERD 관계의 참여도

  • 관계선 각 측의 끝자락에 기호를 표시한다.
  • '|' 표시가 있는 곳은 반드시 있어야 하는 개체. (필수)
    • 학번 21003 학생의 취미가 낚시 라는 정보가 있다면, 21003학번의 학생의 정보가 학생 엔티티에 반드시 존재해야 한다
    • 즉, 학생의 취미 테이블은 모두 학생 테이블에 대응됨
    • 어느 한 쪽이 존재하면 다른 쪽도 반드시 존재해야 하는 관계
  • 'O' 표시가 있다면 없어도 되는 개체. (선택)
    • 취미를 가진 학생이 있을수도 있고, 없을 수도 있음
    • 대응되는 인스턴스가 있을 수도 있고 없을 수도 있는 관계

3️⃣ ERD 엔티티 관계 표현 총정리

 

1 : 1 관계 : 부모(SHOP)는 하나의 자식(FOOD)이 있다.

 

1 : N 관계 : 부모(SHOP)는 하나 이상의 자식(FOOD)이 있다.

 

M : N 관계 : 하나 이상의 부모와 하나 이상의 자식이 있다.

 

1 : 1(o) 관계 : 부모는 하나의 자식이 있을 수도 있다. (없을 수도 있다)

 

1 : N(o) 관계 : 부모는 여러개의 자식이 있을 수도 있다. (없을 수도 있다)


💻 Reference

 

📋 데이터 모델링 개념 & ERD 다이어그램 작성 💯 총정리

데이터 모델링 이란? 데이터 모델링이란 정보시스템 구축의 대상이 되는 업무 내용을 분석하여 이해하고 약속된 표기법에 의해 표현하는걸 의미한다. 그리고 이렇게 분석된 모델을 가지고 실제

inpa.tistory.com

 

DB_RDBMS - 5. ER다이어그램(ERD), 개념적 설계.

개체와 속성을 추출하고, 관계까지 추출했다면, 이제 "ERD"로 작성해보자! > 1. ERD (Entity Relationship Diagram)란? >ERD는 데이터베이스 구조를 한 눈에 알아보기 위해 그려놓는 다이어그램이다. ERD는 단

velog.io