ERD란?

  • 데이터베이스에 저장된 객체를 개체(entity)와 관계(relationship)을 중심으로 작성한 다이어그램
  • 엔터티가 상호 작용하는 방식을 보여주는 개념적 데이터 모델 또는 스키마
  • 직사각형, 다이아몬드, 타원형 및 이들을 연결하는 선등 미리 약속된 기호들을 사용하여 각 엔터티의 속성과 관계를 나타낸다.

쉽게 표현하자면, 데이터베이스의 구조를 시각적으로 표현하는 도구이다.
이러한 모델 구조를 기반으로 API를 작성하면, 각 개체(DB의 테이블) 간의 관계를 효과적으로 표현하여 데이터베이스 설계를 돕는 역할을 한다.

이미지 출처 : Linkedin, Indeed Inspiring Infotech, What is an ER Diagram?

개체(Entity, 엔터티)

엔터티는 특정 사람, 자동차, 집, 직원 등 물리적 존재를 갖는 객체, 혹은 회사, 직업, 대학 과정 등 개념적 존재를 갖는 객체를 뜻한다. 사진, 그래픽, 비디오 등 미디어 파일일 수도 있다. 나타내고자 하는 대상을 엔터티라고 생각하면 쉽게 이해할 수 있다. 위의 그림에서 엔터티는 Books와 Authors이다.

각 엔터티는 DB에서 하나의 테이블이 된다.

약한 엔터티?

자신이 가진 속성에 의해서는 정의될 수 없고 다른 엔터티에 의존적으로 정의되는 엔터티이다.약한 엔터티는 그 자체로 고유한 식별자를 가지지 않고, 다른 엔터티에 속한 속성과 함께 사용하여 식별된다.

예를 들어 데이터 베이스와 컴퓨터 구조라는 수업이 있고, 수업의 분반이 있다고 하자. 각 분반은 1반이라는 특징만으로는 정의될 수 없고 데이터 베이스 수업의 1반, 컴퓨터 구조라는 수업의 1반이라는 방식으로 정의된다. 이때 분반 엔터티를 약한 엔터티라고 한다.

속성(Attribute)

각각의 엔터티는 개체 유형을 정의하는 속성(Attribute)를 가지고 있다. 속성은 엔터티의 특징이나 데이터를 나타내며, 각 속성은 엔터티의 특정 측면을 설명한다. 위의 그림에서 Books 엔터티의 속성은 Title, Author, Genre, ISBN이며, 각각은 Books에 대한 정보를 담고 있다.

 

  • 키 속성(Key Attribute)
    - 엔터티내에서 다른 객체들과 구별할 수 있게 해주는 고유한 값을 가진 속성, 기본 키, 외래 키 등이 될 수 있다.
    - 책 엔터티의 ISBN은 고유한 속성
  • 복합 속성(Composite Attribute)
    - 독립적인 속성들이 모여서 생성된 속성
    - 사랑시, 고백구, 행복동이라는 3개의 키가 모여 생성된 주소 속성
  • 다중값 속성(Multi-Valued Attribute)
    - 하나의 속성에 여러 개의 값을 가지는 속성
    - 영화 엘리멘탈의 장르 속성에는 애니메이션, 로맨틱 코미디, 성장, 가족, 드라마 등의 여러 속성이 들어갈 수 있다.
  • 파생 속성(Derived Attribute)
    - 다른 속성이 가지고 있는 값에서 파생되는 속성
    - 나이 속성은 태어난 날에서 파생되는 속성

관계(relationship)

엔터티가 서로 작용하거나 서로 연관되는 방식을 뜻하며, 두 엔터티 사이를 동사로 표현할 수 있다.

'학생이 강좌에 등록한다.'에서 "등록한다"는 것은 학생과 강좌의 관계를 나타낸다.

cardinality

관계형 데이터베이스에서 두 엔터티(테이블) 간의 연관성을 설명하는 개념으로 두 엔터티 또는 엔터티 집합 간의 관계에 대한 숫자로 관계를 정의한다. 주요 관계는 1:1(일대일, one to one), 1:N(일대다, one to many), N:M(다대다, many to many)의 관계가 있다.

  • one to one: 양쪽 원소 모두 하나의 원소와의 관계만 존재하는 경우, 한 명의 남자 한 명의 여자와 결혼하고 그 반대도 마찬가지 이다.
  • one to many: 하나의 원소가 하나 이상의 원소와의 관계가 존재하는 경우, 학교에 학생이 여러 명 있지만 학생은 하나의 학교만 다닌다.
  • many to many: 양쪽의 원소 모두 여러 반대쪽 여러 원소와 관계를 맺을 수 있다. 한 명의 의사는 여러 환자를 볼 수 있고 각 환자도 여러 의사를 볼 수 있다.

Optionality vs Mandatory(선택 vs 필수) 또는 Participation Constraint(참여제약, 부분 참여 vs 전체 참여)

엔터티 집합의 각 요소가 관계에 필수적으로 참여해야하는지 선택적으로 참여해도 되는지를 설정한다.

게시글 엔터티와 회원 엔터티에서 게시글은 "필수적"으로 작성한 유저 정보를 가져야 하지만(전체 참여) 회원 엔터티는 게시글을 작성하지 않아도 되므로 "선택적"으로 게시글 정보를 가질 수 있다(부분 참여).

ERD 표기법

여러 가지 표기법이 있지만 여기서는 까마귀 발 표기법(Crow's Foot Notation)을 알아보자

이미지 출처 Lucidchart, What is an Entity Relationship Diagram (ERD)?

참고 자료

GeeksforGeeks, Introduction of ER Model

Lucidchart,  What is an Entity Relationship Diagram (ERD)?

Linkedin, Indeed Inspiring Infotech, What is an ER Diagram?

Figma, What is an Entity Relationship Diagram (ERD)—and how to use it

'CS(computer Science) > CS 공부' 카테고리의 다른 글

TCP/IP와 작동원리  (0) 2023.12.15
OSI 7계층(OSI 7Layer) 모델 핵심 정리  (0) 2023.12.14
캐시 (Cache)  (0) 2023.11.26

+ Recent posts