본문 바로가기

ERD(Entity Relationship Diagram)

ERD(Entity Relationship Diagram) - 1단계 학습

 

  1. ERD(Entity Relationship Diagram)란 무엇이고, 어떤 목적을 위해 사용하는가?
  2. 엔티티(Entity), 속성(Attribute), 관계(Relationship)의 정의와 차이는 무엇인가?
  3. PK(Primary Key)와 FK(Foreign Key)는 각각 어떤 역할을 하고 어떻게 구분되는가?
  4. 1:1, 1:N, N:M 관계는 무엇이며, 어떻게 표현되는가?
  5. N:M 관계를 테이블로 풀어낼 때 어떤 설계가 필요한가?
  6. 정규화(1정규형, 2정규형, 3정규형, BCNF)는 각각 어떤 문제를 해결하는가?

 

데이터베이스를 설계할 때 가장 먼저 마주하게 되는 개념이 ERD(Entity Relationship Diagram, 개체 관계 다이어그램)이다.

ERD는 말 그대로 엔티티(Entity, 개체)와 엔티티 간의 관계(Relationship)를 시각적으로 표현한 다이어그램으로, 데이터베이스 구조를 한눈에 이해할 수 있도록 돕는 도구다. 이를 통해 개발자, 기획자, 디자이너 등 다양한 이해관계자들이 같은 그림을 보면서 시스템을 설계할 수 있다.

 

 

ERD 기호 및 표기법

ERD에는 엔티티, 속성, 관계라는 세 가지 기본 요소가 있음

 

엔티티 기호

엔티티는 사각형으로 표시되며 특정 정보를 저장하기 위한 객체

하나의 사각형은 일반적으로 '강한 에티티' 또는 '부모 엔티티'라고 하며, 다른 엔티티와 독립적이다. 이러한 엔티티에는 일반적으로 종속되는 '약한 엔티티'가 있다.

 

약한 개체는 자체 속성만으로 고유하게 식별될 수 없어, 강한 개체 또는 부모 개체에 종속된다. 이는 이중 직사각형으로 표시된다.

 

사각형 안에 다이아몬드 모양으로 표현되는 '연관 엔티티'가 있고, 이는 여러 엔티티 유형의 인스턴스를 연결하는 데 사용되며, 해당 인스턴스의 관계에 고유한 속성을 포함한다.

 

 

속성 기호

타원은 속성을 상징하며, 개체의 속성과 특징을 자세히 설명한다. 핵심 속성은 개체의 고유하고 구별되는 특징이다.

단일 타원은 '단순 속성'을 나타내고, 이중 타원은 두 개 이상이 값을 가질 수 있는 '다중값 속성'을 강조한다.

 

예를 들어, '학생'과 같은 엔티티는 '이름','수업'과 같은 속성을 가진다. '이름'운 단일 값 속성인 반면, '수업'은 학생이 여러 수업에 등록한 경우 다중 값 속성이 될 수 있다. 또한 '나이'는 '생년월일'에서 파생되는 것처럼 다른 데이터 요소에서 계산되는 '파생 속성'도 있다.

 

관계 기호

두 개체 간의 상호작용은 다이아몬드 기호로 표현된다.

이중다이아몬드의 경우, 앞에 엔티티에서 설명한 것과 같이 약한 개체와 부모 개체 사이에 존재하는 '약한 관계'를 나타낸다.

ERD의 기본 구성 요소

엔티티(Entity)

엔티티는 데이터베이스에서 관리하고자 하는 객체를 의미한다. 예를 들어 회원, 상품, 주문 같은 것이 엔티티가 될 수 있다.

각 엔티티는 여러 개의 속성을 가질 수 있다.

 

속성(Attribute)

속성은 엔티티가 가지는 구체적인 성질이다. 예를 들어 회원 엔티티라면 회원ID, 이름, 이메일 등이 속성에 해당한다. 속성 중에서도 엔티티를 고유하게 구분할 수 있는 것이 기본 키(Primary Key)다.

 

관계(Relationship)

관계는 엔티티와 엔티티가 서로 어떤 연관성을 가지는지를 나타낸다. 예를 들어 회원 – 주문 관계를 생각하면, “회원은 주문을 한다”라는 관계가 성립한다. 관계에는 1:1, 1:N, N:M 같은 형태가 존재한다.

 

 

PK와 FK의 역할

  • Primary Key (기본 키, PK)
    각 엔티티의 레코드를 고유하게 식별할 수 있는 속성이다. 예를 들어 회원의 회원ID는 각 회원을 유일하게 구분할 수 있으므로 PK가 된다.
  • Foreign Key (외래 키, FK)
    다른 엔티티의 PK를 참조하는 속성이다. 예를 들어 주문 테이블에는 회원ID가 포함될 수 있는데, 이는 회원 테이블의 PK를 참조하는 외래 키가 된다. 이를 통해 두 엔티티가 연결된다.

 

관계의 종류

  • 1:1 관계
    한 엔티티의 한 레코드가 다른 엔티티의 한 레코드와만 연결되는 경우. 예를 들어 “사용자 – 주민등록번호”는 1:1 관계이다.
  • 1:N 관계
    한 엔티티의 한 레코드가 다른 엔티티의 여러 레코드와 연결되는 경우. 예를 들어 “회원 – 주문” 관계는 한 회원이 여러 주문을 할 수 있으므로 1:N 관계가 된다.
  • N:M 관계
    한 엔티티의 여러 레코드가 다른 엔티티의 여러 레코드와 연결되는 경우. 예를 들어 “학생 – 수업” 관계에서 한 학생이 여러 수업을 들을 수 있고, 한 수업에 여러 학생이 참여할 수 있다.

 

 

N:M 관계를 테이블로 풀어내기

관계형 데이터베이스에서는 N:M 관계를 직접 표현할 수 없기 때문에 연결 테이블(매핑 테이블)을 만들어야 한다.
예를 들어 “학생 – 수업” 관계를 풀어내려면 수강 테이블을 새로 만들어 학생ID와 수업ID를 외래 키로 두고, 이들을 합쳐서 기본 키(복합 키)로 설정한다. 이렇게 하면 학생과 수업 간의 다대다 관계를 명확히 관리할 수 있다.

 

참조

 

정규화

데이터베이스 설계에서 정규화(Normalization)는 데이터의 중복을 줄이고, 이상 현상(Anomaly)을 방지하기 위한 과정이다. 여러 단계의 정규형이 존재하며, 각 단계는 특정한 문제를 해결한다.

  • 제1정규형(1NF)
    모든 속성이 원자값(더 이상 쪼갤 수 없는 값)만을 가지도록 설계한다. 예를 들어 주소를 시/구/동으로 나누어 저장하는 것.
  • 제2정규형(2NF)
    부분 함수 종속을 제거한다. 즉, 복합 키를 PK로 가지는 테이블에서 PK의 일부에만 종속되는 속성을 분리한다. 모든 컬럼이 오나전 함수 종속을 만족해야 한다.
  • 제3정규형(3NF)
    이행 함수 종속을 제거한다. 기본키를 제외한 속성들간의 이행 종속성 (Transitive Dependency)이 없어야 한다. 예를 들어 학생 테이블에 학과ID와 함께 학과이름까지 저장한다면, 학과이름은 사실 학과ID에 종속되므로 학과 테이블로 분리한다.
  • 보이스-코드 정규형(BCNF)
    제3정규형을 강화한 형태로, 모든 결정자가 후보 키가 되도록 테이블을 분해한다. 이는 복잡한 종속성을 가진 테이블에서 발생할 수 있는 예외적인 이상 현상을 해결한다.

참조

 

 

 

ERD는 데이터베이스 설계의 출발점이자 핵심 도구다. 엔티티, 속성, 관계를 정의하고 PK와 FK로 연결함으로써 데이터 구조를 체계적으로 표현할 수 있다. 관계의 종류를 구분하고, 특히 N:M 관계를 중간 테이블로 풀어내는 설계는 실무에서 자주 쓰이는 중요한 기법이다. 또한 정규화를 통해 데이터 중복과 이상 현상을 방지하면, 보다 안정적이고 유지보수하기 쉬운 데이터베이스를 구축할 수 있다.

 

 

전체글 참조